nmap端口扫描
凌晨两点,端口我盯着终端里滚动的扫描绿色字符,nmap正在对一台测试服务器做全端口扫描。端口屏幕上跳出的扫描每一个"open"都像一扇没锁的门——这感觉既刺激又有点毛骨悚然。端口扫描这事,端口说白了就是扫描敲门问路。你敲了65535扇门,端口看哪扇会应声而开。扫描
nmap最常用的端口就是TCP SYN扫描,也叫半开扫描。扫描它不完整建立连接,端口只发一个SYN包,扫描对方回SYN-ACK就说明端口开着,端口回RST就是扫描关闭。这招快,端口而且不容易被目标机器的应用日志记录。但别高兴太早,现在防火墙越来越精,很多会直接丢弃陌生IP的SYN包,你扫半天全是filtered,白忙活。
我见过最典型的误用,是有人拿nmap默认设置去扫生产环境。默认只扫1000个常用端口,结果漏掉了跑在8080上的内部管理系统。更糟的是,有人不加任何限速参数,直接-sS -p-,把人家出口带宽占满,运维半夜打电话来骂娘。工具本身没对错,用的人得有点常识——扫描前先想想,这流量会不会把对方搞挂。
讲个实际案例。上个月我帮朋友排查一台疑似被入侵的Linux服务器。常规检查没发现异常,进程、登录日志都干净。我抱着试试看的心态,用nmap对回环地址做了个-U(UDP)扫描。结果在端口161上发现SNMP服务开着,community string还是默认的"public"。这下真相大白——攻击者就是通过这个脆弱的SNMP服务进去的。端口扫描的价值不在于炫技,而在于帮你发现那些"你以为关了但其实开着"的洞。
nmap的脚本引擎(NSE)才是真正的瑞士军刀。比如--script=http-title能批量抓取Web服务的标题,--script=smb-enum-shares能枚举Windows共享目录。我常用它来快速判断目标是不是蜜罐——蜜罐通常会开放大量不常见的端口,而且响应速度异常均匀,不像真实服务那样有性能波动。当然,这招也不是百分百准,但至少能筛掉八成低端蜜罐。
有人觉得端口扫描是黑客才干的事,这话偏了。系统管理员做安全巡检,开发人员验证服务是否正常监听,都得靠它。关键在于,你得清楚自己在干什么,以及干这事有没有授权。我给自己定了个规矩:只扫自己拥有或明确获得书面许可的机器。这不是怂,是这行当的基本教养。
最后说个细节。nmap的-T参数(时序模板)常被忽略,其实很实用。T0是 paranoid 模式,每秒才发几个包,慢得像蜗牛,但几乎不会触发IDS告警。T5是 insane 模式,快是快,但很容易被目标察觉。我一般用T3默认值,除非目标网络状况特别差,才降到T2。扫描这事儿,快不一定好,稳才靠谱。毕竟,你真正想要的不是"扫完了",而是"扫准了"。
