|
防火墙不是绕过墙,它更像一道带审查机制的防火关卡。Nmap默认的绕过SYN扫描发出去了,防火墙一看:哟,防火这包不对劲,绕过直接丢掉。防火你这边显示filtered,绕过啥也看不到。防火问题不在Nmap本身,绕过在于你的防火流量特征太扎眼。 我见过太多人拿着默认参数跑nmap -sS 目标IP,绕过然后对着满屏的防火filtered发呆。其实换个思路,绕过防火墙拦的防火是"看起来像扫描"的包,那你就别让它看起来像扫描。绕过 分片:把一刀切成十刀 MTU分片是老招数了。nmap -f 目标IP把IP头切成8字节的小片,防火墙要么重组要么放行。重组消耗性能,很多设备干脆不重组——这就漏了。更狠的是-ff,切成16字节,碎片更碎。不过现在主流防火墙都会做重组,这招对付老设备或者配置粗糙的环境还行。我试过某国产品牌防火墙,-f直接穿过去了,日志里连个告警都没有。 诱饵:让防火墙猜哪个是真的 nmap -D RND:10 目标IP,Nmap会随机生成10个诱饵IP,跟你的真实IP混在一起发包。防火墙看到11个源地址同时扫,它怎么判断哪个是攻击者?如果它把诱饵也拦了,可能误伤正常流量;如果它只拦一个,那你的真实IP就藏在那10个假地址里。这招的软肋是诱饵IP得是活的,不然目标回包给假地址,你收不到响应。用-D 诱饵1,诱饵2,ME,诱饵3可以手动指定,ME代表你的真实位置。 空闲扫描:最阴的一种 nmap -sI 僵尸主机 目标IP,你的包根本不发给目标。Nmap利用僵尸主机的IP ID递增规律来推断端口状态。目标防火墙看到的源IP是僵尸主机,跟你半毛钱关系没有。前提是找到一个IP ID全局递增的僵尸机——老式打印机、某些路由器都行。现在很多系统IP ID随机化了,僵尸不好找,但内网里一抓一大把。 改端口和慢速 防火墙规则通常只放行特定端口。你把扫描源端口改成53(DNS)或者80(HTTP),nmap --source-port 53 目标IP,很多防火墙一看是DNS流量就放行了。这招叫"端口信任利用",配置不严的ACL经常中招。 速度也是关键。默认-T4在防火墙眼里就是"这人在扫我"。换成-T1或者-T0,每个包间隔几分钟,IDS的阈值根本触发不了。我做过测试,-T0扫一个C段花了六个小时,但防火墙日志干干净净。 ACK扫描和窗口扫描 nmap -sA 目标IP发ACK包,防火墙如果是有状态的,看到没有三次握手的ACK直接丢。但有些防火墙只过滤SYN,ACK包它不管——这就暴露了端口是unfiltered还是filtered。-sW窗口扫描更冷门,利用TCP窗口大小来判断,某些BSD系统上能出奇效。 别忽略协议和时机 防火墙不是什么都拦。UDP扫描-sU经常被忽略,因为UDP无状态,拦起来麻烦。ICMP时间戳请求-PE、地址掩码请求-PM,很多防火墙只拦echo请求,这些就漏了。 时机上,凌晨三点扫和下午三点扫,结果可能完全不同。安全设备有基线,流量低的时候阈值也低,但人工审查也少。我习惯在目标所在地的深夜动手,成功率明显高。 说到底,绕过防火墙不是找一个万能参数,是理解它怎么判断"正常"和"异常"。你的包越像正常业务流量,它越懒得管你。Nmap给了你工具,怎么组合看你对目标环境的判断。别迷信某个参数,先跑-sA看看防火墙状态,再决定用分片还是诱饵。盲扫等于送人头。 |