nmap全端口扫描,全端最直接的口扫一条命令是 nmap -p- target。就这么简单,描的命令但跑起来可能要等十分钟甚至更久,全端尤其是口扫碰上网络延迟高的目标。
-p- 的描的命令意思是扫描1到65535所有端口。默认情况下nmap只扫最热门的全端1000个端口,这对日常渗透测试够用,口扫但真正的描的命令攻击面往往藏在那些不常见的端口号里。我遇到过一台机器,全端8080、口扫3306、描的命令6379全开着,全端但真正能打进去的口扫入口在端口31337,一个老旧的描的命令telnet服务。默认扫描根本不会碰到它。
全端口扫描的代价是时间。nmap每秒能发多少个包取决于你的带宽和目标主机的响应能力。局域网内扫一台机器可能只要几十秒,但跨公网扫一个带防火墙的主机,每个端口都要等超时,那就煎熬了。这时候得加点参数提速。
常用组合是 nmap -p- -T4 -sS target。-T4 是激进的时间模板,-sS 是SYN半开扫描,只发SYN包不建立完整连接,速度快得多。但注意,-sS 需要root权限,普通用户得用 -sT 全连接扫描,慢不少。
还有个技巧,用 --min-rate 强制指定发包速率。比如 nmap -p- --min-rate 5000 target,意思是最少每秒发5000个包。这个参数能大幅压缩扫描时间,但别设太离谱,否则目标主机的入侵检测系统会立刻报警。我见过有人用10000的速率去扫,结果目标直接ban了源IP,后面啥都扫不了。
全端口扫描的结果经常是海量信息,得学会过滤。用 -oN 或 -oG 把结果存成文件,然后grep出open状态的端口。或者直接在命令里加 --open,只显示开放端口,省得看一堆closed和filtered。
有个坑必须提:UDP端口。上面的命令全是TCP,UDP扫描得单独加 -sU,比如 nmap -p- -sU target。UDP扫描极慢,因为UDP协议无连接,nmap得靠ICMP端口不可达消息来判断端口状态,超时等待特别长。实际工作中,除非你有明确理由,否则别轻易全端口扫UDP,那太折磨人了。
最后说个实战经验。全端口扫描发现端口后,别急着高兴,先确认服务版本。用 nmap -sV -p 端口号 target 去探测具体服务,比如端口22是SSH还是别的什么伪装的。版本信息才是后续漏洞利用的关键。单纯知道端口开放没卵用。
对了,扫自己家的设备练手没问题,但别随便拿别人的IP开扫。这年头防火墙和日志审计都盯着呢,别把自己扫进局子里。真要练,用本地虚拟机或者Docker起个靶机,随便折腾。