设为首页 | 收藏本站欢迎来到!

超详细的网络抓包神器 Tcpdump 使用指南

作者:admin      来源:admin      发布时间:2021-01-29

下面给出一些详细的比如,每个比如都能够运用多种办法来取得相同的输出,你运用的办法取决于 所需的输出和网络上的流量。 咱们在排障时,一般只想获取自己想要的内容,能够经过过滤器和 ASCII 输出并结合管道与 grep、cut、awk 等东西来完成此意图。

例如,在抓取 HTTP 恳求和呼应数据包时,能够经过删去标志 SYN/ACK/FIN 来过滤噪声,但还有更简略的办法,那就是经过管道传递给 grep 。在到达意图的一起,咱们要挑选最简略最高效的办法。下面来看比如。

从 HTTP 恳求头中提取 HTTP 用户署理:

$ tcpdump -nn -A -s1500 -l | grep User-Agent: 

经过 egrep 能够一起提取用户署理和主机名:

$ tcpdump -nn -A -s1500 -l | egrep -i 'User-Agent:|Host:'

抓取 HTTP GET 流量:

$ tcpdump -s 0 -A -vv 'tcp[ 2):4] = 0x47455420'

也能够抓取 HTTP POST 恳求流量:

$ tcpdump -s 0 -A -vv 'tcp[ 2):4] = 0x504f5354'

留意:该办法不能确保抓取到 HTTP POST 有用数据流量,由于一个 POST 恳求会被分割为多个 TCP 数据包。

上述两个表达式中的十六进制将会与 GET 和 POST 恳求的 ASCII 字符串匹配。例如, tcp[ 2):4] 首先会 确认咱们感兴趣的字节的方位 [3] ,然后挑选咱们期望匹配的 4 个字节。

提取 HTTP 恳求的主机名和途径:

$ tcpdump -s 0 -v -n -l | egrep -i POST /|GET /|Host: 
tcpdump: listening on enp7s0, link-type EN10MB , capture size 262144 bytes
 POST /wp-login.php HTTP/1.1
 Host: dev.example.com
 GET /wp-login.php HTTP/1.1
 Host: dev.example.com
 GET /favicon.ico HTTP/1.1
 Host: dev.example.com
 GET / HTTP/1.1
 Host: dev.example.com

从 HTTP POST 恳求中提取暗码和主机名:

$ tcpdump -s 0 -A -n -l | egrep -i POST /|pwd=|passwd=|password=|Host: 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp7s0, link-type EN10MB , capture size 262144 bytes
11:25:54.799014 IP 10.10.1.30.39224 10.10.1.125.80: Flags [P.], seq 1458768667:1458770008, ack 2440130792, win 704, options [nop,nop,TS val 461552632 ecr 208900561], length 1341: HTTP: POST /wp-login.php HTTP/1.1
.....s..POST /wp-login.php HTTP/1.1
Host: dev.example.com
.....s..log=admin pwd=notmypassword℘-submit=Log In redirect_to=http://dev.example.com/wp-admin/ testcookie=1

提取 Set-Cookie 和 Cookie :

$ tcpdump -nn -A -s0 -l | egrep -i 'Set-Cookie|Host:|Cookie:'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp58s0, link-type EN10MB , capture size 262144 bytes
Host: dev.example.com
Cookie: wordpress_86be02xxxxxxxxxxxxxxxxxxxc43=admin|152xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfb3e15c744fdd6; _ga=GA1.2.21343434343421934; _gid=GA1.2.927343434349426; wordpress_test_cookie=WP Cookie check; wordpress_logged_in_86be654654645645645654645653fc43=admin|15275102testtesttesttestab7a61e; wp-settings-time-1=1527337439

检查网络上的一切 ICMP 数据包:

$ tcpdump -n icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp7s0, link-type EN10MB , capture size 262144 bytes
11:34:21.590380 IP 10.10.1.217 10.10.1.30: ICMP echo request, id 27948, seq 1, length 64
11:34:21.590434 IP 10.10.1.30 10.10.1.217: ICMP echo reply, id 27948, seq 1, length 64
11:34:27.680307 IP 10.10.1.159 10.10.1.1: ICMP 10.10.1.189 udp port 59619 unreachable, length 115

经过扫除 echo 和 reply 类型的数据包使抓取到的数据包不包括规范的 ping 包:

$ tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp7s0, link-type EN10MB , capture size 262144 bytes
11:37:04.041037 IP 10.10.1.189 10.10.1.20: ICMP 10.10.1.189 udp port 36078 unreachable, length 156

能够提取电子邮件的正文和其他数据。例如,只提取电子邮件的收件人:

$ tcpdump -nn -l port 25 | grep -i 'MAIL FROM\|RCPT TO'
$ tcpdump dst port 123
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB , capture size 65535 bytes
21:02:19.112502 IP test33.ntp 199.30.140.74.ntp: NTPv4, Client, length 48
21:02:19.113888 IP 216.239.35.0.ntp test33.ntp: NTPv4, Server, length 48
21:02:20.150347 IP test33.ntp 216.239.35.0.ntp: NTPv4, Client, length 48
21:02:20.150991 IP 216.239.35.0.ntp test33.ntp: NTPv4, Server, length 48

经过 SNMP 服务,浸透测验人员能够获取很多的设备和体系信息。在这些信息中,体系信息最为要害,如操作体系版别、内核版别等。运用 SNMP 协议快速扫描程序 onesixtyone ,能够看到方针体系的信息:

$ onesixtyone 10.10.1.10 public
Scanning 1 hosts, 1 communities
10.10.1.10 [public] Linux test33 4.15.0-20-generic