休闲

nmap工具

时间:2010-12-5 17:23:32  作者:娱乐   来源:百科  查看:  评论:0
内容摘要:第一次跑nmap是在一台老旧的CentOS虚拟机上,我敲了`nmap 192.168.1.1`,回车,屏幕上刷刷滚出几行字——端口22开着,80也开着,其余全被过滤。那一刻我才意识到,这台路由器比我想

第一次跑nmap是工具在一台老旧的CentOS虚拟机上,我敲了`nmap 192.168.1.1`,工具回车,工具屏幕上刷刷滚出几行字——端口22开着,工具80也开着,工具其余全被过滤。工具那一刻我才意识到,工具这台路由器比我想象中话多。工具nmap不打招呼,工具它只是工具把一台机器愿意暴露的东西摊在你面前。用久了会发现,工具它更像一把改锥,工具而不是工具什么黑客电影里的万能钥匙。

很多人把nmap简单理解成"扫端口的工具",这说法不算错,工具但太窄。它的正式名字是Network Mapper,1997年由Gordon Lyon(圈内叫Fyodor)发布,二十多年过去依然是网络探测领域的硬通货。默认情况下它做的事很朴素:发几个精心构造的包,看对方怎么回,再根据回应推断状态。TCP握手、ICMP回显、UDP响应,每种协议都是一条线索。nmap厉害的地方在于它把这些线索串起来,还给了你一堆参数去控制串的方式。

几个真正常用的姿势

日常最顺手的组合是`nmap -sS -sV -p- 目标`。`-sS`是SYN半开扫描,不发完整三次握手,速度快、痕迹轻;`-sV`做版本探测,能告诉你80端口后面跑的是nginx还是Apache,甚至具体版本号;`-p-`把1到65535全扫一遍,别偷懒只扫常见端口,我见过把SSH藏在22222上的服务器。速度上,`-T4`是多数场景的甜点区,`-T5`快但容易丢包误判,尤其在跨机房链路上。

有一次帮朋友查一台VPS,`-sV`报出3306端口跑着MySQL 5.5。这版本早停止维护了,我让他赶紧改绑定地址加防火墙。nmap的版本库(nmap-service-probes)是靠特征匹配的,偶尔会认错,比如把某些自研服务标成"unknown",但大多数时候它给的判断值得信。

脚本引擎才是隐藏关卡

真正让nmap从扫描器变成探测平台的是NSE,Nmap Scripting Engine。用Lua写的脚本,几百个现成的,放在`/usr/share/nmap/scripts/`下。`--script=http-title`能抓网页标题,`--script=ssl-enum-ciphers`能列出目标支持的加密套件,`--script=vuln`会跑一批漏洞检测脚本。我习惯先`nmap --script-help`看某个脚本干什么,再决定跑不跑。别一上来就`--script=all`,那既慢又吵,很多脚本对目标有侵入性,扫别人的机器可能惹麻烦。

写自定义脚本也不难。有次需要批量确认内网设备是不是某型号摄像头,我照着已有脚本改了个十几行的Lua,匹配HTTP响应里的特定字符串,跑一遍全网段,几分钟出结果。这种灵活性是纯端口扫描器给不了的。

关于合法性和心态

nmap本身中性,问题在于对谁用。扫自己的资产、授权范围内的渗透测试、CTF靶机,都没问题。扫别人公网IP,哪怕只是`-sS`,在很多司法管辖区也可能被认定为未授权访问的前置行为。我自己的规矩是:不扫不属于我的东西,除非有书面授权。工具越顺手,越要清楚边界在哪。

输出格式也值得提一句。`-oX`出XML,`-oG`出grepable格式,方便喂给后续脚本。我常把`-oX`的结果丢进Metasploit的db_import,或者用Python的libnmap解析,省得肉眼一行行看。命令行里`-v`加详细输出,`--reason`告诉你每个端口状态判断的依据,排查误报时很有用。

说到底,nmap是个诚实工具。它不替你下结论,只把网络层的回应摆出来。怎么解读、下一步做什么,还是人的事。我电脑里常年留着它,不是因为它酷,是因为每次打开终端敲下那条命令,都提醒我:网络从来不是黑盒,只是大多数人没去看而已。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap