知道抓包的基本都知道Wireshark,但是没做过服务器运维或者无线破解的却很少知道Linux下有个抓包利器tcpdump.
之所以是利器不仅仅是抓包功能的全面,更重要的是命令行的操作,快捷方便极客。
如上图基本的命令格式。系统一般自带,没有的自行谷歌安装命令。
先看看tcpdump的具体参数及意义:
-i:指定tcpdump监听的网络接口
-s:指定要监听数据包的长度
-c:指定要监听的数据包数量,达到指定数量后自动停止抓包
-w:指定将监听到的数据包写入文件中保存
-A:指定将每个监听到的数据包以ACSII可见字符打印
-n:指定将每个监听到数据包中的域名转换成IP地址后显示
-nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示
-v :输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv :输出更详细的报文信息
-e:指定将监听到的数据包链路层的信息打印出来,包括源mac和目的mac,以及网络层的协议
-p:将网卡设置为非混杂模式,不能与host或broadcast一起使用
-r:指定从某个文件中读取数据包
-S:指定打印每个监听到的数据包的TCP绝对序列号而非相对序列号
下边简单介绍一些常用的,顺便备份一下以待便用。
默认启动
tcpdump
直接启动tcpdump,抓eth0接口上流过的所有数据包。
监视指定网络接口的数据包
tcpdump -i eth1
如果不指定网卡,默认tcpdump只会监视第一个网络接口eth0。
监视指定主机的数据包
打印所有进入或离开Kali的数据包.
tcpdump host Kali
也可以指定ip,例如截获所有192.168.0.22 的主机收到的和发出的所有的数据包
tcpdump host 192.168.0.22
非 : ! or not
且 : && or and
或 : || 或 or
打印Kali与 hot 或者与 cool 之间通信的数据包
tcpdump host Kali and \( hot or cool \)
截获主机192.168.0.1 和主机192.168.0.2 或192.168.0.3的通信
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
如果想要获取主机192.168.0.1除了和主机192.168.0.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 192.168.0.1 and ! 192.168.0.2
截获主机hostname发送的所有数据
tcpdump -i eth0 src host hostname
监视所有送到主机hostname的数据包
tcpdump -i eth0 dst host hostname
监视指定主机和端口的数据包
如果想要获取主机192.168.0.1接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 and host 192.168.0.1
对本机的udp 123 端口进行监视 (123 为ntp的服务端口)
tcpdump udp port 123
比如指定端口号9996上做NetFlow流量监控,需要采集数据:
tcpdump -i eth0 -nnA port 9996 -c 2000 -w aa.cap (-c指定抓包数目,-w将抓取数据输出保存到当前目录下的aa.cap文件)
命令可以根据需求自由选择,把数据包保存再拷出来,然后用wireshark进行图形查看更利于分析。