赞
踩
十、linux下抓包
tcpdump命令是一款抓包工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。
1、tcpdump工具需要自行安装:
# yum install -y tcpdump
格式:tcpdump 选项
可用选项,常见的我用红色标出:
-a:尝试将网络和广播地址转换成名称;
-c<数据包数量>:收到指定的数据包数量后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件>:指定内含表达方式的文件;
-i<网络界面>:使用指定的网络截面送出数据包;
-l:使用标准输出列的缓冲区;
-n Don't convert host addresses to names. This can be used to
avoid DNS lookups.(使用IP地址显示)
-nn Don't convert protocol and port numbers etc. to names either.(不转换协议端口号)
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q :快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件读取数据包数据;
-s<数据包大小>:设置每个数据包的大小;
-S:用绝对而非相对数值列出TCP关联数;
-t:在每列倾倒资料上不显示时间戳记;
-tt: 在每列倾倒资料上显示未经格式化的时间戳记;
-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;
-v:详细显示指令执行过程;
-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
-w<数据包文件>:把数据包数据写入指定的文件。
2、日常用法:
直接执行tcpdump将监视第一个网络接口上所有流过的数据包
#tcpdump tcp port 443 and src host 147.128.7.21
tcpdump默认监控的是eth0端口,由于我这里的网卡名是eth0所以需要使用-i选项指定监听的网卡
# tcpdump -nni eth0 (比较常用)
一条信息表示的依次是:时间,IP 源IP.端口 > 目标IP.端口 数据包标签[],数据包类型、长度等信息。
## -nn选项的作用是IP的端口都以数字的形式显示。不使用-nn选项的话有些时候会显示协议名等信息。
## tcpdump默认会一直抓包,知道按Ctrl+C终止抓包。
监视指定端口的数据包
监视端口不是22和ip不是10.1.1.1的数据包:
# tcpdump -nn -i eth0 not port 22 and not host 10.1.1.1 (比较常用)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
23:05:51.871825 IP 10.1.1.169.61745 > 183.61.83.225.80: Flags [S], seq 2512730790, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
23:05:51.910597 IP 183.61.83.225.80 > 10.1.1.169.61745: Flags [S.], seq 2995415503, ack 2512730791, win 14600, options [mss 1420,nop,nop,sackOK,nop,wscale 9], length 0
23:05:51.910602 IP 10.1.1.169.61745 > 183.61.83.225.80: Flags [.], ack 1, win 260, length 0
抓取100个数据包然后将数据包保存到data.cab 文件中
# tcpdump -nni eth0 -c 100 -w data.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
100 packets captured
100 packets received by filter
0 packets dropped by kernel
#这样抓取到的数据包只能使用tcpdump -r选项来读取, 直接cat的话就是乱码。
# tcpdump -r data.cap
reading from file data.cap, link-type EN10MB (Ethernet)
23:19:11.281776 IP long01.ssh > 10.1.1.169.61711: Flags [P.], seq 4277860660:4277860808, ack 3580160994, win 251, length 148
23:19:11.281872 IP 10.1.1.169.61711 > long01.ssh: Flags [.], ack 148, win 2050, length 0
23:19:13.883733 IP 10.1.1.169.51427 > 239.255.255.250.ssdp: UDP, length 137
(此处省略N行。。)
tshark,这个工具可以抓到比较详细的数据,但是用法还是比较复杂,平常使用网络设备做抓包。
tshark是另外一个和tcpdump相似的工具:
tshark命令需要先安装wireshark包才能使用。
[root@www ~]# yum install -y wireshark
案例:通过tshark抓取web服务的访问日志。
[root@www ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
"Jun 10, 2018 23:52:23.476398708 CST" 222.209.152.12 blog.deaoza.cn GET /
"Jun 10, 2018 23:52:26.012348996 CST" 222.209.152.12 blog.deaoza.cn GET /
"Jun 10, 2018 23:52:27.461011485 CST" 111.255.194.27 GET /
"Jun 10, 2018 23:52:35.721419187 CST" 222.209.152.12 blog.deaoza.cn GET /
^C4 packets captured
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。