问题描述
我已经使用nmap
选项对多个IP地址进行了--script ssl-enum-ciphers -p443 192.168.0.0/24
扫描。我还使用--script ssh2-enum-algos -p22
选项运行了非常相似的扫描,该扫描产生的输出格式相同。
我想快速分析此数据,并根据特定密码或算法的特定匹配将其归零。总体目标是运行临时内部漏洞评估,而无需访问Nessus或Rapid7 InsightVM等高级工具。
尽管nmap
支持-oX
选项以输出到XML,但我发现Microsoft Word,Excel或Web浏览器都不知道如何打开文件。 Microsoft产品不断产生xml格式不正确的错误。
因此,我尝试了nmap-parse-output code on Github。尽管它可以轻松地按端口对IP地址进行分组,但似乎无法进一步进一步为我分析密码或算法。
因此,现在我试图找出一种方法来手动解析这些数据块。 典型的结果可能包含以下格式的多个IP地址的数据(为简洁起见,以下示例stdout进行了编辑):
Nmap scan report for 192.168.1.1
Host is up (0.00064s latency).
PORT STATE SERVICE VERSION
443/tcp open ssl/http lighttpd
| ssl-enum-ciphers:
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
| compressors:
| NULL
| cipher preference: server
|_ least strength: A
Nmap scan report for 192.168.1.2
Host is up (0.00048s latency).
PORT STATE SERVICE VERSION
443/tcp open ssl/http nginx (reverse proxy)
| ssl-enum-ciphers:
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
| compressors:
| NULL
| cipher preference: server
|_ least strength: A
Nmap scan report for 192.168.1.3
....
Nmap scan report for 192.168.1.4
....
如何使用bash可用的标准应用程序编写脚本来遍历每个blob文本?我们不知道每个blob的长度,因此我需要在字符串上进行匹配“ Nmap扫描报告”或类似内容,然后提取每个匹配项之间的数据。
这样的事情会让我起步,但是它并不完整,并且实际上并没有单独地分隔每个blob:
for i in $(cat scan-results | grep "Nmap scan report for"); do more data analysis here; done
例如,我可能想在端口443上搜索支持RC4密码的任何IP地址,因此在“进行更多数据分析”中,我想运行:grep -i rc4
或者在使用ssh算法的情况下,我想确保所有cbc算法均已禁用,因此我可以运行:grep -i cbc
最终的目标是列出所有匹配的内容,以便我可以快速将匹配项归因于特定的IP地址。我不在乎结果外观是什么,我只是在乎快速找到结果。
任何帮助将不胜感激!
解决方法
没有更多示例数据,仅继续介绍有限的示例,请记住输出格式并不重要...
注意:我的示例数据文件nmap.dat
是OP提供的示例nmap数据的剪切粘贴副本。
我认为多模式grep
可能就足够了,例如:
# search for any IP address that support RC4 ciphers on port 443
$ grep -i "Nmap scan report for|443|RC4" nmap.dat
Nmap scan report for 192.168.1.1
443/tcp open ssl/http lighttpd
Nmap scan report for 192.168.1.2
443/tcp open ssl/http nginx (reverse proxy)
Nmap scan report for 192.168.1.3
Nmap scan report for 192.168.1.4
# want to ensure all cbc algorithms are disabled
$ egrep -i "Nmap scan report for|cbc" nmap.dat
Nmap scan report for 192.168.1.1
Nmap scan report for 192.168.1.2
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
Nmap scan report for 192.168.1.3
Nmap scan report for 192.168.1.4