利用BadUSB控制整个网络
用树莓派(Raspberry Pi)发动中间人攻击
在上周末举行的首届BSides都柏林会议上,我发表了针对路由器的“BadUSB in Routers”演讲。该演讲具体描述了针对Netgear,TP-Link,Linksys,Asus和MikroTik路由器的各种BadUSB攻击。而在这篇文章中,我将介绍一个“突出代表”,它能“帮助”攻击者控制整个网络。
在上图中,我将Raspberry Pi Zero插入MikroTik hAP的USB口。此时,Raspberry Pi已经能管理所有路由器的所有流量,一个典型的中间人攻击。
视频网址:https://youtu.be/3X7xrgan5Tk
现在,你肯定会问,“怎么做到的?!”
攻击原理
让我们从MikroTik开始,这个品牌的很多路由器都支持3g和4g USB加密狗。而且,不只是小型路由器,如hAP,还有一些更大的机架式路由器同样如此。在默认情况下,这些设备都拥有一个辅助的USB WAN接口(通过USB接口进行网络连接)。
配置好的Raspberry Pi显示为LTE接口
我对我的Raspberry Pi设置了P4wnP1的默认网络设备描述符以及一个Linksys网络适配器的VID/PID,因此它会被识别为一个新的WAN接口。一旦插上路由器,路由器就会发送DHCP请求为这个新的lte1接口分配IP地址。然后,Raspberry Pi的DHCP响应会包含一些额外的路由指令,作用是“将所有互联网流量导向到lte1接口”,其中涉及的指令如下。
接受Raspberry Pi的DHCP响应后路由器的路由表
Samy Kamkar,Rob Fuller,P4wnP1,以及我都确信早已有人在BadUSB攻击中利用过DHCP这项协议。但是,由于我的攻击目标是路由器,因此所有局域网内的主机都会受到影响。
当然,Raspberry Pi不是一个真正的WAN接口。它并不能提供上网功能,而且这里还存在死循环问题。
USB的流量会倒回去
目前我解决这个问题的方法是通过VPN服务器转发所有流量。在BadUSB发出的路由指令中,不会把指向特定VPN服务器的流量倒回。这样,Raspberry Pi就可以将所有数据传输到远程VPN服务器,VPN服务器再将数据转发到互联网上。
最终架构
只要一切正常,局域网内的请求和响应都可以正常流通。在下图中,你可以通过traceroute命令看到MikroTik路由器将流量传输到Raspberry Pi,然后再传输到VPN服务器,最后传输到公网中。
利用
当上述的攻击架构搭建完成,Raspberry Pi和VPN Server都可以观察到局域网内的所有流量。在下图中,左侧的客户端浏览了securitybsides.com
,VPN服务器的Wireshark成功捕获了请求和响应。
如果你想了解更多技术细节,或者自己重现攻击,欢迎访问我们的GitHub。在那里你可以找到更多有关所使用的硬件和软件信息,以及与P4wnP1框架配合使用的payload。
未来趋势
这种利用Raspberry Pi进行的攻击在实际应用中可能出现攻击设备过大的问题(和普通USB相比)。在未来可能会用USB Armory或Teensy进行代替。
上图就是一个USB Armory。另外,还有很多路由设备都存在这种问题,例如,思科的RV系列。
结论
最后让我们总结一下防御重点:
别让他人物理接触路由器。
禁用未被使用的USB端口。
定期检查设备上是否有古怪的硬件。
尽可能使用加密通信。
使用VPN保证安全(例如公共WiFi环境中)
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://medium.com/tenable-techblog/owning-the-network-with-badusb-72daa45d1b00
最新评论