远程抓包是什么
远程抓包指不在目标主机上安装图形分析工具,而是通过 ssh 在远端执行 tcpdump,把 pcap 字节流回传到本地再分析。它适用于生产服务器禁止安装额外软件、或本地没有可视化环境的情况;核心手法是让 tcpdump 把数据写到标准输出(-w -),再由本地 shell 重定向落盘,让抓取与分析彻底分离。
基本信息
| 适用平台 | Linux(tcpdump + libpcap)+ OpenSSH 客户端 |
|---|---|
| 权限要求 | 远端需 root 或 CAP_NET_RAW,本地只需写文件权限 |
| 关键参数 | -w - 写入 stdout、-U 立即刷出、-s 0 抓全包 |
| 典型场景 | 生产机不允许装 Wireshark,只需要原始报文 |
典型使用场景
- 业务报障但只能登服务器:把 pcap 拉回本地用 Wireshark 做协议级分析
- 多台机器同时取证:脚本并行 ssh 抓包,统一归档到一台分析机
- 磁盘紧张的容器或云主机:只抓头部(-s 96)并流式回传,现场几乎不留文件
- 限时抓取:用 timeout 包住命令,到点自动停止,避免忘记关闭长期占用带宽
远程抓包与核对
远程抓包与核对
# 远端抓、本地存,-U 让数据边抓边出,适合较长抓取
ssh user@10.0.0.5 'sudo timeout 60 tcpdump -i eth0 -nn -s 0 -U -w - port 443' > /tmp/remote.pcap
# 带宽受限时先压缩再回传
ssh user@10.0.0.5 'sudo tcpdump -i eth0 -nn -s 0 -w - port 443' | gzip > /tmp/remote.pcap.gz
# 抓完立即核对完整性,截断的 pcap 读取会报错
tcpdump -nn -r /tmp/remote.pcap 2>&1 | head -3
tcpdump -nn -r /tmp/remote.pcap 2>/dev/null | wc -l回传方式对照
| 方式 | 命令要点 | 适用与代价 |
|---|---|---|
| 直接重定向 | -w - 接 > file.pcap | 最简单,ssh 中断即产生截断文件 |
| 压缩后回传 | -w - 接 | gzip | 省带宽与磁盘,双方 CPU 上升 |
| 分片轮转 | -w - -C 100 -W 20 | 每 100MB 切一个、最多 20 个,适合长时抓取 |
| 只留头部 | -s 96 -w - | 开销最小,但看不到载荷内容 |
远程抓包会真实消耗生产机的 CPU、内存与带宽:先写清过滤条件与时长上限(如 timeout 60、port 443),抓完立刻确认抓包进程已退出,不要留在后台。
ssh 会话里的任何多余输出都会混进 pcap:用 -w - 时不要在远端打印文字、也不要加 -v 之外的杂项输出,否则本地文件会损坏且难以排查来源。