接到某单位通知让查找中国具有SYNful Knock后门的CISCO路由器,按照曼迪安特分析的报告称中国已经发现3台具有SYNful Knock后门的路由器,如何快速从全国3亿IP地址中快速查找出3个IP地址难度还是十分的大啊,而我经过查找发现中国已经有4个IP被植入了后门,现将检测过程分享给大家。
一、获取IP地址
为保证中国IP的全面性,从apnic重新获取亚洲区域所分配到的IP,过滤出CN的IP,结果如下。apnic文件中每行为一个IP地址段,以"|"作为分隔,第四个字段为IP起始地址,第五个字段为IP地址数量。
二、IP地址格式调整
将IP地址格式调整成zmap的CIDR格式,如下:
三、使用zmap检测80端口开放ip
命令:zmap -w china_ip_cidr.txt -p 80 -o 80.txt
检测出5184575个开放80端口的IP地址。
四、POC制作思路
互联网搜索发现还没有此后门的POC(现在CISCO已经发布自己的POC,后期我的POC也参考CISCO的POC做了适当调整),没办法自给自足仔细研读了曼迪安特的报告,经过多次改版最终POC思路如下:
(一)伪造SYN报文,使seq和ack_seq之间的差为0xC123D大批量发送给目标主机。
(二)单独监听收到的网络报文,将seq和ack_seq之间的差为0xC123E、urgent flag未设置、urgent pointer=0x0001、hard-coded TCP options=“02 04 05 b4 01 01 04 02 01 03 03 05”的网络报文过滤出来保存。
五、POC分析如下:
(一)SYN报文部分
修改SYN seq和ack_seq差值,使其差值为0xC123D,并直接发送SYN,不等待接收SYN ACK报文,由网络监听部分进行SYN ACK报文的拦截,由于不接收SYN ACK报文,发送速度提升了N倍。考虑到发送完关闭过快在每个报文发送完毕后增加了0.1秒的等待。
(二)网络监听部分
此部分借鉴了CISCO发布的检测脚本,但是CISCO检测脚本检测性能较差,我将检测POC分成了2部分,将SYN报文发送部分POC放入检测框架批量执行,网络监听部分单独执行分析SYN ACK的报文特征符合性,代码如下:
五、批量执行
(一)将待检测IP入库,祭出我编写的神器pwscan大规模检测框架,设定进程数1000,启动检测框架如下:
框架启动了1000个扫描引擎。
奔跑吧小驴子,很快检测完成,如下:
六、检测结果
对全网检测5遍后结果如下(不好意思IP要隐藏:) ):
七、漏洞验证
单独进行漏洞验证如下:
(一)脚本验证
(二)登陆验证
弱口令成功登陆,看到了曼迪安特说的"#"号
执行show platform查看文件被修改情况,找到曼迪安特说的RW标致
八、结论
成功找到4个中国具有SYNful Knock后门的CISCO路由器。