端口扫描不是黑客黑客攻击的第一步,但它几乎是攻击最关键的一步。你打开一台目标机器,中进上面跑了什么服务、行端开了哪些门,口扫不扫一遍根本不知道。完成就像小偷踩点,黑客先绕楼走一圈,攻击看看哪扇窗户没关、中进哪个门锁是行端旧式的。端口就是口扫那些窗户和门。
一台服务器默认有65535个端口。完成真正在用的黑客可能就几个到几十个。22端口开着,攻击说明SSH服务在跑,中进黑客就知道可以尝试暴力破解或者找SSH的漏洞。3389端口开着,那是远程桌面,弱口令或者BlueKeep漏洞都能派上用场。80和443开着,Web服务,SQL注入、XSS、文件上传这些攻击面立刻浮现。端口扫描干的事,就是把这些入口一个个标记出来。
具体来说,扫描能完成几件事。
识别存活主机和开放端口。这是最基础的。ICMP ping不通不代表机器不在线,很多防火墙把ping包丢了。但TCP SYN扫描发过去,如果收到SYN-ACK,说明端口开着,主机也活着。我见过不少管理员以为关了ping就安全了,结果nmap一个-sS扫描,开放端口列得清清楚楚。
推断操作系统和服务版本。nmap的-O和-sV参数不是摆设。TTL值、TCP窗口大小、DF标志位这些细节能暴露操作系统类型。更直接的是服务 banner。你连上22端口,SSH服务会回一个版本字符串,比如SSH-2.0-OpenSSH_7.4。这个版本有没有已知CVE,一查便知。2018年那会儿,OpenSSH 7.4有个用户名枚举漏洞,扫到这个版本就等于找到了突破口。
发现非标准端口上的服务。很多人觉得改端口就安全了。把SSH从22改到22222,把数据库从3306改到13306。端口扫描不只看常见端口,全端口扫描-p 1-65535一跑,藏得再深也能翻出来。我做过一次内部渗透测试,目标把Tomcat管理后台从8080改到了18080,以为没人找得到。nmap全端口扫描,三分钟就定位了,弱口令直接进后台部署war包。
判断防火墙规则和过滤策略。扫描结果不只有“开放”和“关闭”两种。还有“过滤”。发SYN过去没回应,说明防火墙在丢包。发ACK过去回RST,说明状态防火墙放行了。这些细节能画出网络拓扑和访问控制列表的大致轮廓。知道哪些IP段能访问哪些端口,横向移动的路径就清晰了。
为后续攻击提供精确目标。扫描不是目的,是情报收集。拿到开放端口和服务版本列表,攻击者会去搜Exploit-DB、去GitHub找PoC、去暗网买0day。一个开放的Redis 6379端口没设密码,直接写SSH公钥拿root。一个开放的Elasticsearch 9200端口,数据全裸奔。端口扫描把这些暴露面从模糊变清晰。
扫描本身不违法,但未经授权的扫描在多数国家算犯罪预备。国内《网络安全法》第二十七条写得明白,不得从事非法侵入、干扰他人网络的活动。扫描算不算“侵入”有争议,但司法实践中,未经授权的端口扫描常被作为攻击行为的组成部分来认定。
技术上讲,端口扫描就是一次对话。你发一个包,对方回一个包,从回包的类型和时序里读出信息。防火墙、IDS、蜜罐都会干扰这个对话。高级攻击者会用慢速扫描、分片扫描、诱饵扫描来绕过检测。但核心逻辑没变:找到门,然后决定踹哪一扇。