TCPDump

From Network Security Wiki



Basics

  • TCPDump done with "-i any" will result in packets with No Ethernet Headers captured in wireshark.
tcpdump -i eth0
  • TCPDump uses libpcap which processes packets before they get processed by IPTables.
  • Therefore TCPDump will see Incoming Ping packets though they are dropped by IPTables.
  • TCPDump will see inbound traffic before iptables, but will see outbound traffic only after the firewall has processed it.

Filters

Source: [thegeekstuff.com]

  • General TCPDump command:
sudo tcpdump -s 0 -i ens160 host 10.1.1.1 -v -w /tmp/packet_capture.cap
sudo tcpdump -s 0 -i ens160 host 10.1.1.1 and port 22 -v -w /tmp/packet_capture.cap
sudo tcpdump -s 0 -i ens160 host 10.1.1.1 and port not 22 and port not 80 -v -w /tmp/packet_capture.cap
sudo tcpdump -s 0 -i ens160 host 10.1.1.1 and tcp port not 22 and tcp port not 80 -v -w /tmp/packet_capture.cap


Description Command
Capture packets from a particular interface tcpdump -i eth1
Capture only N number of packets tcpdump -c 200 -i eth0
Display Captured Packets in ASCII tcpdump -A -i eth0
Display Captured Packets in HEX and ASCII tcpdump -XX -i eth0
Capture the packets and write into a file tcpdump -w 08232010.pcap -i eth0
Capture packets with IP address without DNS resolution tcpdump -n -i eth0
Capture packets with proper readable timestamp tcpdump -n -tttt -i eth0
Read packets only longer or smaller than N bytes tcpdump -w capture.pcap greater 1024
tcpdump -w capture.pcap less 1024
Receive only the packets of a specific protocol type tcpdump -i eth0 arp
Receive packets flows on a particular port tcpdump -i eth0 port 22
Capture packets for particular destination IP and Port tcpdump -w xpackets.pcap -i eth0 dst 10.181.140.216 and port 22
Capture TCP communication packets between two hosts tcpdump -w comm.pcap -i eth0 udp and \(host 172.20.68.176 and host 172.24.173.9\)
Capture all the packets other than arp and rarp
'and' 'or' and 'not' condition are used to filter the packets
tcpdump -i eth0 not arp and not rarp



Reading PCAPs

Header text Header text
Reading pcap file tcpdump -r data.pcap
Viewing all headers tcpdump -e -nn -vv -r data.pcap
Viewing hexadecimal data tcpdump -XX -r data.pcap

TCPDump Parameters

Modifiers

Symbol Words
! not
&& and
|| or

Examples

Filter Description
udp dst port not 53 UDP not bound for port 53
host 10.0.0.1 && host 10.0.0.2 Traffic between these hosts
tcp dst port 80 or 8080 Packets to either TCP port

Protocol keywords

Keywords
arp ether icmp
ip ip6 ppp
rarp tcp udp
wlan

TCP Flags

Flag Keywords
tcp-urg tcp-rst
tcp-ack tcp-syn
tcp-psh tcp-fin

Capture Filter Primitives

Filter Description
[src|dst] host <host> Matches a host as the IP source, destination, or either
ether [src|dst] host <ehost> Matches a host as the Ethernet source, destination, or either
gateway host <host> Matches packets which used host as a gateway
[src|dst] net <network>/<len> Matches packets to or from an endpoint residing in network
[tcp|udp] [src|dst] port <port> Matches TCP or UDP packets sent to/from port
[tcp|udp] [src|dst] portrange <p1>-<p2> Matches TCP or UDP packets to/from a port in the given range
less <length> Matches packets less than or equal to length
greater <length> Matches packets greater than or equal to length
(ether|ip|ip6) proto <protocol> Matches an Ethernet, IPv4, or IPv6 protocol
(ether|ip) broadcast Matches Ethernet or IPv4 broadcasts
(ether|ip|ip6) multicast Matches Ethernet, IPv4, or IPv6 multicasts
type (mgt|ctl|data) [subtype <subtype>] Matches 802.11 frames based on type and optional subtype
vlan [<vlan>] Matches 802.1Q frames, optionally with a VLAN ID of vlan
mpls [<label>] Matches MPLS packets, optionally with a label of label
<expr> <relop> <expr> Matches packets by an arbitrary expression

Command Line Options

-A 		Print frame payload in ASCII
-c <count> 	Exit after capturing count packets
-D 		List available interfaces
-e 		Print link-level headers
-F <file> 	Use file as the filter expression
-G <n> 	Rotate the dump file every n seconds
-i <iface> 	Specifies the capture interface
-K 		Don't verify TCP checksums
-L 		List data link types for the interface
-n 		Don't convert addresses to names
-p 		Don't capture in promiscuous mode
-q 		Quick output
-r <file> 	Read packets from file
-s <len> 	Capture up to len bytes per packet
-S 		Print absolute TCP sequence numbers
-t 		Don't print timestamps
-v[v[v]] 	Print more verbose output
-w <file> 	Write captured packets to file
-x 		Print frame payload in hex
-X 		Print frame payload in hex and ASCII
-y <type> 	Specify the data link type


Docker Packet Captures

docker exec -it 428947239426349 tcpdump -N -A 'port 80' -w capture.pcap

Advanced Packet Filtering

  • List interesting traffic from all the PCAP files:
for i in `find . -type f | egrep "All.pcap"`; do echo $i; tcpdump -r $i '((host 1.1.1.1 or host 2.2.2.2) and host 3.3.3.3) and port 445' ; echo -e "\n"; done


References





{{#widget:DISQUS |id=networkm |uniqid=TCPDump |url=https://aman.awiki.org/wiki/TCPDump }}