1)TCP NULL端口扫描的特征:
扫描者发送一个TCP SYN包到目标主机的某个端口,但不设置任何TCP标志位(即flag为NULL)。
如果端口关闭,目标主机会回应一个RST(复位)和ACK(确认)的TCP包。
如果端口开放,目标主机会回应一个SYN-ACK包,但扫描者通常不会回应这个包,因为它只是想要检测端口是否开放,而不是建立连接。
2)Snort检测规则(针对NULL端口扫描):
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (flags:S; seq:0; ack:0; msg:"NULL TCP Port Scan"; sid:1000001;)
$HOME_NET 和 $EXTERNAL_NET 是Snort预定义的变量,分别代表内部网络和外部网络。
$HTTP_PORTS 是一个可选的变量,表示你想要监控的端口范围,但在此场景下,由于NULL扫描是针对任意端口的,所以你可能需要自定义一个端口范围或简单地使用any。
flags:S 表示只匹配设置了SYN标志位的TCP包。
seq:0 和 ack:0 表示只匹配序列号(seq)和确认号(ack)都为0的TCP包。
msg:"NULL TCP Port Scan" 是当规则触发时显示的报警信息。
sid:1000001 是规则的唯一标识符,用于在Snort中标识这个规则。