我需要为以下数据包编写操作系统检测 (Nmap) 的 snort 规则:
ICMP echo (IE) IE 测试涉及向目标发送两个 ICMP echo 请求数据包。第一个设置了 IP DF 位,服务类型 (TOS) 字节值为零,代码九(即使它应该为零),序列号 295,随机 IP ID 和 ICMP 请求标识符, 和 120 字节的 0x00 用于数据有效负载。
第二个 ping 查询类似,只是使用了四的 TOS (IP_TOS_RELIABILITY),代码为零,发送了 150 字节的数据,并且 ICMP 请求 ID 和序列号从之前的查询值加一。
这两个探针的结果组合成一个包含 R、DFI、T、TG 和 CD 测试的 IE 行。仅当两个探针都引起响应时,R 值才为真 (Y)。T 和 CD 值仅用于对第一个探测的响应,因为它们几乎不可能不同。DFI 是针对这种特殊的双探头 ICMP 案例的定制测试。
这些 ICMP 探测紧跟在 TCP 序列探测之后,以确保共享 IP ID 序列号测试的有效结果(请参阅名为“共享 IP ID 序列布尔 (SS)”的部分)。
我写了以下规则:
alert icmp any any -> any any (msg:"i1"; sid:1000001; icmp_seq:295; tos:0; dsize:120; content:"|00|"; fragbits:D; icode:9;)
alert icmp any any -> any any (msg:"i2"; sid:1000002; icmp_seq:296; tos:4; dsize:150; content:"|00|"; fragbits:D; icode:0;)
这个规则是错误的。我不知道如何纠正它们,如果有人可以帮助我,我会很高兴。提前致谢。