如何构建基于HTTP 404错误页面的C2通信系统
作者:Matthew Pawelski
C2(命令与控制)系统被攻击者用于控制受感染设备。大多数C2控制着大型僵尸网络,而有些仅用于单点访问以实现横向移动或凭证窃取。常见的C2类型包括IRC、P2P、DNS、Twitter、Gmail和ICMP等,其实现方式日益创新。
在一次与John Strand的交流中,我了解到一种利用HTTP 404错误页面实现C2的方法,这引起了我的兴趣。虽然完全阻止HTTP 404流量很容易,但多数环境并不监控或过滤此类响应,使得该技术难以被发现。
通过研究,我参考了Black Hat白皮书《Hiding in Plain Sight》和He Xu的文章《Hiding Malicious Traffic Under the HTTP 404 Error》,后者详细描述了实际检测到的HTTP 404 C2案例:受感染设备访问Web服务器并接收看似无害的404响应,但页面注释中包含Base64编码的命令,用于执行文件操作、注册表修改等。
基于此,我构建了自己的HTTP 404 C2系统,不仅支持命令下发,还能接收执行结果。实现分为三部分:
- Web服务器配置:通过.htaccess文件将错误页面重定向到自定义HTML文件(如evil.html)。攻击者可控制自有服务器或已入侵的服务器。
- C2服务器:接收用户输入的命令,进行Base64编码并嵌入HTML注释,动态更新404页面内容。可通过FTP上传文件至受控服务器。
- C2客户端:向指定域名发起请求,检查是否为404响应,解析注释中的预定义头部和Base64命令,执行后返回结果。客户端兼容Windows和Linux系统,通过PowerShell或脚本实现跨平台命令执行,结果发送至Python监听服务器。
在演示中,Windows 10作为受害机,Ubuntu作为Web服务器、C2控制器和结果接收器。访问不存在的页面时返回404错误,页面源码无异常注释。运行C2客户端后,通过服务器下发命令(如创建文件),执行结果通过Python服务器回传。404页面外观不变,但源码底部新增包含Base64命令的注释。
该技术隐蔽性强,易被忽略。完整代码详见:https://github.com/theG3ist/404。
延伸学习:
Antisyphon提供可负担的付费培训课程,支持直播/点播学习,推动技术共享。