← voltar ao blog

Triagem de beacon Cobalt Strike: da config aos IOCs

12 de mai. de 2026 1 min de leitura PT

Contexto

Um e-mail de phishing entregou um dropper que, após algumas camadas, carregava um beacon Cobalt Strike em memória. O objetivo da triagem: extrair a config e gerar IOCs acionáveis.

Extração da config

Usei um parser open-source para puxar os campos do beacon:

# extrai a config do beacon a partir do dump de memória
from beacon_parser import parse

cfg = parse("beacon_dump.bin")
print(cfg["c2_server"])      # 185.x.x.x,/api/v2
print(cfg["watermark"])      # 0x5109bf3a
print(cfg["sleep"])          # 60000

O watermark é ouro: liga o beacon a uma licença/ator específico.

Pivot de infraestrutura

Com o C2 em mãos, pivotei via passive DNS e Censys para achar a infra irmã:

censys search "services.tls.certificates.leaf_data.subject_dn: \"CN=update\""

IOCs finais

Mapeando para ATT&CK: T1071.001 (Web Protocols) e T1573 (Encrypted Channel).