我有兴趣检测针对(我的)GNU/Linux 主机的任何 nmap 扫描。我想将 snort 与 barnyard2 和 snorby 结合使用,或者如果可能的话对 snort Unified2 日志执行基于签名的检测。我注意到执行 nmap -A 扫描时会弹出与以下内容类似的数据包:
[ 0] 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 08 00 ................
[ 16] 45 00 00 A2 5C 63 40 00 78 FF 39 03 B9 1E A6 45 E...\[email protected]
[ 32] 05 27 08 D3 50 72 69 6F 72 69 74 79 20 43 6F 75 .'..Priority Cou
[ 48] 6E 74 3A 20 39 0A 43 6F 6E 6E 65 63 74 69 6F 6E nt: 9.Connection
[ 64] 20 43 6F 75 6E 74 3A 20 38 0A 49 50 20 43 6F 75 Count: 8.IP Cou
[ 80] 6E 74 3A 20 32 0A 53 63 61 6E 6E 65 72 20 49 50 nt: 2.Scanner IP
[ 96] 20 52 61 6E 67 65 3A 20 38 34 2E 32 34 32 2E 37 Range: 84.242.7
[ 112] 36 2E 36 36 3A 31 38 35 2E 33 30 2E 31 36 36 2E 6.66:185.30.166.
[ 128] 36 39 0A 50 6F 72 74 2F 50 72 6F 74 6F 20 43 6F 69.Port/Proto Co
[ 144] 75 6E 74 3A 20 31 30 0A 50 6F 72 74 2F 50 72 6F unt: 10.Port/Pro
[ 160] 74 6F to
上面的包是什么?它仅与 nmap 有关吗? (我对此非常怀疑)
不幸的是,使用 sfPortscan 配置的 snort 并不像我希望的那样有效和/或准确(检测到扫描,但由于某种原因我看不到有关它的详细信息,例如源/目标 ::https://i.stack.imgur.com/uqess.png,https://i.stack.imgur.com/faulS.png。我的 iptables 配置了 --hitcount 和 --seconds,这使得“stream5:重置窗口外”弹出,因此我可以检测到一些扫描。)。
我在这里有什么选择?
答案1
您看过新兴威胁规则集吗?具体来说他们的扫描规则?
您永远无法以 100% 的准确度检测检测扫描。一般来说,阈值处理是有用的。在大型网络的边界防火墙上,我会查看某个远程主机在一定时期内联系的不同主机的数量。在单个主机上,给定时间段内该主机上不同端口的数量。在 iptables 方面,一个不错的选择是记录 DROPed 数据包。你也可以用 snort 来做到这一点。基本思想只是监视一些您没有打开的端口。根据定义,这些端口上的联系是未经请求的。 (好吧,这与检测 nmap 扫描的目标有点偏离......)
答案2
您想将检测 nmap 扫描作为学术练习,还是尝试实际检测正在执行端口扫描的攻击者?后者可能非常困难,因为攻击者可以减慢扫描速度和/或将扫描分布到多个客户端,以击败您可能实施的任何启发式方法。所以,请注意,如果这是你的目标,你就会“掉进兔子洞”:-\
其次,您是否只是想拥有能力检测扫描或者您对底层感兴趣细节如何才能做到这一点?换句话说,你只是想完成这件事还是正在研究这个主题?
对于前者,您可以安装各种 IDS 工具,例如 Snort 和 Bro,以及许多商业产品。但请注意,它们可能只能检测某些类型的扫描,例如单调递增的 TCP 端口号扫描。
对于后者,如果您想了解典型的 nmap 扫描生成的网络流量,以便您可以查找这些模式,那么我建议运行 nmap - 也许在少量端口上 - 并使用以下命令检查它生成的流量嗅探器,例如 tcpdump。然后,您可以在您正在构建的任何系统中实施签名/规则。
希望这可以帮助!
答案3
被动操作系统标识符,p0f,可以识别nmap
扫描,至少是某些类型的扫描。请记住,它nmap
可以执行许多不同类型的扫描,从简单的 ping 扫描到非常奇特的扫描。你所问的可能不是100%可能的。