题目
题目分析
本次题目对比第一次而言有不少难点:
- 两条规则 :两条规则同时匹配,才会命中某个报文流;
- 第一条规则中是对 “login” 或者 “Initial” 进行命中;
- has a " IPv4Address:Port " string (E.g.123.45.6.7:8080) in payload
第二条规则中的命中则是对一类地址进行匹配 ,
解决办法
逻辑或的内容匹配——login 或 Initial
用pcre实现
pcre:"login|Initial"
两条规则匹配:设置flowbits规则
第一条规则设置一个标志位 botlogin ,同时设定不发出警报
flowbits:set,botlogin;flowbits:noalert;
第二条规则中检测 标志位是否为1
flowbits:isset,botlogin;
IPV4地址匹配
IP地址:将0-255拆分成:0-9,10-99,100-199,200-249,250-255
(已将确定性强(更特殊)的部分放到整个正则表达式的最前面)[^2]
25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)
故IPV4地址则为:0.0.0.0—255.255.255.255则为
((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9][0-9]|[0-9])
端口号:0-65535
(与IP同理,拆成小项)
6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|\d{1,4}
故最终的匹配规则为:(IP地址:端口号)
pcre:"/((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9][0-9]|[0-9]):(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|\d{1,4})/"
提交答案
则最终的答案为:
alert tcp any any -> any 3399 (flags: A; msg: "bot founded"; pcre:"login|Initial";flowbits:set,botlogin;flowbits:noalert;sid: 1000002; )
alert tcp any any -> any 3399 (flags: A; msg: "bot founded";pcre:"/((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9][0-9]|[0-9]):(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|\d{1,4})/";flowbits:isset,botlogin;sid: 1000001;)