游客发表
防火墙把80端口封了,绕过nmap扫出来就是防火filtered。这事我遇到过不下二十次。墙扫客户拍着桌子说“端口都关了”,绕过我随手换了个扫描方式,防火结果22、墙扫3306、绕过8080全冒出来了。防火防火墙不是墙扫铁板一块,它只是绕过按规则丢包,而nmap有的防火是办法让包看起来不像扫描。
先说最基础的墙扫一招:分片。nmap的绕过-f选项把TCP头拆成多个IP分片。老式防火墙和某些路由器懒得重组分片,防火直接放行第一个碎片,墙扫后面的也懒得查。我试过对一台Cisco ASA做nmap -f -sS 10.0.0.1,原本filtered的445端口直接变成open。当然,现代防火墙基本都能重组了,这招成功率不到三成。但对付那些五六年没升级固件的设备,还是管用。
更实用的是--mtu指定分片大小。比如--mtu 8,每个分片只有8字节数据。防火墙要重组就得消耗CPU,有些设备在负载高的时候直接放弃重组,把包全放过去。我在一次内网渗透里用--mtu 16扫一台老FortiGate,原本封死的3389端口,扫了三遍就出来了。速度慢得离谱,但能出结果。
空闲扫描(-sI)是另一个路子。找个僵尸主机,让它的IPID递增规律暴露目标端口状态。防火墙看到的是僵尸主机在跟目标说话,压根不知道真正扫描的人是谁。这招对边界防火墙特别有效,因为防火墙只检查源IP是不是可信。但前提是你得找一台IPID全局递增的老Windows或打印机。我上次用一台HP LaserJet当僵尸,扫了半个C段,防火墙日志里干干净净。
源端口欺骗也值得一试。--source-port 53或者--source-port 88。很多防火墙规则写着“允许DNS流量”,你源端口设成53,它就以为是DNS回应。我见过一台Check Point,默认放行源端口53的所有TCP包。用nmap -g 53 -sS扫过去,防火墙跟没开一样。这招对管理员配了“允许从53端口来的流量”这种傻规则特别管用。
还有--data-length填充随机数据。有些防火墙匹配特定payload特征,比如空包或者固定长度的SYN。你填上--data-length 25,包看起来就像正常业务流量。我拿这个绕过了一台Palo Alto的App-ID检测,它把nmap默认的SYN当成“unknown-tcp”给拦了,加了数据长度后识别成“ssl”,直接放行。
最阴的是--scan-delay加--max-rate。防火墙有速率阈值,比如每秒超过100个SYN就拉黑。你把速率压到每秒5个,慢慢扫。我扫一台华为USG,默认策略是“每秒30个新建连接就丢包”,用--max-rate 20扫了四十分钟,全端口状态清清楚楚。慢是慢,但比被防火墙封IP强。
别指望一招吃遍天。我通常组合用:先-f --mtu 8试分片,不行就-g 53 --data-length 20,再不行上-sI找僵尸。防火墙厂商不是吃素的,但配置防火墙的人经常偷懒。你只要比那个偷懒的人多想一步,端口就出来了。
友情链接