首页/安全/取证与溯源速查/扫描流量特征识别

扫描流量特征识别

扫描表现为短连接、多端口、单包试探:按源 IP 聚合目的端口数与连接时长可快速定位扫描源。

取证与溯源速查安全更新于 2026-10-13

扫描流量的特征

端口扫描的典型特征是短连接、多端口、单包试探:一次 SYN 后没有后续数据交换,或者对大量端口发出连接请求。分析思路是先按源地址聚合,统计其访问过的目的端口数量、连接成功率与时间分布,从而把扫描源从正常业务中分出来。数据可以来自抓包(PCAP)、会话记录或 NetFlow 类流量统计,选择取决于可获取的原始数据与时间跨度。需要提醒的是,扫描源本身可能是被控的内网主机,定位到源并不等于找到攻击者。

基本信息

适用平台具备抓包或流量统计能力的环境(tshark、Zeek、NetFlow 采集器)
典型特征SYN 无后续、端口离散且数量大、连接时长极短、固定时间间隔
常用命令tshark 过滤 SYN 包、Zeek 的 conn.log 聚合、流数据按源聚合目的端口数
关键指标目的端口去重数、连接数、成功率、时间窗口内的频率
排除项监控健康检查、负载均衡探测、合规扫描器的固定源

典型使用场景

  • 从边界流量中定位外部扫描源与扫描范围
  • 发现内网横向扫描:某台主机对同网段大量地址发起连接
  • 评估暴露面:统计被尝试攻击的端口分布
  • 判断扫描工具类型:端口顺序与并发度反映工具特征
  • 为加固与封禁提供依据:需要封禁的源与需要关闭的端口

聚合与判读

聚合与判读
# 统计每个来源发起的 SYN 数量(无 ACK 的首次握手)
tshark -r scan.pcap -Y 'tcp.flags.syn==1 and tcp.flags.ack==0' -T fields -e ip.src -e tcp.dstport | \
  awk '{a[$1]++} END{for(i in a) print a[i], i}' | sort -rn | head
# 统计每个来源访问过的目的端口去重数,数量大即扫描特征
tshark -r scan.pcap -Y 'tcp.flags.syn==1 and tcp.flags.ack==0' -T fields -e ip.src -e tcp.dstport | \
  sort -u | awk '{c[$1]++} END{for(i in c) print c[i], i}' | sort -rn | head
# Zeek:从 conn.log 看短连接与端口分布
zeek-cut id.orig_h id.resp_p duration < conn.log | awk '$3<0.1{c[$1]++} END{for(i in c) print c[i], i}' | sort -rn | head
# 内网横向:目的地址为内网的扫描源
zeek-cut id.orig_h id.resp_h < conn.log | grep -E '^10\.' | sort | uniq -c | sort -rn | head

扫描类型对照

类型流量特征判读要点
TCP SYN 扫描大量 SYN 无后续握手最易识别,端口覆盖广
TCP 连接扫描完成三次握手后立即关闭连接数高、时长极短、字节数小
UDP 扫描大量无响应请求关注 DNS、SNMP 等常见端口
定向探测只针对少量端口容易混入正常业务,需结合频率与来源
横向扫描内网地址互相探测源主机可能已被控制,优先处置
扫描源常是被控内网主机:发现内网主机对外或对内大量探测时,要把它当作受感染主机处置,而不是只封 IP 了事。
抓包点位置会影响可见性:单向丢包或镜像配置不全时只能看到一半流量,统计口径必须在报告中说明。

易错点

  • 把监控健康检查当扫描:负载均衡与监控系统会定时探测固定端口,先排除已知自动化来源
  • 只看连接数不看端口去重数:单端口高频连接可能是业务重试,端口种类多才是扫描特征
  • 忽略扫描目标范围:只记录来源不记录被探测网段,无法评估暴露面与影响
  • 抓包点盲区未说明:镜像或分流不全时统计偏低,结论要标注采集局限
  • 只做封禁不做溯源:扫描源可能是受害者主机,跳过内网溯源会漏掉真正的攻击路径

数据来源与参考

  • Nmap 文档(扫描类型原理)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌