网络扫描
网络扫描
linux 的 /etc/services 文件记录了端口号及对应的协议
端口3种状态:开放、关闭、过滤
主机2种状态:在线、离线
主机状态详细信息包含有:操作系统信息,例如版本;端口/应用/服务状态信息,即端口状态、应用程序版本。
- 主机扫描
- ARP扫描
发送ARP广播请求 - ICMP echo 扫描
即ping扫描 - ICMP sweep 扫描
并行多路 ICMP Echo 扫描 - ICMP Broadcast 扫描
将 ICMP 请求包的目的地址设为广播地址或网络地址,只是适用于 UNIX/LinUX 系统,Windows 会忽略这种请求包,同时这种扫描方式容易引起广播风暴。 - ICMP Non-Echo 扫描
即使对 ICMP 回应报文进行阻拦和过滤,我们还可以用 non-Echo ICMP 协议来收集系统的其他信息。例如 ICMP 类型为 13(时间戳)可以请求获取系统的当前时间,还有 ICMP 类型为 17(子网掩码请求)是用于无盘系统来获取它引导程序时的子网掩码。我们可以使用它来请求一个特定设备的子网掩码。 - 绕过防火墙和网络过滤设备
- 异常的 IP 包头
目标主机或过滤设备会反馈 ICMP Parameter Problem Error 信息 - 在 IP 头中设置无效的字段值
目标主机或过滤设备会反馈 ICMP Destination Unreachable 信息 - 错误的数据分片
反馈 ICMP Fragment Reassembly Time Exceeded 错误报文 - 通过超长包探测内部路由器
若构造的数据包长度超过目标系统所在路由器的 PMTU 且设置禁止分片标志,该路由器会反馈 Fragmentation Needed and Don’t Fragment Bit was Set 差错报文,从而获取目标系统的网络拓扑结构。 - 反向映射探测
该技术用于探测被过滤设备和防火墙保护的网络和主机,构造可能的内部 IP 地址列表,并向这些地址发送数据包,对对方路由器进行 IP 识别并路由,或根据是否返回错误报文来进行探测。
- 异常的 IP 包头
- ARP扫描
- 端口扫描
有开放扫描,会产生大量审计数据,容易被对方发现,但其可靠性较高;隐蔽扫描,能有效避免对方入侵检测系统和防火墙的检测,但这种扫描使用的数据包在通过网络时容易被丢弃,从而产生错误的探测信息;半开放检测,其隐蔽性和可靠性介于前两者之间。下面对端口扫描技术进行详细介绍- 开放扫描
- TCP Connect 扫描
- TCP 反向 ident 扫描
利用 TCP 的认证协议 ident 的漏洞。TCP 的认证协议是用来确定通过 113 端口实现 TCP 链接的主机的用户名。 - UDP 扫描
- TCP Connect 扫描
- 半开放扫描
- TCP SYN 扫描
- TCP 间接扫描
伪造第三方源 IP 发起 SYN 扫描。在实施前要求扫描主机必须能监听到跳板主机的通信流量,且广域网上的路由器必须允许伪造源 IP 地址。首先扫描主机伪造源 IP 地址向目标端口发送 SYN 包,若端口是开启的则会发送响应 SYN/ACK 包到其伪造的源 IP 地址主机,这是扫描主机会监听到该响应包,并继续伪造源 IP 地址发送 RST 包拆除连接。
隐蔽性好,缺点是对跳板主机的要求较高,广域网中受制于路由器的包顾虑原则。
- TCP SYN 扫描
- 隐蔽扫描
- TCP FIN 扫描
仅发送 FIN 包,它可以直接通过防火墙,如果端口是关闭的就会回复一个 RST 包,如果端口是开放或过滤状态则对 FIN 包没有任何响应。 - TCP Xmas 扫描
优点是隐蔽性好,缺点是需要自己构造数据包,要求拥有超级用户或者授权用户权限。 - TCP Null 扫描
关闭所有 TCP 报文头标记。只有关闭的端口会发送 RST 响应。其优点和 Xmas 一样是隐蔽性好,缺点也是需要自己构造数据包 - 分段扫描
将一个完整的 TCP 报文分割封装到 2 个或多个 IP 报文,分别独立发送。同样只有关闭的端口响应。优点是隐蔽性好,可穿越防火墙,缺点是可能被丢弃,某些程序在处理这些小数据包时会出现异常。 - ACK 扫描
构造并发送 ACK 报文,包过滤防火墙会检查 TCP 会话状态列表,若发现无匹配会话则有可能返回 RST 报文,正常主机的关闭端口则不会响应该报文。优点是可探测目标主机的包过滤规则。缺点是可能会被丢弃,且不能用于判断端口是否开放。 - IDLE 扫描
前提(1)跳板主机处于网络空闲状态;(2)跳板主机的 IP 序列号产生规则是连续递增的;(3)广域网上的路由器必须允许伪造源 IP 地址。
- TCP FIN 扫描
- 开放扫描
栈指纹 OS 识别技术
根据各个操作系统在 TCP/IP 协议栈实现上的不同特点,采用黑盒测试方法来研究其对各种探测的响应来形成识别指纹进行识别。根据采集指纹信息的方式可分为被动扫描方式和主动扫描方式。
ICMP echo request 的 TTL 字段
windows上TTl为 127,payload为6162636465666……
,长32字节
linux上TTL为64,payload为 908c8A4EEF000……
长 56 字节
两种操作系统的ip报文默认TTL字段不同,windows的为127,linux的为64,而ip报文经过的路由器一般不超过32个。
栈指纹 OS 识别技术的其他技术
- FIN 探测
发送一个 FIN 包给一个打开的端口,一般的行为是不响应,但某些实现例如 MS Windows, BSDI, CISCO,HP/UX,MVS,和 IRIX 发回一个 RST。 - BOGUS 标记探测
设置一个未定义的 TCP 标记(64 或 128)在 SYN 包的 TCP 头里。 - 不分段位
许多操作系统开始在送出的一些包中设置 IP 的 Don't Fragment 位。 - ACK 值
不同实现中一些情况下 ACK 域的值是不同的 。 - ICMP 错误信息终结
一些操作系统跟从限制各种错误信息的发送率。 - SYN 洪水限度
如果收到过多的伪造 SYN 数据包,这些操作系统会停止新的连接尝试,某些操作系统默认只处理 8 个伪造的 SYN 包。