【免责声明】 本文档所涉及的技术、思路和工具,仅供网络安全学习、交流与防御研究使用。请勿用于任何未经授权的非法渗透测试或破坏行为。任何未经授权对真实目标系统进行扫描、探测、攻击的行为均属于违法犯罪。网络空间安全需要大家共同维护,请坚守白帽底线。
核心思想 :Nmap 提供了多种端口扫描方式。在实战中,选择哪种扫描方式,取决于你当前拥有的权限 、对扫描速度 的要求,以及最重要的------隐蔽性(是否会被目标防火墙或 IDS 发现)。
一、 TCP 扫描的核心方式:全连接 vs 半连接
Nmap 最常用、最基础的两种端口扫描方式是基于 TCP 协议的。理解它们的核心在于 TCP 三次握手的过程。
1. TCP 全连接扫描(Connect Scan)
-
命令 :
nmap -sT <目标IP> -p <端口> -
原理 :调用操作系统的
connect()系统调用,与目标端口完成完整的 TCP 三次握手。-
攻击机发送
SYN包。 -
目标返回
SYN+ACK(端口开放)或RST(端口关闭)。 -
若端口开放,攻击机发送
ACK建立连接,随后发送RST断开连接。
-
-
特点 :不需要 root 权限(普通用户可执行)。但因为完成了三次握手,目标主机的系统日志(如 Web 服务器日志、系统审计日志)会详细记录下攻击机的 IP 和连接行为,隐蔽性极差,速度较慢。
2. TCP 半连接扫描(SYN Scan / 隐蔽扫描)
-
命令 :
nmap -sS <目标IP> -p <端口> -
原理:不完成三次握手(因此称为"半连接")。
-
攻击机发送
SYN包。 -
目标返回
SYN+ACK(端口开放)或RST(端口关闭)。 -
关键点 :若收到
SYN+ACK证明端口开放,攻击机立即发送RST包中断连接 ,不进行最后的ACK确认。
-
-
特点 :Nmap 的默认扫描方式(需 root 权限) 。因为没有完成握手,连接未被完全建立,通常不会在目标应用层留下日志记录。速度快,隐蔽性高,是实战中最常用的扫描方式。
二、 进阶隐蔽扫描方式(绕过防火墙)
除了 SYN 扫描,Nmap 还支持构造各种畸形的 TCP 标志位进行扫描。这些扫描利用了一个 RFC 793 规范:对于关闭的端口,无论收到什么标志位的包都会返回 RST;对于开放的端口,则会丢弃这些异常包(无返回)。
-
FIN 扫描 :
nmap -sF <目标IP> -p <端口>(仅发送 FIN 标志位) -
Null 扫描 :
nmap -sN <目标IP> -p <端口>(不设置任何标志位) -
Xmas 扫描 :
nmap -sX <目标IP> -p <端口>(设置 FIN, PSH, URG 标志位,像圣诞树亮灯一样)
补充(重要避坑) : 这几种高级扫描仅对类 Unix 系统(Linux、Mac)有效 。因为微软的 Windows 系统在实现 TCP/IP 协议栈时没有完全遵循 RFC 793,无论端口开放与否,收到这种异常包都会统一返回 RST。因此,用这些方式扫描 Windows 机器,只会得到全封闭的假象。
三、 NSE 脚本引擎(Nmap Scripting Engine)
Nmap 不仅仅是个端口扫描器,它内置了强大的 NSE 脚本库(使用 Lua 语言编写),可以直接用于漏洞探测和密码爆破。
1. 漏洞扫描
-
命令 :
nmap --script=vuln <目标IP> -
作用 :调用
vuln分类下的所有脚本,对目标开放的端口进行已知漏洞探测。虽然不如专业的 Web 扫描器(如 AWVS)全面,但能快速发现一些经典的系统级漏洞(如 MS17-010)。
2. 密码爆破
-
命令 :
nmap --script=brute --script-args 'userdb=./userList.txt,passdb=./pwdList.txt' <目标IP> -p 22 -
解析:
-
--script=brute:调用暴力破解相关的脚本。 -
--script-args:传入脚本所需的参数。这里分别指定了用户名字典(userdb)和密码字典(passdb)的路径。 -
该命令常用于对 SSH(22端口)、FTP(21端口)、MySQL(3306端口)等进行弱口令爆破。
-
补充:防守方视角
-
针对全连接(
-sT) :蓝队在目标主机的系统日志(如/var/log/secure)或应用日志中,能看到大量来自同一 IP 的、瞬间建立又断开的完整 TCP 连接,特征非常明显。 -
针对半连接(
-sS) :应用层可能不记录,但在网络层,防火墙或 IDS 会记录下大量的SYN包,以及紧随其后的RST包,这属于典型的"SYN 洪泛"或扫描特征,极易触发拦截策略。 -
针对异常扫描(
-sF/-sN/-sX):安全设备检测到不符合正常业务逻辑的 TCP 标志位组合,会直接判定为攻击行为并阻断。 -
针对 NSE 脚本:如果目标部署了 WAF 或 HIDS(主机入侵检测),爆破行为会产生大量高频的失败登录日志,触发账户锁定或 IP 封禁。
因此,在授权实战演练中,推荐使用 -sS 配合 -T4 速度级别进行基础探测,避免无脑使用大字典进行爆破。