扫描结果差异化分析

对于所有客户机,我们要做的第一件事就是设置不同的监视脚本。这些通常只是一些能快速完成的 bash 脚本,它们每天通过电子邮件向我们发送客户机网络的差异。当然,在扫描之前,确保你有适当合法的授权来执行扫描。

对于一般不太大的客户机网络,我们设置简单的 cronjob 来执行外部端口差异化分析。例如,我们可以创建一个快速的 Linux bash 脚本来完成这项艰巨的工作(请记住替换下面脚本中的 IP 范围):

  1. - #!/bin/bash
  2. - mkdir /opt/nmap_diff
  3. - d=$(date +%Y-%m-%d)
  4. - y=$(date -d yesterday +%Y-%m-%d)
  5. - /usr/bin/nmap -T4 -oX /opt/nmap_diff/scan_$d.xml 10.100.100.0/24 ><br>
  6. /dev/null 2>&1
  7. - if [ -e /opt/nmap_diff/scan_$y.xml ]; then
  8. - /usr/bin/ndiff /opt/nmap_diff/scan_$y.xml /opt/nmap_diff/scan_$d.xml ><br>
  9. /opt/nmap_diff/diff.txt
  10. - fi

译者注:上面这段脚本中使用了正则表达式。所以本小节的英文名字叫 Regular Nmap Diffing。

这是一个非常简单的脚本,它每天用默认的端口运行 nmap,然后使用 ndiff 比较结果。然后,我们可以获取这个脚本的输出结果,并让它把每天发现的新端口及时通知我们的团队。

图片名称

在上一本书中,我们着重讨论了 Masscan 的好处,以及它比 nmap 的速度快多少。Masscan 的开发者说,如果你的网络带宽足够大,你可以在6分钟内扫描完毕整个互联网。所以说,当扫描大的范围时,Masscan 是很可靠的。Masscan 对我们最初的侦察很有用,但通常不用于比较差异。

实验:
本书中的实验是选修的。在某些部分中,我添加了一些实验方便你进行测试或者扩展更多的领域。这都是基于读者的个人兴趣的,如果对某方面感兴趣,我强烈推荐你花时间改进我们的工具,并与社区共享它。
建立一个更好的网络 diff 扫描器:

  • 构建一个比默认的 nmap 更好的端口列表(例如,nmap 默认的漏掉一些端口,比如 Redis 6379/6380 和其他端口)
  • 实现 nmap banner
  • 保持对端口的历史跟踪
  • 建立电子邮件提醒/通知系统
  • 参考 diff Slack 警报