Advanced Network Inference Techniques Based on Network Protocol Stack Information Leaks
Roya Ensafi October 2013
Advanced Network Inference Techniques Based on Network Protocol - - PowerPoint PPT Presentation
Advanced Network Inference Techniques Based on Network Protocol Stack Information Leaks Roya Ensafi October 2013 Still A Peach Attacker Still A Peach Attacker Zombie Victim Attacker What if we could? Scan a firewall port or a hidden
Roya Ensafi October 2013
Attacker Zombie Victim
Attacker Zombie Victim
➔Global IPID variable ➔ Global counter that incremented by one any time
packet is sent out.
➔ Unique numbers used for fragmentations. ➔ At anytime, it shows number of packets has sent to other
destinations.
➔RST rate limiting counter ➔ A machine limits the number of RST packets that it will send in a
given time period.
➔SYN backlog/cache ➔ A cache for holding halfopen TCP connections ➔ Waiting for proper ACK or RST to drop it
Host1 Host 2
SYN cache = 0 RST counter = 1 SYN cache = 0 RST counter = 1
Port is open Port is open
Host1 Host 2
SYN cache = 1 SYN Packet RST counter = 1 SYN cache = 0 RST counter = 1
Port is open Port is open
Host1 Host 2
SYN cache = 1 RST counter = 1 SYN cache = 0 RST counter = 1
port is open
SYN Packet
Port is open
Host1 Host 2
SYN cache = 1 RST counter = 1 SYN/ACK Packet SYN cache = 0 RST counter = 1 SYN Packet
Port is open Port is open
Host1 Host 2
SYN cache = 0 RST counter = 1 SYN/ACK Packet ACK Packet SYN cache = 0 RST counter = 1
Port is open
SYN Packet
Server1 Client 1 Attacker Client 2 Server2 Attacker
Port is open Port is closed
Senario1 Senario 2
Server1 Client 1 Attacker Client 2 Server2 Attacker
Port is open Port is closed
Senario1 Senario 2
Server1 Client 1 Attacker Client 2 Server2 Attacker
IPID is 3177 SYN/ACK Packet
Attacker
IPID is 3177 SYN/ACK Packet SYN/ACK Packet Port is open Port is closed Spoofed SYN Packet Spoofed SYN Packet RST Packet IPID = 3178 RST Packet IPID=3177 3178 IPID=3177
Server1 Client 1 Attacker Client 2 Server2 Attacker
IPID is 3178 SYN/ACK Packet
Attacker
IPID is 3179 SYN/ACK Packet Port is open Port is closed IPID=3179 IPID=3178
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker
SYN cache = 0 SYN cache = 0
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker
SYN cache = 0 SYN cache = 0
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker
SYN cache = 1 SYN cache = 1
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
Spoofed SYN packet Spoofed SYN packet
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
SYN cache = 1 SYN cache = 1 Spoofed SYN packet SYN/ACK Packet SYN/ACK Packet Spoofed SYN packet
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
SYN cache = 1 Spoofed SYN packet SYN/ACK Packet Spoofed SYN packet RST Packet SYN cache = 1
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
SYN cache = 0 Spoofed SYN packet SYN/ACK Packet Spoofed SYN packet RST Packet SYN cache = 1
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
SYN cache = 0 Spoofed SYN packet SYN/ACK Packet Spoofed SYN packet RST Packet SYN cache = 1
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker
SYN cache = 0 SYN cache = 1
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
SYN Packet SYN Packet
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is closed
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Zombie2 Victim2 Attacker
SYN cache = 1 SYN cache = 1
Victim2 Victim1 Attacker
Port is open
Zombie1 Victim1 Attacker
Port is open
Victim2 Victim1 Attacker
Port is open
Server1 Client1 Attacker
Port is open
Victim2 Victim1 Attacker Zombie1 Victim1 Attacker Victim2 Victim1 Attacker Server2 Client2 Attacker
SYN Packet SYN Packet SYN Cookie Packet SYN ACK Packet
– YES, we can.
00
1