CTF 信息收集第一步:Nmap 怎么扫才有用
拿到一个目标 IP 先做什么?Nmap 的扫描策略、服务识别和常见坑。
CTF 的题目里,只要给的是「一个 IP」,第一步基本都是扫端口。Nmap 是这个环节最常用的工具,但很多人只会 nmap -sV ip,扫完不知道下一步干嘛。
本文仅讨论 CTF 靶场和授权测试。
先搞清楚要扫什么
拿到目标 IP,目标通常有三类:
- Web 题:找 80/443/8080 之类的 HTTP 服务;
- 服务题:SSH、FTP、MySQL、Redis 等,看版本和配置;
- 内网/综合题:先摸清有哪些机器和开放端口,再横向。
所以扫描策略也不一样:Web 题可以只扫常见端口,综合题往往要全端口。
常用的几种扫法
快速看常见端口:
nmap -sV 10.0.0.5
全端口扫描(慢但全):
nmap -p- --min-rate 1000 10.0.0.5
带默认脚本和系统识别:
nmap -sV -sC -O -p- 10.0.0.5
参数解释:
-sV:识别服务版本,CTF 里最重要的一步,很多题就是打某个旧版本的漏洞;-sC:跑默认脚本,能发现一些常见配置问题;-O:识别操作系统;-p-:扫全部 65535 个端口;--min-rate:提速,但别开太大,容易丢包或被限速。
扫完看什么
不是扫到端口就完事,重点看:
- 服务版本:比如 OpenSSH 7.4、Apache 2.4.49,版本号直接关联已知漏洞;
- HTTP 服务的标题和目录:可以用
-sV的版本探测,或者直接 curl 过去看; - 非标准端口:很多题会把服务放在高位端口,全端口扫描就是为了这个;
- 脚本输出:
smb-os-discovery、http-title这类脚本能直接给出有价值信息。
脚本扫描
Nmap 的 NSE 脚本很好用:
nmap -p 80 --script http-title,http-headers 10.0.0.5
nmap -p 445 --script smb-vuln-* 10.0.0.5
CTF 里常见的是 http-*、smb-*、ftp-anon 这几类,能快速判断有没有匿名访问、目录列表、弱配置。
常见的坑
扫不到端口不等于没服务。 可能是被防火墙过滤、服务只监听 127.0.0.1,或者需要特定源 IP。可以换 -Pn(跳过主机存活检测)、-sS(半开扫描)再试。
UDP 扫描很慢。 -sU 扫全端口基本不现实,只针对 DNS、SNMP 这类服务做定向扫描。
扫描太响。 真实环境会触发告警,CTF 里一般无所谓,但有些题会做限速或封 IP,注意控制速率。
-O 需要权限。 系统识别要 raw socket,普通用户可能失败,加 sudo。
别只扫 TCP。 有些题的服务在 UDP 上,尤其是 DNS、DHCP 相关。
扫完之后的下一步
Nmap 只是「信息收集」的开始。扫到 Web 就上 Burp,扫到 SSH 就试弱口令或看版本漏洞,扫到数据库就看能不能未授权访问。
一个常见的 CTF 流程是:
nmap 扫端口 → 识别服务 → 针对服务找入口 → 拿 shell / 拿 flag
小结
Nmap 的核心不是背参数,而是根据题目类型选扫描策略:Web 题求快,综合题求全,服务题求版本。
另外,扫完记得把结果记下来(端口、版本、脚本输出),后面写题解或者继续利用时都会用到。
留言