11-TCP-IP

advertisement
ECE-6612
http://www.csc.gatech.edu/copeland/jac/6612/
Prof. John A. Copeland
john.copeland@ece.gatech.edu
404 894-5177
fax 404 894-0035
Office: Klaus 3362
email or call for office visit, 404 894-5177
Slides 11 - Fun with TCP/IP
4/9/2015
Ethernet Header (MAC or Link Layer)
Ethernet Hdr - 14 bytes IP Header - 20 bytes TCP Header - 20 bytes
(big-endian)
(big-endian)
(big-endian)
31 bits
0
Bytes 0 - 3
App. Hdr
& Data
Destination Address - 6 bytes
Bytes 4 - 7
Bytes 8 - 11
Bytes 12 - 13
Source Address - 6 bytes
Next Protocol #
LSB
MSB
Next Level Protocol Header
(0x 0800 -> IP, 0x 0806 -> ARP)
2
IP Header (Network Layer)
Ethernet Hdr - 20 bytes IP Header - 20 bytes TCP Header - 20 bytes
(big-endian)
(big-endian)
(big-endian)
App. Hdr
& Data
Length
Frag.
Flags
Fragment Offset
Next Protocol
Next Protocol #
Frag. Flags:
1=ICMP 6=TCP 17=UDP
010 = Do Not Fragment, DNF
001 = More Fragments, MF
3
Fragmented Packet
Ethernet Hdr - 20 bytes IP Header - 20 bytes TCP Header - 20 bytes
(MF: 1, offset: 0)
(big-endian)
20 bytes
Ethernet Hdr - 20 bytes IP Header - 20 bytes
(MF: 1, offset:1280)
20 bytes
Ethernet Hdr - 20 bytes IP Header - 20 bytes
(MF: 0, offset:2560)
20 bytes
App. Hdr
& Data
20 + 1260 bytes
More Data
1280 bytes
Last Data
760 bytes
Data Packet from Token Ring has TCP header (20 bytes) plus App.
Header and Data (3300 bytes) = 20 +1280 + 1280 + 760 bytes.
IP Fragment ID number is the same for each fragment.
4
Ping of Death
Ethernet Hdr - 20 bytes
IP Header - 20 bytes
(MF: 1, offset:65,500)
20 bytes
Any Data
1000 bytes
Packet Buffer 65,535 bytes Packet Buffer 65,535 bytes
Fragments are assembled in a buffer in memory. Ping of Death
fragment causes a buffer overflow, corrupting the next buffer
causing an older version of Windows to crash.
“Ping” was used because #ping -s 66500 used to work.
“fragrouter” is a network utility that generates bad fragments.
5
Fragmented Packets as seen by “tcpdump”
# tcpdump -nnvli eth3 'tcp and ((ip[6:2]&0x3fff) != 0)’ Filter for seeing frag.s
22:10:48 128.61.60.143.3472 > 217.98.230.192.6881: .
3041158335:3041158379(44) ack 829468732 win 65535
(frag 43660:64@0+) (ttl 127, len 84)
Very small fragments
22:10:48 128.61.60.143 > 217.98.230.192: tcp
(frag 43660:44@64) (ttl 127, len 64) )
Very small fragments
22:10:49 219.115.56.223 > 199.77.145.106: tcp
(frag 0:20@16384) (ttl 237, len 40)
Very small, isolated fragment, ID=0
22:10:50 217.232.26.184 > 128.61.104.27: tcp Note close times, different IPs
(frag 0:20@16384) (ttl 240, len 40)
Very small, isolated fragment
------43660:64@0+ = ID : Data-Length (without IP hdr) @ Offset
“+” means More Fragments bit set.
Wireshark display filters: ip.fragment and ip.fragment.X where X can be:
count==[number] , error, overlap, overlap.conflict, multipletails, toolongtails)
6
Protocols over IP
179
21
80
25
6
23
161 <- Listening Port No. (Well-Known?)
17 <- IP Next Protocol Numbers
1
2
89
46
IPsec ESP 50
ARP
x0800 <- Ethernet “Next Protocol” Number
x0806
Data Link and Physical Layers (e.g., Ethernet, WiFi, Point-to-Point, …)
7
UDP Header
(big endian)
Common UDP Server Ports
53 – DNS (Domain Name Server)
123 – NTP (Network Time Protocol)
137 – NBNS (NetBIOS Name Service, Microsoft)
631 – CUPS (Common Unix Printing System
5353 – MDNS (Multicast DNS, Apple)
8
ICMP Header
0
Bytes 0 - 3
Bytes 4 - 7
(big endian)
Type
Code
Identifier
Bytes 8 -
Type Field
0 - Echo Reply (Code=0)
3 - Destination Unreachable
5 - Redirect (change route)
8 - Echo Request (Ping)
11 - Timeout (traceroute)
31 bits
Checksum
Sequence Number
Optional Data
Type 3 - Codes
0 - Network Unreachable
1 - Host Unreachable
3 - Port Unreachable (UDP Reset-old hdr in data)
7 - Destination Host Unknown
12 - Host Unreachable for Type of Service
9
Smurf Attack
Attacker 23.45.67.89
ICMP Echo Request (Ping)
To: 222.45.6.255 (Broadcast)
From: 130.207.225.23 (spoofed)
Victim
130.207.225.23
ICMP Echo Responses
To: 130.207.225.23
Network 222.45.6.0/24
Network Broadcast Address = 222.45.6.255
(How is this prevented?)
10
TCP Header – 6 Flag Bits
Ethernet Hdr - 20 bytes IP Header - 20 bytes TCP Header - 20 bytes
(big-endian)
(big-endian)
(big-endian)
App. Hdr
& Data
*
* Length of TCP Header in bytes /4
TCP Flags: U A P R S F
11
TCP Three-Way Handshake Flags
Syn (only)
Syn + Ack
Ack
Ack( Push, Urgent)
Ack( Push, Urgent)
Client
Server
A Flag Bit is “present”, “set” or “true” if it is a binary 1.
12
TCP Three-Way Disconnect
Ack( Push, Urgent)
Ack( Push, Urgent)
Fin + Ack
Ack
Fin + Ack
Ack
Host A
or Reset + Ack
Host B
Either A or B can be the Server
13
TCP Initial: SYN, SYN-ACK, ACK
TCP Final: FIN, ACK, FIN-ACK, ACK
TCP SYN and RES-ACK (connection rejected)
as seen using wireshark
14
TCP State Diagram
Reset
15
Reset
Fin
0
0
0
Syn
Ack
Comment
0
1
OK
0
1
0
1st Packet
0
0
1
1
2nd Packet
0
1
0
0
Needs Ack
0
1
0
1
OK
0
1
1
0
Illegal
0
1
1
1
Illegal
1
0
0
0
Needs Ack
1
0
0
1
OK
1
0
1
0
Illegal
1
0
1
1
Illegal
1
1
0
0
Illegal
1
1
0
1
Illegal
1
1
1
0
Illegal
1
1
1
1
Illegal
Illegal flag combinations are used to determine Operating System
16
DoS Exploits using TCP Packets
Land - Source Address = Destination Address
Crashes some printers, routers, Windows, UNIX.
Tear Drop - IP Fragments that overlap, have gaps
(also Bonk, Newtear, Syndrop) Win 95, Win 98, NT, Linux.
Winnuke - Any garbage data to an open file-sharing port (TCP-139)
Crashes Win 95 and NT
Blue Screen of Death - Set Urgent Flag, & Urgent Offset Pointer = 3
Older Windows OS would crash.
17
TCP Session Highjack
Attacker - (1) sniffs network and watches
Alice establish TCP session with Bob
(2) - DOS
Attack to
Silence
Alice (Acks
and Resets)
Alice
(3) - Highjacks TCP Connection
by using correct sequence number
(0) - Established
TCP Connection
Bob
IP connections can be determined by the
remote host's sequence no. – not IP !
Off-LAN Attack (can not sniff) to get by host-based firewall.
1.
2.
3.
4.
Open several TCP connections to Bob, to predict Bob’s next sequence number
DoS Alice so it will not send a TCP Reset to Bob.s SYN-ACK.
Send Bob a SYN, then an ACK based on predicted Bob’s seq. no.(from Alice’s IP)
Send exploit to Bob (assume all packets are received ok and Ack’ed).
18
Download