Shenetworks推荐:像专业人士一样使用Nmap
某天工作中,我接到一个案例:客户无法连接到新服务器的管理接口。我让客户更改管理接口的IP地址后尝试连接,测试成功了。客户很困惑,询问为什么原始IP地址无法使用。我让他们ping旧地址,客户惊讶地收到了响应——该IP地址已分配给网络中其他位置的设备。虽然现在有新程序可以帮助管理IP地址和范围,但这仍然是网络中的常见问题,通常由文档不完善和配置陈旧引起。客户随后需要追踪这个非法IP地址。你会从哪里开始这个过程?我认为Nmap是完美工具。
Nmap在防御者和攻击者中都极受欢迎。它最初由作者Gordon “Fyodor” Lyon于1997年在Phrack杂志上发布。自发布以来,Nmap已发展成更复杂、更强大的工具。
作为网络工程师,我使用Nmap扫描库存并检查可用性和运行时间。作为渗透测试员,我使用Nmap收集目标信息,通过一些脚本,Nmap的用途远不止侦察。
由于Nmap有太多选项,解析它们以查看哪些对你有益可能会让人不知所措。下一节讨论我经常使用和推荐的Nmap选项和脚本。
基本的默认Nmap扫描会探测目标并检查响应。一旦Nmap验证主机可达,就会探测开放端口。默认Nmap扫描很有用,但通过一些选项,我们可以获得更多信息。
Nmap [扫描类型] [选项] {目标}
图1:Nmap帮助页面选项列表
-sL – 列表扫描
你可能想审计一系列IP地址,知道其中一些未使用。使用带-sL选项的Nmap会探测给定范围内的每个IP地址并进行反向DNS查找。域名通常有助于识别有价值的目标。结果将是可达主机及其域名的列表(如果适用)。
-sV – 版本发现
Nmap选项-sV会尝试发现主机上每个开放端口的版本信息。这些信息在任务中极其有价值。这将帮助你识别正在探测的主机类型和版本号。识别版本有助于优先处理有趣目标并识别可用漏洞。
-Pn – 跳过主机发现
网络管理员禁用ICMP协议或过滤到特定主机的流量很常见。选项-Pn跳过主机发现,假定每个IP地址都分配给主机且在线。使用此选项,Nmap可以发现更多目标,但会显著增加扫描时间。
-p- – 扫描所有端口
默认情况下,Nmap扫描1000个端口。某些服务可能开放但无法通过标准扫描发现。使用-p-选项将扫描每个端口1-65535。此选项会增加扫描持续时间。
-T4 – 激进扫描
-T4会减少扫描完成时间,如果你有快速可靠的连接,应使用此选项。
-oX {文件路径、文件名和类型} – 将结果输出到XML文件
我建议将Nmap输出保存到文件中,以便在任务后期参考。-oX选项将以XML格式保存输出。保存为XML可以轻松解析结果。当查找具有特定开放端口(如SQL或SMB)的主机时,这种解析很有帮助。
-sC – 脚本扫描
渗透测试员使用各种专用工具,但有些人可能不知道相同的任务可以通过额外的Nmap脚本完成。使用Nmap脚本快速高效。通过Nmap脚本引擎(NSE),用户可以利用各种目的的脚本集合,如发现开放端口和协议的更多细节以进行进一步枚举和暴力破解。
以下是几个Nmap脚本及其描述。这些是我经常使用的脚本。完整可用脚本列表请见:https://nmap.org/nsedoc/scripts/
- sshv1:检查SSH服务器是否支持过时且安全性较低的SSH协议版本1。
- DHCP discover:向UDP 67上的主机发送DHCPINFORM请求,以获取所有本地配置参数而不分配新地址。
- ftp-anon:检查FTP服务器是否允许匿名登录。
- ftp-brute:对FTP服务器执行暴力密码审计。
- http-enum:枚举流行Web应用程序和服务器使用的目录。
- http-passwd:通过尝试检索etc/passwd或\boot(ini)来检查Web服务器是否易受目录遍历攻击。
- http-methods:通过发送OPTIONS请求找出HTTP服务器支持的选项。
- ms-sql-info:尝试确定Microsoft SQL服务器实例的配置和版本信息。
- mysql-enum:利用漏洞对MySQL服务器执行有效用户枚举。
- NSF-showmount:显示NFS导出,类似于showmount -e命令。
- rdp-enum-encryption:确定RDP服务支持的加密级别。
- smb-enum-shares:尝试列出共享。
- tftp-enum:通过测试常见文件名列表来枚举TFTP文件名。
Nmap是一把瑞士军刀,在紧急情况下可以替代你的一些常用工具。还有更多Nmap脚本可供探索和使用。有关Nmap的更多信息,请查看其专用网站和GitHub https://github.com/nmap/nmap 了解如何为项目做贡献。