Imaginary C2 是一个 Python 工具,旨在帮助分析恶意软件的(网络)行为。
Imaginary C2 托管一个 HTTP 服务器,该服务器捕获向选择性指定的域名/IP 发出的 HTTP 请求。此外,该工具旨在轻松重放已捕获的命令与控制响应/提供的有效载荷。
通过使用此工具,分析人员可以向恶意软件提供一致的网络响应(例如,恶意软件要执行的 C&C 指令)。此外,分析人员还可以捕获并检查向一个在分析时离线的域名/IP 发出的 HTTP 请求。

Imaginary C2 提供了两个脚本,用于将 数据包捕获 (PCAP) 或 Fiddler 会话存档 转换为可由 Imaginary C2 解析的 请求定义。
通过这些脚本,用户可以提取 HTTP 请求 URL 和域名,以及 HTTP 响应。这样,可以快速重放针对特定 HTTP 请求的 HTTP 响应。
要求: Imaginary C2 需要 Python 2.7 和 Windows。
模块: 目前,Imaginary C2 包含三个模块和两个配置文件:
| 文件名 | 功能 |
|---|---|
| 1. imaginary_c2.py | 托管 Python 的简单 HTTP 服务器。主模块。 |
| 2. redirect_to_imaginary_c2.py | 修改 Windows 的 hosts 文件和 Windows(IP)路由表。 |
| 3. unpack_fiddler_archive.py & unpack_pcap.py | 从数据包捕获中提取 HTTP 响应。将相应的 HTTP 请求域名和 URL 添加到配置文件。 |
| 4. redirect_config.txt | 包含需要重定向到本地主机(到 Python HTTP 服务器)的域名和 IP。 |
| 5. requests_config.txt | 包含 URL 路径定义及对应的数据源。 |
请求定义: 请求配置中定义的每个(HTTP)请求由两个参数组成:
参数 1: HTTP 请求 URL 路径(即 urlType)
| 值 | 含义 |
|---|---|
| fixed | 将 URL 路径定义为字面字符串 |
| regex | 定义一个正则表达式模式以匹配 URL 路径 |
参数 2: HTTP 响应来源(即 sourceType)
| 值 | 含义 |
|---|---|
| data | Imaginary C2 将以磁盘上的文件内容作为响应 |
| python | Imaginary C2 将运行一个 Python 脚本。该 Python 脚本的输出定义了 HTTP 响应。 |
Imaginary C2 可用于模拟托管 TrickBot 组件和配置文件。此外,它还可用于模拟 TrickBot 的 Web 注入服务器。
执行后,TrickBot 下载器连接一组硬编码的 IP 以获取几个配置文件。其中一个配置文件包含 TrickBot 插件服务器的位置(IP 地址)。TrickBot 下载器从这些服务器下载插件(模块)并解密。解密的模块随后被注入到 svchost.exe 实例中。

TrickBot 的插件之一称为 injectdll,该插件负责 TrickBot 的 Web 注入。injectdll 插件定期获取更新后的 Web 注入配置。对于配置中的每个目标(银行)网站,定义了 webfake 服务器 的地址。当受害者浏览到 TrickBot 所针对的(银行)网站时,其浏览器会被秘密重定向到 webfake 服务器。webfake 服务器 托管目标网站的副本。此副本网站通常用于社会工程攻击,以诈骗受害者。
下面的视频展示了 TrickBot 下载器在 svchost.exe 内运行并连接到 Imaginary C2 以下载两个模块。每个下载的模块被注入到一个新生成的 svchost.exe 实例中。Web 注入模块试图窃取浏览器保存的密码,并将窃取的密码外泄到 TrickBot 服务器。在访问目标银行网站时,TrickBot 会将浏览器重定向到 webfake 服务器。在演示中,webfake 服务器 托管了消息:“默认 Imaginary C2 服务器响应”(完整视频)。
