如何用 Wireshark 远程抓包
Calendar 2024 年 8 月 4 日
Edit 共 451 字,阅读需要 1 分钟

如何用 Wireshark 远程抓包 #

原理

  1. 利用 ssh 登录到远程主机上启动 tcpdump
  2. 将 tcpdump 的输出通过 ssh 发送到本地再用 Wireshark 进行分析

配置免密启动 tcpdump #

如果远程的机器执行 tcpdump 命令需要 sudo 输入密码,可以通过以下操作实现免密输入:

编辑 sudo 的配置文件

sudo visudo

在文件的末尾添加下面一行:

username ALL=(ALL) NOPASSWD: /usr/bin/tcpdump

将上面的 username 替换为你的用户名, /usr/bin/tcpdump 替换为你的 tcpdump 的位置 (可以通过 which tcpdump 查看位置)

这一行命令的意思

username ALL=(ALL) NOPASSWD: /usr/bin/tcpdump
   |      |    |      |             |
   |      |    |      |             +---------- 可以执行 tcpdump 命令
   |      |    |      +------------------------ 不需要密码
   |      |    +------------------------------- 可以以所有用户/用户组的身份执行
   |      +------------------------------------ 可以在所有主机上执行
   +------------------------------------------- 用户名

配置完成后新建一个终端,可以发现执行 sudo tcpdump 指令时不需要输入密码。

远程连接 #

使用如下命令将远程 tcpdump 的输出通过 ssh 发送到本地再用 Wireshark 进行分析:

# eth0 更换成你的机器 interface 名称, 通过 ip a 查看
ssh username@host "sudo tcpdump -i eth0 -l -w - not port 22" | wireshark -k -i -
  • 对于 Windows 用户,在 cmd 中执行即可 (在 Wireshark 安装目录下)
  • 对于其他平台用户,在终端中执行即可

建议设置 not port 22 来过滤掉 ssh 连接


不过滤 ssh 连接的后果

参考资料 #