凌晨两点,使用渗透扫描我盯着终端里滚动的进行扫描结果,第37次按下回车键。使用渗透扫描目标是进行一台部署在公网的ERP服务器,客户说“随便测测”,使用渗透扫描但我知道他们上周刚被勒索软件光顾过。进行nmap的使用渗透扫描默认SYN扫描只跑出80和443端口,这不够,进行远远不够。使用渗透扫描
真正有用的进行扫描从来不是一条命令跑完就收工。先做版本探测,使用渗透扫描nmap -sV --version-intensity 9,进行把强度拉到最高。使用渗透扫描结果出来了:Apache 2.4.49。进行这个版本有路径遍历漏洞,使用渗透扫描CVE-2021-41773,可以直接读文件。但别急,漏洞利用前得确认目标是不是真的存在这个漏洞——有时候版本号会被管理员手动改掉,骗的就是扫描器。
端口扫描只是开胃菜。UDP扫描很多人忽略,但SSDP、SNMP、TFTP这些服务往往藏在内网深处。nmap -sU --top-ports 100跑了一整夜,第二天早上发现161端口开着。SNMP默认community string是public,直接walk一下,整个网络拓扑都出来了。这比什么漏洞扫描都实在。
还有个细节容易被新手跳过:脚本引擎。NSE脚本库里藏着几百个现成的检测工具。nmap --script=http-title,ssl-enum-ciphers能快速判断Web服务指纹和加密套件强度。我见过一个金融客户,TLS 1.0都没禁用,用--script=ssl-enum-ciphers扫完,报告里直接标红——这比手动检查快多了。
扫描结果不是终点,而是起点。拿到开放端口后,得根据服务类型做二次探测。比如发现8080端口是Tomcat,就针对性跑--script=http-tomcat-cve-2017-12615;发现SSH版本老旧,就查有没有CVE-2020-15778的利用条件。nmap的价值在于帮你快速划定攻击面,但要想真正打进去,还得靠后续的漏洞验证和手工测试。
有个坑必须提:防火墙和入侵检测系统会干扰扫描结果。上次渗透测试,目标前面挂了FortiGate,默认SYN扫描全被拦,返回的端口列表干净得可疑。换成-sT全连接扫描,绕过SYN检测,结果立刻冒出十几个端口。所以别迷信一种扫描模式,多试几种,-sA、-sW、--scanflags这些冷门选项在对抗过滤时能救命。
最后说点实在的。nmap不是万能的,它只是帮你画地图。真正决定渗透成败的,是你对响应包的分析能力和对漏洞上下文的理解。扫描器报出高危漏洞,不代表能直接利用;报出低危项,也不代表安全。有一次我扫出445端口开放,但SMB签名强制开启,实际无法利用——这种误报需要人工判断。
工具是死的,人是活的。多琢磨输出格式里的时间戳和序列号,那些才是网络堆栈的真实指纹。下次跑完扫描,别急着看结论,先看看原始数据包长什么样。