第四章 网络测量与行为分析方法
网络测量的起源和概念
网络测量概念
网络测量是按照一定的方法和技术,利用软件或硬件工具来量度网络的运行状态、表征网络特性的一系列活动的总和。
为什么要做网络测量
以TCP/IP架构为主的网络流量爆炸式,但是,IP网络存在一些固有的缺陷:
- 服务质量难以保证
- 无法确保网络安全
- …
如何检测这些问题?
如何解决这些问题?
网络测量的意义
- 深入认识网络特性的重要手段
- 进行网络管理的重要依据
- 进行网络优化设计的主要参考
- 能及时检测和预防网络攻击的发生
网络测量的应用
- 识别网络中的应用、服务、行为
- 实现异常的实时监控报警
- 分析定位问题根源
测量方式分类
主动测量
指由测量用户主动发起测量,将探测分组注入网络,根据测量数据流的传送情况来分析网络的性能。
- 优点:方便、安全
- 缺点:增加网络负载
被动测量
通过在网络中的链路或设备(如路由器、交换机等)上借助包捕获数据的方式来记录网络流量,分析流量,获知网络的性能状况。
- 优点:测量的是真正流量
- 缺点:测量范围受限
主动测量
由AMP(Active Measurement Project)组织提出的数据分析方法,由测量用户主动发起测量,将探测分组注入网络,根据测量数据流的传送情况来分析网络的性能。对于主动测量技术,探测源会通过一定的生成算法主动地向待测网络中发送探测报文,然后接收网络路径中节点回送的响应报文,最后对这些响应报文进行分析, 完成网络测量
主动测量分类
拓扑测量
目标:了解网络拓扑结构,用于资源调度和流量分配
- 拓扑数据的获取
- 拓扑特征的发现
- 拓扑建模
- 拓扑内部关系
网络性能测量
目标:监测网络带宽,吞吐量,时延,丢包,利用率和负载等情况
- 端到端带宽测量
- 可用带宽的测量 :测量端到端被背景流量(Background traffic)占用的剩余带宽
- 瓶颈带宽的测量 :测量源节点到目的节点之间
处理能力最低的链路所能达到的最大传输速率
- 逐跳带宽测量
- 主要是测量网络路径上各段链路的带宽参数
- 着重于测量逐跳链路的带宽值
- 延迟测量
- 解决两个待测节点之间本地时钟的不同步
流量测量
目标:用收发包特征探测网络或主机
- 地址空间利用率
- 调查漏洞影响力
- 通过利用网络来构造一些含有特定漏洞特征的数据包发送 给待测目标系统,模拟恶意攻击,根据目标系统对这种恶意请求数据包的响应情 况来进行判定
- 常见扫描工具:Nmap,Zmap,Masscan, Nessus,Retina,SAINT
- 目标存活性探测
- ICMP echo(ping),TCP UDP端口扫
- 对服务进行识别
- 在443和9001( Tor网桥和中继的公共端口)上执行了Internet范围内的扫描,对于开启此端口的主机,在Tor“v1握手”过程中使用支持的一组特定码套件执行TLS握手
主动测量优缺点
- 优点:
- 使用方便,适合端到端的网络性能测量,对于需要关心的内容只要在本地发送测试包观察网络的响应即可
- 缺点:
- 它增加了网络潜在的负载,尤其是如果该测量未经仔细设计,使产生的流量达不到最小,可能会对网络造成较大的影响;
- 主动测量会引起 Heisenberg 效应,即额外的流量可能会干扰网络,并使结果分析产生偏差。
- 测量范围受限,网络行为,内容审计测量困难
主动测量中的安全问题
- 对于主动测量技术,需要将测试流 量注入网络,这种测试流量有可能 会影响网络的拥塞情况,因此要谨 慎地控制所用的测试流量,避免因 测试而引起网络拥塞;
- 要避免主动测量技术被滥用,如利 用此技术进行伪造测试流量的拒绝 服务 (DOS)攻击。
常见的主动探测方法
端口扫描技术
端口扫描技术是指向目标主机的 TCP/IP 服务相应的端口发送探测包,记录目标主机的响应就可得知对方端口状态情况。
TCP端口扫描:基于TCP三次握手
TCP Connect扫描
分为
- TCP 全连接扫描
- TCP 半连接扫描
- TCP秘密扫描
TCP 全连接扫描由探测方发起,和目标主机进行 TCP 三次握手,如果目标主机的端口开放,则会完成一次完整的三次握手;TCP半连接扫描TCP SYN扫描只需要完成TCP三次握手的前两次就能判断目标主机端口是否开放,在进行第三次握手的时候,探测主机主动断开与目标主机的连接,TCP连接没有建立成功,所以说它是一种半连接扫描。
TCP 秘密扫描:TCP全连接扫描容易被在端口处所监听的服务日志记录。而秘密扫描是一种不被审计工具所检测的扫描技术。现有的秘密扫描有TCPFIN扫描、TCP ACK扫描、NULL扫描、XMAS扫描、TCP分段扫描和
SYN/ACK扫描等
- TCP ACK 扫描:向目标主机的一个 TCP 端口发送一个 ACK 数据包,如果目标主机回复了一个 TCP RST 数据包,则表明目标主机的该目的端口是处于开放状态,若没有接收到RST 数据包,则认为该目的端口处于关闭状态。TCP ACK 扫描也可以被用来检查目标主机的防火墙过滤规则,是基于状态的还是简单的分组过滤。
- TCP FIN 扫描又称为“秘密”扫描,其基本原理是首先向目标主机的端口发送FIN 数据包,然后根据目标主机的回复内容来判断出目标主机的端口状态。若目的端口处于关闭状态,则会回复一个 RST 数据包,否则不回复。但该方法有一个缺点,由于该原理不是 RFC规定,因而具体的协议实现取决于不同的操作系统。
- TCP Xmas 扫描是将 TCP 数据包中的三个标志位 FIN、URG 以及 PSH 都设置为 1 后,再发送给目标主机上的某一端口。如果目标主机返回一个 TCP RST 数据包,则认为目的端口处于关闭状态,反之则认为端口开放。
- TCP NULL 扫描是将 TCP 数据包中的所有六位标志位 ACK、FIN、RST、SYN、URG和 PSH 都设置为 0 后,再发送给目标主机上的某一端口。如果接收到一个来自目标主机的 TCP RST 数据包,则认为目的端口处于关闭状态,反之端口开放
UDP端口扫描:通常为UDP ICMP端口不可达扫描
扫描 UDP 端口更多的是进行推理,因为它不像 TCP 依赖目标主机对探测数据包的确认,而是收集目标主机发送的所有 ICMP 错误信息,因此通过检测存在 ICMP 响应数据包可判断端口关闭;没有检测到响应数据包则说明端口开放。
- ICMP_echo:向目标主机发送 ICMP EchoRequest 报文
- ICMP 非回显扫描:向目标主机发送ICMP
端口扫描技术 | 优点 | 缺点 |
---|---|---|
全连接扫描 | 扫描迅速、准确而且不需要任何权限 | 易被目标主机发觉而过滤掉 |
半连接扫描 | 一般不会被目标主机记录连接,有利于不被扫描方发现 | 在大部分操作系统下,扫描主机需要构造适用于这种扫描的IP包,而通常情况下,构造自己的SYN数据包必须有root权限; |
秘密扫描 | 能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽 | 扫描结果的不可靠性增加,而且扫描主机也需要自己构造IP包 |
UDP ICMP端口 不可到达扫描 | 可以扫描非TCP端口,避免了TCP的IDS | 由于是基于简单的UDP协议,扫描相对困难,速度很慢而且需要root权限 |
常见的主动探测方法
操作系统指纹识别探测
操作系统指纹识别探测主要用于获取目标主机操作系统类型等信息。常用的操作系统探测技术有应用层探测技术和 TCP/IP 协议栈指纹探测技术
- 应用层探测技术是利用应用服务程序对外提供服务时,有时返回的数据包中会包含服务程序本身的信息或者操作系统的信息,从而使得扫描者获得相关信息进行分析。
- TCP/IP 协议栈指纹探测技术利用了某些 TCP/IP 协议对于不同操作系 统响应不同的原理,通过向目标主机发送特定 TCP 数据包记录响应,从而来识 别目标主机的操作系统类型
- FIN探测:向目标主机上一个打开的 TCP 端口发送一个标志了 FIN 的数据包;
- SYN Flood 限度:向目标主机发送大量伪造的 SYN 数据包;
- BOGUS 标记探测:当向目标主机发送一个含有未定义的 TCP 标记的 SYN 数据包;
- 初始化序列号采样探测:TCP 包头中的序列号(ISN)初始值的变化规律;
- Don‘t Fragment 位探测:通过观察是否会设置IP 包头分片位(DF)来判断操作系统类型;
- TCP 初始窗口的大小检测:观察TCP窗口大小的初始值的设置;
- TCP 可选项探测:根据目标主机对 TCP 包头中的可选项值的设置来进行操作系统类型的判断;
- ACK 确认号探测:不同操作系统在设置 ACK 确认号时会有所不同;
- ICMP 错误消息抑制:部分操作系统对 ICMP 错误消息的生成速率进行了限制。
- ICMP 错误消息引用:不同的操作系统在回复 ICMP 错误消息中的信息引用内容以及比例不同
- ICMP 错误消息回射完整性:不同操作系统在回复 ICMP 错误消息时报头修改的内容不同;
- ICMP 地址屏蔽请求:对目标主机接收到 ICMP 地址屏蔽请求数据包是否产生应答来判断;
- TOS 服务类型:在进行回复 ICMP 端口不可达消息时,根据操作系统是否将 IP 头部中的服务类型(TOS)属性值设置为 0来判断;
- 片段处理:根据对重组处理接收到的重叠 IP 数据包片段后是否会覆盖进行判断。
主动式漏洞扫描
主动式漏洞扫描策略一般通过利用网络来构造一些含有特定漏洞特征的数据包发送 给待测目标系统,模拟恶意攻击,根据目标系统对这种恶意请求数据包的响应情 况来进行判定。这种基于网络的漏洞扫描方式主要被用来检测目标系统对外提供的各种服务中是否存在着漏洞,并和无需在目标系统上安装任何软件,因此更加简单和方便。
漏洞扫描常见工具
- X-scan :采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测
- Superscan:扫描器端口扫描工具
- Nessus:漏洞扫描器,特别针对于Unix操作系统
- SAINT:漏洞扫描工具
- Unicornscan:一款通过尝试连接用户系统(User-land)分布式TCP/IP堆栈获得信息和关联关系的端口扫描器。
- Scanrand是一款类似Unicornscan的无状态主机发现和端口扫描工具。
- THC Amap:一款应用程序指纹扫描器
- ··· ··
Traceroute
网络探测工具Traceroute:常用作网络拓扑发现工具
探测工具默认采用UDP协议,使用高端口33434作为探测报文的目的端口
• 发送TTL=1 的探测报文;
• 探测报文无法到达目的主机返回ICMP 超时报文
• 后续每次探测报文TTL+1
• 当TTL=5时,到达目的主机
• 目的主机端口不可达,返回ICMP端口不可达报文
Traceroute对每一跳路由器默认进行三次探测,在在网络状况比较好的时候往往一次探测就完成了测量工作,显然基于Traceroute的网络测量会带来不必要的网络开销。Traceroute为了把网络的瞬时负荷降到最低,所以会采用间隔时间段的方式对连续的网络路径进行探测,这影响到了探测的速度,不适合完成大规模的网络测量任务。
Nmap
-
Nmap于1997年9月推出,支持Linux、Windows、Solaris、BSD、Mac OS X系统,采用GPL许可证,最初用于扫描开放的网络连接端,确定哪些服务运行在那些连接端,它是评估网络系统安全的重要软件,也是黑客常用的工具之一。Nmap是开源工具,得到了众多网络安全专家和计算机技术爱好者的参与开发。
-
Nmap核心功能
- 主机发现:用于发现目标主机是否处于活 动状态;
- 端口扫描:用于扫描主机上的端口状态;
- 版本侦测:用于识别端口上运行的应用程 序与程序版本; 操作系统侦测:用于识别目标主机的操作 系统类型、版本编号及设备类型
- 防火墙/IDS规避和哄骗:Nmap提供多种 机制来规避防火墙、IDS的的屏蔽和检查 ,便于秘密地探查目标主机的状况;
- NSE脚本引擎:可以用来扩展高级的功 能如web扫描、漏洞发现和漏洞利用等;
-
Nmap基本命令和典型用法
语法: nmap [ <扫描类型> …] [ <选项> ] { <扫描目标说明> }
• 全面进攻性扫描(包括各种主机发现、端口扫描、版本扫描、OS扫描及默认脚本扫描):
nmap -A -v target_ip
• Ping扫描:nmap -sn -v target_ip
• 快速端口扫描:nmap -F -v target_ip
• 版本扫描:nmap -sV -v target_ip
• 操作系统扫描:nmap -O -v target_ip
• ··· ·· -
Nmap的图形界面Zenmap
Zenmap是Nmap官方提供的图形界面,是用Python语言编写而成的开源免费的图形界面;- 支持:Windows/Linux/Unix/Mac OS
- 简单常用的操作命令可以保存成为profile,用户扫描时选择profile即可;可以方便地比较不同的扫描结果;提供网络拓扑结构(NetworkTopology)的图形显示功能
Zmap
Zmap被设计用来针对整个IPv4地址空间或其中的大部分实施综合扫描,是由密歇根大学 Durumeric 带领的研究团队于2013年推出的一款高速网络扫描软件,号称可以充分地利用10 千兆以太网带宽在 45 分钟内扫描整 个 IPv4 地址空间。
Zmap为什么能在一个小时内就扫描整个互联网?
-
Zmap采取的是一种“无连接状态”的探测方法
- Zmap会像服务器发送请求,然后忘记这些请求。
- 它会对目标主机的 IP 值进行 Hash,将结果保存在数据包的序列号以及源端口中。当收到数据包后,将这个数据包的源 IP 进行 Hash 运算,与 ack 及目的端口的值进行校验来检测这个包是否是由于探测引起的相应包。
- 由于它不会进行连接状态的存储,减少了记录状态和资源开销,因此使得扫描速度大大提升。
-
Zmap结果输出
默认情况下,ZMap会输出不同IP地址的列表(例如,根据SYN ACK数据包的情况)。其输出结果还有几种附加的格式(如,JSON和Redis),可以用作生成程序可解析的扫描统计。 同样,可以指定附加的输出字段并使用输出过滤来过滤输出的结果。
Masscan
• Masscan号称世界上最快的互联网端口扫描器,可以在不 到六分钟的时间内扫描完整个 IPv4 地址空间的所有 IP。为了提高处理速度,masscan定制了TCP/IP栈,从而不影响本地其他TCP/IP的数据传输。
• 支持环境:Linux、MacOS
- Masscan 扫描使用说明
- Masscan 结果输出
- Masscan特点
Nmap、Zmap 及 Masscan 工具
被动测量方法
什么是被动测量?
通过在网络中的链路或设备上借助包捕获工具的方式来记录并分析网络
流量,获知网络性能。