上QQ阅读APP看书,第一时间看更新
2.7 基于SCTP协议的活跃主机发现技术
2.7.1 SCTP协议解析
SCTP与TCP同属于传输层上的协议,这一层的协议数量比较少。其实SCTP协议与TCP完成的任务是相同的。但两者之间却存在着很大的不同之处。
首先,TCP协议一般是用于单地址连接的,而SCTP却可以用于多地址连接。
其次,TCP协议是基于字节流的,SCTP是基于消息流的。TCP只能支持一个流,而SCTP连接(association)同时可以支持多个流(stream)。
最后,TCP连接的建立是通过三次握手实现的,而SCTP是通过一种4次握手的机制实现的,这种机制可以有效避免攻击的产生。在SCTP中,客户端使用一个INIT报文发起一个连接,服务器端使用一个INIT-ACK报文进行应答,其中就包括了cookie(标识这个连接的唯一上下文)。然后客户端使用一个COOKIE-ECHO报文进行响应,其中包含了服务器端所发送的cookie。服务器端要为这个连接分配资源,并通过向客户端发送一个COOKIE-ACK报文对其进行响应。
2.7.2 使用SCTP协议进行主机发现
使用Nmap的选项-PY就可以向目标主机发送一个SCTP INIT数据包。
命令语法:Nmap -PY[端口1,端口2……] [目标]
例如对目标60.2.22.35进行一次SCTP协议类型的扫描。
Nmap -sn -PY 60.2.22.35
扫描的结果如下。
Starting Nmap 7.12 ( https://Nmap.org ) at 2016-09-16 12:58 Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn Nmap done: 1 IP address (0 hosts up) scanned in 3.76 seconds
扫描结果为该主机并不是活跃主机,这个结果是不正确的,主要原因是目标主机并不支持SCTP协议。目前支持这个协议的主机并不多,因此这种方法只能作为一种备用手段。
Nmap进行这种扫描所发出的数据包的格式如下。
Frame 44314: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface 0 Ethernet II, Src: 08:10:76:6a:ad:30 (08:10:76:6a:ad:30), Dst: D-LinkIn_b3:87:a9 (d8:fe:e3:b3:87:a9) Internet Protocol Version 4, Src: 192.168.0.5, Dst: 60.2.22.35 Stream Control Transmission Protocol, Src Port: 49996 (49996), Dst Port: 80 (80) Source port: 49996 Destination port: 80 Verification tag: 0x00000000 [Assocation index: 0] Checksum: 0xe88ac1dd (not verified) INIT chunk (Outbound streams: 10, inbound streams: 2048) Chunk type: INIT (1) Chunk flags: 0x00 Chunk length: 20 Initiate tag: 0xba3d34ac Advertised receiver window credit (a_rwnd): 32768 Number of outbound streams: 10 Number of inbound streams: 2048 Initial TSN: 2624285906