超级详细的Linux抓包工具tcpdump详解!
简介
tcpdump是Linux下一款命令行抓包程序,使用tcpdump之前,可以先看一下它提供的帮助。
tcpdump官方文档手册:https://www.tcpdump.org/manpages/tcpdump.1.htmlroot@kali:~# tcpdump --help tcpdump version 4.9.3 libpcap version 1.9.1 (with TPACKET_V3) OpenSSL 1.1.1g 21 Apr 2020 Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ] [ -Q in|out|inout ] [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ] [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ expression ]
lALPGpqNbM0WWbbNAgbNBDc_1079_518.png_720x720q90g.jpg
下面是一个linux访问百度的抓包实例
#下面为TCP的三次握手 22:24:08.927326IP192.168.254.133.43710 > 183.232.231.174.http: Flags [S], seq 3739719434, win 64240, options [mss 1460,sackOK,TS val 3245036665 ecr0,nop,wscale 7], length 0 22:24:08.975622IP183.232.231.174.http > 192.168.254.133.43710: Flags [S.], seq 536888616, ack 3739719435, win 64240, options [mss 1460], length 0 22:24:08.975730IP192.168.254.133.43710 > 183.232.231.174.http: Flags [.], ack 1, win 64240, length 0 #请求百度的网页 22:24:08.975988IP192.168.254.133.43710 > 183.232.231.174.http: Flags [P.], seq 1:78, ack 1, win 64240, length 77: HTTP: GET / HTTP/1.1 22:24:08.976314IP183.232.231.174.http > 192.168.254.133.43710: Flags [.], ack 78, win 64240, length 0 #下面为TCP的四次挥手 22:24:09.042036IP192.168.254.133.43710 > 183.232.231.174.http: Flags [F.], seq 78, ack 2782, win 62780, length 0 22:24:09.043757IP183.232.231.174.http > 192.168.254.133.43710: Flags [.], ack 79, win 64239, length 0 22:24:09.096935IP183.232.231.174.http > 192.168.254.133.43710: Flags [FP.], seq 2782, ack 79, win 64239, length 0 22:24:09.097018IP192.168.254.133.43710 > 183.232.231.174.http: Flags [.], ack 2783, win 62780, length 0Flags 标识符
- •
[S]: SYN(开始连接)- •
[P]: PSH(推送数据)- •
[F]: FIN (结束连接)- •
[R]: RST(重置连接)- •
[.]: 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)
可选参数解析
设置不解析域名提升速度
- •
-n:不把ip转化成域名,直接显示 ip,避免执行 DNS lookups 的过程,速度会快很多- •
-nn:不把协议和端口号转化成名字,速度也会快很多。- •
-N:不打印出host 的域名部分.。比如,,如果设置了此选现,tcpdump 将会打印’nic’ 而不是 ‘nic.ddn.mil’.将抓取到的数据包保存为文件,可以借助wireshark进行分析
tcpdump -w test.cap先从服务器下载保存的文件,接着在电脑上使用wireshark打开即可
image-20210723224014639
image-20210723224044609
从文件中读取包数据
tcpdump icmp -r all.pcap控制详细内容的输出
- •
-v:产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。- •
-vv:产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。- •
-vvv:产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来root@kali:~# tcpdump -vvv 192.168.254.133.39060 > 183.232.231.172.http: Flags [S], cksum 0x5ef2 (incorrect -> 0x364f), seq 468528907, win 64240, options [mss 1460,sackOK,TS val 1367245473 ecr 0,nop,wscale 7], length 0 23:15:59.738147 IP (tos 0x0, ttl 128, id 15796, offset 0, flags [none], proto UDP (17), length 74) 183.232.231.172.http > 192.168.254.133.39060: Flags [S.], cksum 0xacad (correct), seq 938571237, ack 468528908, win 64240, options [mss 1460], length 0 23:15:59.785951 IP (tos 0x0, ttl 64, id 33435, offset 0, flags [DF], proto TCP (6), length 40) 192.168.254.133.39060 > 183.232.231.172.http: Flags [.], cksum 0x5ede (incorrect -> 0xc46a), seq 1, ack 1, win 64240, length 0 23:15:59.786517 IP (tos 0x0, ttl 64, id 33436, offset 0, flags [DF], proto TCP (6), length 117)控制时间的显示
- •
-t:在每行的输出中不输出时间- •
-tt:在每行的输出中会输出时间戳- •
-ttt:输出每两行打印的时间间隔(以毫秒为单位)- •
-tttt:在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)显示数据包的头部
- •
-x:以16进制的形式打印每个包的头部数据(但不包括数据链路层的头部)- •
-xx:以16进制的形式打印每个包的头部数据(包括数据链路层的头部)- •
-X:以16进制和 ASCII码形式打印出每个包的数据(但不包括连接层的头部),这在分析一些新协议的数据包很方便。- •
-XX:以16进制和 ASCII码形式打印出每个包的数据(包括连接层的头部),这在分析一些新协议的数据包很方便。其他常用的一些参数
- •
-i:指定要过滤的网卡接口,如果要查看所有网卡,可以-i any- •
-Q: 选择是入方向还是出方向的数据包,可选项有:in, out, inout,也可以使用 --direction=[direction] 这种写法- •
-q: 简洁地打印输出。即打印很少的协议相关信息, 从而输出行都比较简短- •
-c: 捕获 count 个包 tcpdump 就退出- •
-s: tcpdump 默认只会截取前96字节的内容,要想截取所有的报文内容,可以使用-s number,number就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。- •
-S: 使用绝对序列号,而不是相对序列号- •
-C:file-size,tcpdump 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录. 新创建的文件名与-w 选项指定的文件名一致, 但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而增加. file-size的单位是百万字节(nt: 这里指1,000,000个字节,并非1,048,576个字节, 后者是以1024字节为1k, 1024k字节为1M计算所得, 即1M=1024 * 1024 = 1,048,576)- •
-F:使用file 文件作为过滤条件表达式的输入, 此时命令行上的输入将被忽略.
过滤规则
基于IP地址过滤:host
tcpdump host 192.168.10.100 # 根据源ip进行过滤 tcpdump -i eth2 src 192.168.10.100 # 根据目标ip进行过滤 tcpdump -i eth2 dst 192.168.10.200基于网段进行过滤:net
tcpdump net 192.168.10.0/24 # 根据源网段进行过滤 tcpdump src net 192.168 # 根据目标网段进行过滤 tcpdump dst net 192.168基于端口进行过滤:port
tcpdump port 8088 # 根据源端口进行过滤 tcpdump src port 8088 # 根据目标端口进行过滤 tcpdump dst port 8088 #同时指定两个端口 tcpdump port 80 or port 8088 #指定端口的范围 tcpdump portrange 8000-8080 tcpdump src portrange 8000-8080 tcpdump dst portrange 8000-8080基于协议进行过滤:proto
tcpdump icmp #过滤IPV4数据包(友情提示:数字 6 表示的是 tcp 在ip报文中的编号。) tcpdump ip proto 6 tcpdump ip protochain 6
proto后面跟的 的关键词是固定的,只能是ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui这里面的其中一个。而
protochain后面跟的 protocol 要求就没有那么严格,它可以是任意词,只要 tcpdump 的 IP 报文头部里的 protocol 字段为 就能匹配上。
过滤规则条件
- •
and:所有的条件都需要满足,也可以表示为&&- •
or:只要有一个条件满足就可以,也可以表示为||- •
not:取反,也可以使用!#过滤出源地址是1.1.1.1发往任意主机的3389端口的数据包 tcpdump src 1.1.1.1 and dst port 3389当你在使用多个过滤器进行组合时,有可能需要用到括号,而括号在 shell 中是特殊符号,因为你需要使用引号将其包含。
#过滤出源地址是1.1.1.1发往任意主机的3389端口或者22端口的数据包 tcpdump 'src 1.1.1.1 and (dst port 3389 or 22)'
- •
=:判断二者相等- •
==:判断二者相等- •
!=:判断二者不相等tcpdump 还提供了一些关键字的接口来方便我们进行判断
- •
if:表示网卡接口名、- •
proc:表示进程名- •
pid:表示进程 id- •
svc:表示 service class- •
dir:表示方向,in 和 out- •
eproc:表示 effective process name- •
epid:表示 effective process ID#过滤来自进程名为 nc 发出的流经 en0 网卡的数据包,或者不流经 en0 的入方向数据包 tcpdump "( if=en0 and proc =nc ) || (if != en0 and dir=in)"
特殊过滤规则
根据 tcpflags 进行过滤
tcpdump -i eth0 "tcp[tcpflags] & tcp-syn != 0"基于包大小进行过滤
tcpdump less 32 tcpdump greater 64 tcpdump <= 128根据 mac 地址进行过滤
tcpdump ether host [ehost] tcpdump ether dst [ehost] tcpdump ether src [ehost]过滤广播/多播数据包
tcpdump ether broadcast tcpdump ether multicast tcpdump ip broadcast tcpdump ip multicast tcpdump ip6 multicast
实际应用
#从 HTTP 请求头中提取 HTTP 的 User-Agent tcpdump -nn -A -s1500 -l | grep "User-Agent:" #抓取 HTTP GET 请求包 tcpdump -vvAls0 | grep 'GET' #提取 HTTP 请求的主机名和路径 tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"

黑客/网络安全学习包


资料目录
-
成长路线图&学习规划
-
配套视频教程
-
SRC&黑客文籍
-
护网行动资料
-
黑客必读书单
-
面试题合集
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。

3.SRC&黑客文籍
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!
4.护网行动资料
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
5.黑客必读书单

6.面试题合集
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

需要的话可以扫描下方卡片加我耗油发给你(都是无偿分享的),大家也可以一起学习交流一下。

lALPGpqNbM0WWbbNAgbNBDc_1079_518.png_720x720q90g.jpg
image-20210723224014639
image-20210723224044609
1535

被折叠的 条评论
为什么被折叠?



