
Imaginary C2 é uma ferramenta Python que tem como objetivo auxiliar na análise comportamental (de rede) de malware. O Imaginary C2 hospeda um servidor HTTP que captura requisições HTTP direcionadas a domínios/IPs selecionados seletivamente. Além disso, a ferramenta visa facilitar a repetição de respostas de Comando e Controle capturadas/payloads servidos.
author: Felix Weyne (website) (Twitter)
Imaginary C2 é uma ferramenta em python que visa auxiliar na análise comportamental (de rede) de malware.
O Imaginary C2 hospeda um servidor HTTP que captura requisições HTTP direcionadas a domínios/IPs selecionados. Além disso, a ferramenta facilita a reprodução de respostas de Comando-e-Controle (C2) e payloads servidos capturados.
Ao usar esta ferramenta, um analista pode alimentar o malware com respostas de rede consistentes (ex.: instruções de C2 para o malware executar). Adicionalmente, o analista pode capturar e inspecionar requisições HTTP para um domínio/IP que esteja offline no momento da análise.

O Imaginary C2 fornece dois scripts para converter capturas de pacotes (PCAPs) ou Arquivos de Sessão do Fiddler em definições de requisição que podem ser interpretadas pelo Imaginary C2. Através destes scripts, o usuário pode extrair URLs de requisição HTTP e domínios, bem como respostas HTTP. Desta forma, é possível reproduzir rapidamente as respostas HTTP para uma determinada requisição HTTP.
requisitos: O Imaginary C2 requer Python 2.7 e Windows.
módulos: Atualmente, o Imaginary C2 contém três módulos e dois arquivos de configuração:
definições de requisição: Cada requisição (HTTP) definida no arquivo de configuração de requisições consiste em dois parâmetros:
Parâmetro 1: Caminho da URL da requisição HTTP (também conhecido como urlType)
| Valor | Significado |
|---|---|
| fixed | Define o caminho da URL como uma string literal |
| regex | Define um padrão regex para ser correspondido no caminho da URL |
Parâmetro 2: Fonte da resposta HTTP (também conhecido como sourceType)
| Valor | Significado |
|---|---|
| data | O Imaginary C2 responderá com o conteúdo de um arquivo no disco |
| python | O Imaginary C2 executará um script Python. A saída do script Python define a resposta HTTP. |
O Imaginary C2 pode ser usado para simular a hospedagem de componentes e arquivos de configuração do TrickBot. Além disso, também pode ser usado para simular os servidores de injeção web do TrickBot.
Após a execução, o downloader do TrickBot se conecta a um conjunto de IPs fixos para buscar alguns arquivos de configuração. Um desses arquivos de configuração contém as localizações (endereços IP) dos servidores de plugins do TrickBot. O downloader do TrickBot baixa os plugins (módulos) desses servidores e os descriptografa. Os módulos descriptografados são então injetados em uma instância do svchost.exe.

Um dos plugins do TrickBot é chamado injectdll, um plugin responsável pelos webinjects do TrickBot. O plugin injectdll busca regularmente um conjunto atualizado de configurações de webinject. Para cada site (bancário) alvo na configuração, é definido o endereço de um servidor webfake. Quando uma vítima navega para um site (bancário) alvo pelo TrickBot, seu navegador é secretamente redirecionado para o servidor webfake. O servidor webfake hospeda uma réplica do site alvo. Este site réplica geralmente é usado em um ataque de engenharia social para fraudar a vítima.
O vídeo abaixo mostra o downloader do TrickBot executando dentro do svchost.exe e se conectando ao Imaginary C2 para baixar dois módulos. Cada módulo baixado é injetado em uma nova instância do svchost.exe. O módulo de webinject tenta roubar as senhas salvas do navegador e exfiltra as senhas roubadas para o servidor TrickBot. Ao visitar um site bancário alvo, o TrickBot redireciona o navegador para o servidor webfake. Na demonstração, o servidor webfake hospeda a mensagem: "Resposta padrão do servidor Imaginary C2" (vídeo completo).

| Nome do Arquivo | Função |
|---|
| 1. imaginary_c2.py | Hospeda o servidor HTTP simples do Python. Módulo principal. |
| 2. redirect_to_imaginary_c2.py | Altera o arquivo de hosts do Windows e a Tabela de Roteamento (IP) do Windows. |
| 3. unpack_fiddler_archive.py & unpack_pcap.py | Extrai respostas HTTP de capturas de pacotes. Adiciona os domínios de requisições HTTP e URLs correspondentes aos arquivos de configuração. |
| 4. redirect_config.txt | Contém domínios e IPs que precisam ser redirecionados para localhost (para o servidor HTTP Python). |
| 5. requests_config.txt | Contém definições de caminho de URL com as fontes de dados correspondentes. |