nmap怎么用
我见过太多人把nmap当成一个“端口扫描器”,然后对着满屏的端口号发呆。这玩意儿真正的价值在于,它是一把能撬开网络拓扑结构的钥匙。你不需要记几百个参数,只需要理解它的核心逻辑:探测目标是否存活、开放哪些端口、运行什么服务、操作系统是什么版本。 先装它。Linux下一条 扫个网段试试。 端口扫描只是热身。真正好玩的是 扫描速度和隐蔽性之间要权衡。默认的扫描方式叫TCP SYN扫描( 脚本引擎( 最后说个容易踩的坑。很多人以为 别把nmap当成黑客专用工具。我拿它管理家里的NAS,检查新接入的智能设备是否安全;运维朋友用它定期扫描公司内网,找出私自搭建的FTP服务器。工具本身是中性的,关键看你怎么用。学这东西不需要啃完官方文档,打开终端,对着自己的路由器扫一遍,再对比着看输出结果,比什么教程都管用。apt install nmap或者yum install nmap,macOS用brew install nmap,Windows用户去官网下载安装包。装完打开终端,输入nmap 192.168.1.1——这是最基础的用法,扫单个IP。你会看到类似22/tcp open ssh的输出,这就是端口状态。别急着往下看,先停在这儿想一个问题:为什么是22端口?因为SSH服务默认监听22。nmap告诉你的是“这个端口有服务在听”,但具体是什么服务,它靠的是指纹库比对。nmap 192.168.1.0/24会扫描整个子网。我家里有台老路由器,用这个命令扫出来一堆奇怪设备——一个智能插座居然开了8080端口,上面跑着个弱口令的Web管理界面。这就是nmap的实际价值:让你发现那些不该暴露的东西。别指望一次扫完就完事,网络是动态的,服务随时在变。-sV参数,它会让nmap去探测服务版本。比如nmap -sV 192.168.1.5,输出会从open ssh变成open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5。这个信息量就大了——如果你知道OpenSSH 8.2有某个已知漏洞,那这台机器就是块肥肉。同理,-O参数做操作系统指纹识别,nmap -O 192.168.1.1能猜出对方是Linux、Windows还是思科交换机。注意,这玩意儿不是百分百准,但八九不离十。-sS),半开连接,不完成三次握手,所以目标机的日志里不会留下完整的连接记录。但如果你在公网扫别人的服务器,这种行为本身就不礼貌——我一般只拿自己的设备或者客户授权的目标做实验。想更快就加-T4(激进时序),想更慢更隐蔽就用-T2。有一次我扫一个内网段,用默认速度扫了十分钟没扫完,改成-T4后两分钟搞定,代价是容易被防火墙检测到。--script)才是nmap的终极形态。它内置了几百个脚本,能做的事远超扫描本身。比如nmap --script=vuln 192.168.1.5会调用漏洞检测脚本,直接告诉你目标可能存在的CVE编号。还有--script=http-title能抓取Web页面的标题,--script=smb-enum-shares能枚举Windows共享目录。我常用的是--script=default,它跑一组基础安全检测脚本,适合快速摸底。但注意,脚本跑多了会留下大量痕迹,真实渗透测试里要控制使用频率。nmap 127.0.0.1就是扫本机,其实它扫的是回环接口,只能看到本机自己开的服务。想扫局域网内其他机器,得用它们的真实IP。还有,防火墙会干扰扫描结果——如果目标开了iptables,你看到的端口状态可能是filtered,这时候别慌,换个端口范围再试,或者用-Pn参数跳过主机存活检测(因为某些防火墙会丢弃ICMP包)。