ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

网络安全实战:端口扫描深度实战——Nmap 脚本、Masscan 与防火墙规避

网络安全实战:端口扫描深度实战——Nmap 脚本、Masscan 与防火墙规避 前言数字海洋中的灯塔看守人如果把互联网比作一片浩瀚无垠的黑暗海洋那么每一台服务器就是漂浮在海面上的孤岛。而端口就是岛屿上那一扇扇窗户和门。对于渗透测试人员而言端口扫描就是我们登岛前的第一步侦察。我们站在黑暗的船头举起望远镜试图看清岛上的防御工事哪扇门是虚掩的哪个窗口透出了灯光哪里又架设着机枪阵地很多初学者认为端口扫描不就是nmap IP吗跑一遍看到 80、22 开着完事。这种想法在实战中不仅低效甚至可能致命。盲目的全连接扫描会瞬间触发目标的入侵检测系统IDS让你还没登岛就被守卫发现而粗暴的高频发包甚至会导致目标服务拒绝响应让你在红队对抗中瞬间“出局”。真正的端口扫描实战是一场关于速度、隐蔽与深度的平衡艺术。它需要你像狙击手一样静默像机关枪一样狂暴又像侦探一样洞察入微。本文将深入解剖 Nmap 的脚本引擎、Masscan 的极速原理以及对抗防火墙的各种隐身技巧带你走进专业红队的侦察世界。第一章 扫描的底层逻辑从三次握手到侦察学在谈工具之前我们必须先搞清楚一件事扫描的本质是什么1.1 扫描的物理动作无论什么工具端口扫描的核心逻辑都是利用 TCP/IP 协议的交互特征。TCP SYN 扫描这是 Nmap 的默认扫描方式。它发送 SYN 包请求建立连接。如果目标回 SYNACK说明端口开放如果回 RST说明关闭如果没反应说明被过滤。因为它不需要完成完整的三次握手不发最后的 ACK所以很多系统不会记录这种连接被称为“半开扫描”相对隐蔽。TCP Connect 扫描完整的 TCP 三次握手。这种方式最容易被日志记录但在你没有 Root 权限无法发包原始套接字时只能用这个。UDP 扫描UDP 是无连接的扫描起来慢且复杂。通常依靠 ICMP 端口不可达的回包来判断端口关闭。1.2 扫描的“代价”每一次扫描都是在向网络中注入流量。实战铁律流量越大特征越明显越容易被发现。当我们对全网段进行大规模扫描时不仅要考虑目标的反应还要考虑中间链路设备的承受能力。很多新手拿着Masscan对着内网狂扫结果导致核心交换机 CPU 飙升全网瘫痪这属于典型的“友军误伤”。第二章 Nmap 脚本引擎NSE从“活着”到“是什么”Nmap 之所以被称为“扫描之王”绝不仅仅是因为它发现端口准更因为它拥有一个强大的武器库——Nmap Scripting Engine (NSE)。只扫描端口而不跑脚本就像进了宝山只捡了块石头。NSE 让 Nmap 从一个“端口探测工具”变成了一个“漏洞验证框架”。2.1 脚本分类与实战选择Nmap 内置了数百个脚本位于/usr/share/nmap/scripts/目录下。对于实战人员我们不需要全跑而是要根据阶段精准打击。Discovery发现类用于收集更多信息。例如http-title获取网页标题http-headers获取响应头。这在快速资产画像时极有用。Version版本探测虽然-sV能探测版本但某些脚本探测得更深。比如http-git可以探测.git泄露。Vuln漏洞探测这是红队的最爱。vuln类别下包含了大量针对已知 CVE 的验证脚本。Auth/Brute认证与爆破虽然 Nmap 不是爆破神器但对于一些非 HTTP 服务如 FTP、SSH、RDPnmap的爆破脚本依然可以作为备选方案。2.2 实战指令集锦场景一快速 Web 资产画像拿到一个 IP 段我想知道哪些机器开了 Web 服务标题是什么甚至有没有 WordPress。nmap-sS-sV-p80,443,8080,8443--scripthttp-title,http-headers,http-enum192.168.1.1/24这里-sS是 SYN 扫描-sV探测版本--script调用了三个常用脚本。http-enum特别好用它能自动枚举常见的 Web 目录和 CMS 指纹。场景二SMB 漏洞“核检查”在内网渗透中拿到一台 Windows 机器第一件事就是检查 MS17-010永恒之蓝。nmap-p445--scriptsmb-vuln-ms17-010192.168.1.100如果返回VULNERABLE那你接下来的渗透测试就变得极其简单了。场景三暴力破解谨慎使用虽然不推荐但在无其他工具时nmap-p22--scriptssh-brute --script-argsuserdbusers.txt,passdbpasses.txt192.168.1.100这会尝试爆破 SSH。注意这种暴力行为极易触发封禁。2.3 自定义脚本打造专属匕首有时官方脚本无法满足需求。比如目标有个特殊的 HTTP 接口你想批量检测它是否存在未授权访问。写一个 NSE 脚本并不难它是 Lua 语言编写的。一个简单的框架portrule定义触发条件如端口是 80。action定义动作发送 HTTP 请求判断响应。实战心得我通常会写一些针对性的指纹识别脚本比如识别某个特定 ERP 系统的版本或者识别某个 Weblogic 的漏洞环境。将这些自定义脚本放入目录Nmap 就能瞬间化身成你的专属扫描器。第三章 Masscan互联网的“地毯式轰炸”如果说 Nmap 是精准狙击那么 Masscan 就是地毯式轰炸。3.1 异步扫描的极速原理Masscan 的速度之所以能达到每秒数百万包是因为它采用了异步传输模式。它根本不在乎 TCP 状态机只管发 SYN 包。至于回不回包那是接收线程的事。这种“发后即忘”的模式让它可以在极短时间内扫遍全网。代码层面的魔法Nmap 是一个连接一个连接地处理维护着复杂的内核态/用户态交互。而 Masscan 使用了自定义的 TCP/IP 协议栈绕过了操作系统的内核瓶颈直接在用户态发包。3.2 Masscan 的正确打开方式在实战中我们通常不会直接用 Masscan 的输出结果因为它的信息太单薄只有端口状态。我们用它做**“过滤器”**。工作流 SOP广域探测使用 Masscan 快速发现全网段的开放端口。masscan192.168.0.0/16-p80,443,8080--rate10000-oLmasscan_result.txt这里--rate控制速率。注意在内网扫描时千万不要设太高否则你的网卡或者交换机可能会先崩掉。建议先从 1000 开始试探。数据清洗Masscan 的输出格式比较杂乱需要用grep、awk等工具提取出 IP 和端口。深度探测将清洗后的 IP:端口列表喂给 Nmap。nmap-sS-sV-iLtargets.txt-pU:端口列表这样就避免了 Nmap 去扫那些关闭的端口极大地节省了时间。3.3 速度的代价Masscan 的快是有代价的。丢包率发包太快丢包是常态。Masscan 默认配置可能漏扫建议多次扫描去重。被拉黑你的 IP 会瞬间成为靶场公敌。很多 ISP 会直接切断你的网络。破坏性某些老旧的嵌入式设备如打印机、路由器处理不了高并发 SYN 包可能会直接死机。实战建议Masscan 适合公网大规模资产摸底或者内网核心网段快速摸排。但在核心业务区请慎用。第四章 防火墙规避隐身衣与迷彩服现在的网络环境裸奔的扫描等于自杀。防火墙和 IDS 处处设防如何骗过守卫是高阶实战的必修课。4.1 分片扫描切碎你的指纹防火墙通常会检测完整的 SYN 包特征。如果我们把数据包切碎分成几个小片段发送防火墙可能因为无法重组数据包而放行但目标主机的 TCP 协议栈会尝试重组从而响应。指令nmap-f192.168.1.1-f选项启用分片。它会将数据包拆分成 8 字节的小片段或 16 字节取决于 MTU。局限性很多现代防火墙已经具备分片重组能力或者直接丢弃分片包。4.2 诱饵扫描混在人海里这是我最喜欢的隐身术。利用伪造的源 IP 地址与真实 IP 混在一起发包目标的 IDS 会看到来自四面八方的扫描无法判断谁是真凶。指令nmap-DRND:10192.168.1.1或者指定诱饵nmap-D1.1.1.1,2.2.2.2,192.168.1.100192.168.1.1其中192.168.1.100是你的真实 IP。注意诱饵 IP 必须是存活的否则目标回包时如果只回给假 IP你就收不到结果了。这是一种“损人利己”的战术可能会引发对无辜诱饵 IP 的 DDoS 回应请务必在授权范围内使用。4.3 源端口欺骗伪装成“友军”很多防火墙配置了宽松规则允许特定源端口如 DNS 的 53 端口、HTTP 的 80 端口的流量通过认为那是合法的业务回包。我们可以欺骗防火墙nmap --source-port53-p80192.168.1.1将源端口伪装成 DNS 服务。这在对抗某些状态检测防火墙时非常有效。4.4 空闲扫描借刀杀人的终极奥义这是 Nmap 最具黑科技感的扫描方式。它利用 TCP 序列号预测漏洞借助一台“僵尸主机”来扫描目标真正的攻击者全程不与目标通信。原理简述攻击者与僵尸机保持连接获取其当前的 TCP 序列号。攻击者伪造僵尸机 IP 向目标发 SYN 包。如果目标端口开放会向僵尸机回 SYNACK。僵尸机收到后会回 RST因为它没发过连接请求序列号变化。如果目标端口关闭目标向僵尸机回 RST僵尸机无反应序列号不变。攻击者通过探测僵尸机的序列号是否增加间接判断目标端口是否开放。指令nmap-sIzombie_ip192.168.1.1实战价值这种扫描在目标侧完全看不到攻击者的 IP是真正的“完美犯罪”。但前提是你得找到一台存在序列号预测漏洞的僵尸机通常是老旧的打印机或路由器。4.5 速度与时序的博弈有时候不需要高深的技术只需慢下来。防火墙往往对高频连接敏感。我们将扫描速度降至最低混杂在正常的网络流量中。nmap-T0192.168.1.1-T0模式下Nmap 每隔 5 分钟才发一个包。这种“慢动作”足以让大部分基于流量的 IDS 失效。虽然耗时极长但在高价值目标的渗透中耐心是最锋利的武器。第五章 数据的归宿从结果到情报扫描结束了面对满屏的文本输出真正的分析才刚开始。5.1 输出格式的艺术Nmap 提供了多种输出格式但我强烈推荐使用-oA参数它同时输出三种格式-oN标准文本适合人眼阅读。-oXXML 格式适合导入其他工具如 Metasploit。-oGGrepable 格式适合用 Linux 命令行管道处理。nmap-oAscan_result192.168.1.15.2 态势感知平台扫描结果不应该是一次性的。在大规模红队项目中我们会将结果导入态势感知平台如 Maltego、Shodan 的私有版、或者自建的资产管理平台。我们不仅关注端口“开没开”更关注端口的变化昨天没开 3389今天开了是不是运维在搞事情指纹的变化Nginx 版本从 1.18 升级到了 1.20是不是修补了 CVE服务关联这台服务器的 80 端口跳转到了另一台服务器的数据库这之间的拓扑关系是什么5.3 扫描的终点当你拿到了一张清晰的资产地图知道了哪台机器开着弱口令的 FTP哪台机器跑着老版本的 IIS哪台机器的 445 端口暴露在公网这场端口扫描的战役才算真正结束。端口扫描是渗透测试的基石也是最考验基本功的环节。工具只是兵器真正的武者懂得在什么时间、以什么速度、用什么招式去揭开目标的神秘面纱。从 Nmap 的脚本引擎到 Masscan 的极速扫描再到各种眼花缭乱的规避技术这一切的核心都在于不仅要看清目标还要在看清目标的过程中保护好自己。
返回列表