网络扫描技术
作为网路对抗双方(进攻者和防御者)必须对网络中存在的漏洞或缺陷有详细的了解,因为这些漏洞或缺陷对进攻或
防御至关重要。而不同的系统和服务有不同的漏洞。网络扫描技术就是用于获得目标系统类型和服务类型这些信息的
关键技术。
网络扫描大都采用 TCP、IP、ICMP 等协议。通过向目标系统发送对这些协议特定字段填充特定数值的数据包,并查看
目标系统的响应获取有用信息。可以说扫描时一切网络入侵的基础。
3.1ping扫射
3.1.1ICMP 扫射
使用 ICMP 协议分组可以确定目标 IP 地址是否存活,这只要简单地向目标系统发送一个 ICMPECHO 请求(ICMP 类型
8)分组,然后等待片刻。
Pinger 是最快的 ICMP 扫射工具之一。
阻塞 ICMP 扫射,只要禁止 ICMPECHO 请求数据包从网络外部进入内部网络即可。
3.1.2广播 ICMP
向网络或广播地址发送 ICMPECHO 请求时获取整个目标网络地址映射信息的最简单的一种方法。这些请求将被广播到
目标网络中所有的存活的主机,二这些主机将发送 ICMPECHO 应答数据包到攻击者。
利用这种扫描技术我们可以区分 UNIX 系统和 windows 系统。对于 Unix 系统,它通常会对这些发送到网络地址的请求
数据包进行应答,二 windows 系统则是简单地忽略这些请求数据包。
3.1.3non-echoICMP
阻塞进入网络的 ICMPECHO请求数据包还不够,我们还可以使用非 ECHO 类 ICMP 协议分组来收集一个系统的不同信
息。ICMP 类型 13 消息(TIMESTAMP)和 TCMP 类型 17 消息(ADDRESSMASKREQUEST)就是很好的例子。
ICMP 时间戳请求和相应数据包允许系统查询另外一个系统的当前时间。而 ICMP 地址掩码请求和响应数据包用于无盘
系统在系统引导时获得网络的子网掩码。利用这种请求数据包,我们可以获得特定设备的网络掩码。
能够完成这类扫描技术的工具有:icmpush 和 icmpquery。
许多防火墙的配置都不允许任何 ICMPECHO 数据包通过,在这种情况下,非 ECHO 请求数据包就成了一种有效识别
主机系统的一种手段。即使 ICMP 通信无法通过边界路由器或者防火墙,仍然可以使用其他技术来确定目标系统是否存
活,尽管这些技术的准确性不如 ICMP 扫射。
3.1.4TCP 扫射
TCP 的连接建立过程称为“三次握手”,整个过程由三个数据包组成:
1)客户发送一个 SYN 置位的包,指定相应的服务器端口号和客户端的厨师序列号。
2)如果服务器的服务(或者端口)是激活的,服务器将用以个包含服务器序列号的 ACK、SYN 包来响应。如果由
客户端所指定的服务器端口没有激活(不处于侦听状态),服务器将发送一个 RESET 包,连接被复位。
3)如果客户端收到 ACK,SYN 包,则发送相应的 ACK 应答包,连接建立完毕。
那 系 统 在 扫 描 情 况 下 会 发 送 一 个 RESET 包 呢 ? 通 常 是 只 要 一 个 到 达 的 包 看 起 来 不 像 是 属 于 某 条 参 考 链 接
(REFERENCEDCONNECTION)的一个正确的包。所谓参考连接就是由目的 IP 地址和端口号,源 IP 地址和端口号确
定的连接。
而 TCP 扫射技术,发送的不是 ICMPECHO 请求分组,而是 TCPACK 或者 TCPSYN 分组(根据发送者是否拥有超级
用户权限而定)。端口号可以根据实际情况选择,通常是 21/22/23/25/80,特别是目标网络收到防火墙保护时更是如此。
如果发送端收到响应,通常意味目标系统是存活的。响应的具体内容根据所使用的目标操作系统、防火墙、路由器或
者分组过滤设备而定。需要注意的是,防火墙有可能伪造一个 RESET 分组,这样 TCP 扫射结果就变得不太可靠了。
Unix 下的 NMAP 和 HPING 都支持 TCP 扫射。HPING 甚至还支持额外的选项,即分片包,从而允许 TCP 分组通过某些
访问控制设备。
3.1.5UDP 扫射
这种方法依赖于 ICMP 端口不可到达信息,该消息是由一个关闭的 UDP 端口引起的。如果发送端在给目标系统的某个
感兴趣端口发送了以个 UDP 数据包后,没有收到 ICMP 端口的不可到达消息,那么我们可以认为该端口处于打开状态。