首页/安全/应急响应速查/tcpdump 抓包验证可疑外联

tcpdump 抓包验证可疑外联

日志或 ss 显示可疑外联时,抓一小段包看真实数据特征:心跳周期、明文协议、TLS SNI 都能说明问题。

应急响应速查安全更新于 2026-10-13

tcpdump 验证可疑外联

当 ss 或日志显示一台主机在与陌生地址通信,但进程名看起来正常时,抓一小段流量是最直接的验证方式:能看到实际的协议特征、心跳周期、明文内容或 TLS 的服务器名称。抓包的原则是「小、准、快」——先限定主机与端口、限制包数或时长、把结果直接写到外置介质,然后再离线回读。生产环境最忌讳不加限制地整机抓包,几分钟就能写满磁盘。

基本信息

抓取tcpdump -i 接口 过滤表达式 -w 文件
限额-c 限制包数、-G/-W 按时间切割、-s 限制快照长度
过滤host、net、port、portrange、tcp/udp、and/or/not 组合
回读-r 读取文件,-nn 不做解析,-A 显示 ASCII 内容
权限需要 root 或 CAP_NET_RAW
证据要求pcap 文件采集后立即计算哈希并归档

典型使用场景

  • 验证某个可疑连接是否为心跳式回连(周期性、等间隔的短连接)
  • 确认通信是否明文,直接从内容里提取地址、路径或命令特征
  • 加密流量也能看出线索:TLS 握手里的 SNI 域名往往就是 C2 域名
  • 为后续封禁与告警规则提供确凿依据,而不是仅凭连接表推断
  • 排查业务侧说不清的流量问题:重传、握手失败、连接被重置

抓取并回读验证

抓取并回读验证
ip -br link                                   # 先确认接口名
sudo tcpdump -i any -nn host 203.0.113.10 -c 50 -w /evidence/evil.pcap     # 限定主机与包数
sudo tcpdump -nn -A -r /evidence/evil.pcap 'tcp port 80' | head -n 60      # 回读看明文
sudo tcpdump -nn -r /evidence/evil.pcap | head -n 30                       # 只看会话概览
sha256sum /evidence/evil.pcap | tee /evidence/evil.pcap.sha256             # 固定完整性
sudo tcpdump -i any -nn 'host 203.0.113.10 and tcp[tcpflags] & tcp-syn != 0' -c 20   # 只看握手包,判断连接频率

过滤表达式读法

表达式含义典型用途
host 203.0.113.10指定单个地址的双向流量验证与某个 C2 的通信
net 10.0.0.0/8整个网段观察横向扫描与探测
port 4444指定端口定位非常规端口通信
portrange 1-1024端口范围查找对系统服务的探测
tcp[tcpflags] & tcp-syn != 0只看握手包判断连接频率与是否等间隔
not port 22排除指定端口排除自己的会话干扰
抓包必须限额:加 -c 限制包数、加 -G 与 -W 按时间切割、加 -s 限制快照长度,并把输出写到证据目录而不是本机根分区。不加限制的抓包在生产环境可能在几分钟内写满磁盘,直接把故障升级成事故。
加密流量不等于没有价值:TLS 里可以看到目标 IP、端口、握手时间与服务器名称,心跳式回连的时间规律同样清晰可见。要判断内容,则需要在隔离环境里做进一步分析,生产机上不做中间人解密。

易错点

  • 不加 -c 或不限时:磁盘很快被写满,业务与取证同时受损
  • 只抓不哈希:pcap 作为证据前必须固定完整性,否则无法说明未被改动
  • 在生产机上做 TLS 解密:会改变通信行为并影响业务,应当在隔离环境完成
  • 抓包范围过大:抓全端口全地址会把关键流量淹没在噪声里,先按主机与端口收窄
  • 忘记排除自己的管理流量:SSH 与监控流量会干扰判断,必要时排除 22 与监控网段

数据来源与参考

  • man 8 tcpdump
  • Wireshark 官方文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌