
Fareja tráfego de saída em busca de callbacks suspeitos, semelhantes a beacons, porque se continua voltando no horário, provavelmente não é café da manhã.
Espiona o tráfego de saída em busca de callbacks suspeitos, semelhantes a beacons, porque se continua voltando no horário, provavelmente não é café da manhã.
Bacon Sampler é um coletor leve de conexões de saída que espiona o chiado do tráfego da sua rede e sinaliza comportamentos suspeitos "semelhantes a beacons" — aqueles callbacks periódicos, lentos e discretos que malwares adoram usar para se comunicar com o comando.
Ele monitora passivamente conexões de saída e consultas DNS, destacando padrões como intervalos regulares, destinos repetidos, jitter estranho e tamanhos de bytes consistentes, basicamente qualquer coisa que pareça menos uma navegação normal e mais um bot verificando instruções.
Pense nisso como um Scanner de Beacons, mas mais saboroso: se algo continua voltando sempre no mesmo horário... estamos provando o bacon.
.mmdb) ou DB-IP Lite (.mmdb).BIN)pip install -r requirements.txt
Baixe um banco de dados GeoIP e anote o caminho:
.mmdb).BIN)Se preferir uma consulta online gratuita, pode pular esta etapa e usar --geoip-online.
Listar interfaces:
python capture_outbound.py --list-interfaces
Escolher uma interface pelo índice:
python capture_outbound.py --interface 0
Usar múltiplas interfaces (repetível):
python capture_outbound.py --interface "Ethernet" --interface "Wi-Fi"
Ou com nomes separados por vírgula:
python capture_outbound.py --interfaces "Ethernet,Wi-Fi"
Captura apenas Pcap (A) com GeoIP offline:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Captura Pcap + correlação netstat (B) com GeoIP offline:
python capture_outbound.py --mode pcap_plus_netstat --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
União Pcap + netstat (A+B):
python capture_outbound.py --mode both --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
GeoIP online (gratuito, com limite de taxa, cache em disco):
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi
GeoIP online com token IPinfo:
$env:IPINFO_TOKEN="your_token_here"
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo
Ou passar o token explicitamente:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo --geoip-online-token "your_token_here"
Ajustar timeout e tentativas do GeoIP online:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi --geoip-timeout 2.5 --geoip-retries 1
Desabilitar DNS reverso (execuções mais rápidas):
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --no-dns
Ajustar timeout do DNS:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --dns-timeout 0.5
Limitar captura por contagem de pacotes:
python capture_outbound.py --mode pcap --duration 60 --packet-limit 5000
Filtrar por protocolo, porta remota e CIDR IP:
python capture_outbound.py --filter-protocol tcp --filter-port 80,443,1000-2000 --allow-ip 1.2.3.0/24 --deny-ip 1.2.3.4/32
Resumos agrupados e top N:
python capture_outbound.py --group-by remote_ip,process --top 10
Rastrear total de bytes por conexão:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --track-bytes
Desabilitar saída de progresso:
python capture_outbound.py --no-progress
Desabilitar saída no console:
python capture_outbound.py --no-console
União Pcap + netstat (A+B) + GeoIP online + Gravar pcap + CSV + HTML:
python capture_outbound.py --mode both --duration 20 --interface "Ethernet,Wi-Fi" --geoip-online ipapi --pcap-out "C:\Path\capture.pcap" --csv "C:\Path\outbound.csv" --html "C:\Path\outbound.html"
Apenas Pcap + pasta de saída + nomes personalizados CSV/JSON:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --output-dir "C:\Path\Reports" --csv "C:\Path\Reports\outbound.csv" --json "C:\Path\Reports\outbound.json"
Detecção de atividade semelhante a beacon (callbacks lentos e discretos):
python capture_outbound.py --duration 300 --beacon-min-duration 120 --beacon-min-interval 60 --beacon-max-interval 1800 --beacon-max-jitter 10 --beacon-min-packets 6 --beacon-max-rate 0.05
Detecção de padrões (intervalos regulares, jitter, destinos repetidos, tamanhos consistentes):
python capture_outbound.py --duration 300 --track-bytes --pattern-high-jitter 120 --pattern-repeat-destination 4 --pattern-max-byte-jitter 64 --dns-pattern-min-queries 4
Limiares rigorosos de beacon + padrões com filtragem:
python capture_outbound.py --duration 600 --filter-protocol tcp --filter-port 443 --track-bytes --beacon-min-duration 180 --beacon-min-interval 90 --beacon-max-interval 900 --beacon-max-jitter 5 --beacon-min-packets 8 --pattern-high-jitter 60 --pattern-repeat-destination 5 --pattern-max-byte-jitter 32
Captura focada em DNS (consulta rápida DNS + padrões DNS):
python capture_outbound.py --duration 180 --dns-timeout 0.25 --dns-pattern-min-queries 5 --pattern-repeat-destination 3
outbound_connections.csvoutbound_connections.json--html "report.html"*_beacon_findings.csv / *_beacon_findings.json*_connection_patterns.csv / *_connection_patterns.json*_dns_patterns.csv / *_dns_patterns.json*_unique_connections.csv / *_unique_connections.json*_unique_processes.csv / *_unique_processes.jsonCaminhos personalizados para saída CSV/JSON:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --csv "C:\Path\outbound.csv" --json "C:\Path\outbound.json"
Enviar todas as saídas para uma pasta:
python capture_outbound.py --mode pcap --duration 20 --output-dir "C:\Path\Reports"
Gerar saída HTML:
python capture_outbound.py --html "outbound.html"
Gravar arquivo pcap:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --pcap-out "capture.pcap"
--mode {pcap,pcap_plus_netstat,both}: Estratégia de captura (padrão: pcap)--duration SECONDS: Duração da captura (padrão: 15)--packet-limit COUNT: Parar após N pacotes (0 = ilimitado)--list-interfaces: Mostrar interfaces Npcap e sair--interface NAME: Nome da interface de captura (repetível)--interfaces "NOME,NOME": Nomes de interfaces separados por vírgula--filter-protocol tcp,udp: Filtro de protocolo (repetir ou separado por vírgula)--filter-port 80,443,1000-2000: Filtros de porta remota--allow-ip CIDR: Permitir CIDR(s) de IP remotoSaídas principais (--csv/--json) incluem campos:
protocol, local_ip, local_portremote_ip, remote_port, remote_hostname, remote_fqdn, remote_countrypid, process_name, packet_countduration_seconds, avg_interval_seconds, interval_jitter_secondsfirst_seen, , Saídas derivadas incluem:
remote_ip, remote_port, remote_hostname, remote_fqdn, remote_countrypid, process_name, connection_count, unique_remote_ipsremote_ip, process ou countrybeacon_reasonpattern_type/,
// (com ) e totais por destino--mode pcap_plus_netstat apenas enriquece conexões capturadas com dados de PID/processo.--mode both adiciona conexões apenas do netstat à saída final.2 após gravar as saídas.--log-json formata avisos/erros como linhas JSON (útil para ingestão).--duration está em segundos.--packet-limit interrompe a captura após N pacotes, mesmo que a duração não tenha terminado.--no-dns ignora a resolução DNS reversa (hostname/FQDN ficarão em branco).--dns-timeout controla o tempo limite das consultas DNS (segundos).geoip_online_cache.json no diretório de saída (ou diretório de trabalho), a menos que substituído por --geoip-cache-path.--geoip-db-type auto usa a extensão do arquivo: -> MaxMind/DB-IP, -> IP2Location.*_group_remote_ip*.csv/json, *_group_process*.csv/json, *_group_country*.csv/json--deny-ip CIDR: Negar CIDR(s) de IP remoto--group-by remote_ip,process,country: Saída de resumo agrupado--top N: Limitar resumos agrupados às N primeiras linhas--beacon-min-duration SEGUNDOS: Duração mínima para detecção de beacon--beacon-min-packets COUNT: Contagem mínima de pacotes para detecção de beacon--beacon-min-interval SEGUNDOS: Intervalo médio mínimo para detecção de beacon--beacon-max-interval SEGUNDOS: Intervalo médio máximo para detecção de beacon--beacon-max-jitter SEGUNDOS: Jitter máximo de intervalo para detecção de beacon--beacon-max-rate PPS: Pacotes por segundo máximo para detecção de beacon--pattern-high-jitter SEGUNDOS: Limiar de jitter de intervalo para padrões aleatórios--pattern-repeat-destination COUNT: Mínimo de conexões para sinalizar destinos repetidos--pattern-max-byte-jitter BYTES: Faixa máxima de tamanho de byte para consistência--dns-pattern-min-queries COUNT: Mínimo de consultas DNS para sinalizar padrões--csv CAMINHO: Caminho de saída CSV (padrão: outbound_connections.csv)--json CAMINHO: Caminho de saída JSON (padrão: outbound_connections.json)--html CAMINHO: Caminho de saída do relatório HTML--pcap-out CAMINHO: Gravar pacotes capturados em pcap--output-dir CAMINHO: Gravar todos os arquivos de saída neste diretório--no-console: Desabilitar saída de tabela no console--no-progress: Desabilitar saída de progresso--log-json: Emitir avisos/erros como linhas JSON no stderr--track-bytes: Rastrear total de bytes por conexão quando disponível--geoip-db CAMINHO: Caminho do banco de dados GeoIP (.mmdb ou IP2Location .BIN)--geoip-db-type {auto,maxmind,dbip,ip2location}: Tipo do banco de dados GeoIP (padrão: auto)--geoip-online {ipapi,ip-api,ipinfo}: Usar serviço GeoIP online gratuito (com limite de taxa)--geoip-online-token TOKEN: Token de API para provedor GeoIP online (ex.: IPinfo)--geoip-cache-path CAMINHO: Substituir caminho do cache JSON do GeoIP online--geoip-timeout SEGUNDOS: Timeout de requisição GeoIP online (padrão: 3.0)--geoip-retries COUNT: Tentativas de repetição GeoIP online (padrão: 2)--no-dns: Desabilitar consulta DNS reversa--dns-timeout SEGUNDOS: Timeout de consulta DNS (padrão: 2.0)last_seensourcebyte_count (quando --track-bytes está ativado)pattern_reasonbyte_minbyte_maxbyte_range--track-bytesdns_query, query_count, IP/porta do resolvedor, detalhes do padrão e
byte_min/byte_max/byte_range (com --track-bytes).mmdb.BINUS) em vez de nomes completos de país.--geoip-db for omitido, a coluna remote_country fica vazia, a menos que --geoip-online seja usado.--geoip-db e --geoip-online forem definidos, o banco de dados é usado.--filter-port aplica-se à porta remota (destino de saída).--track-bytes adiciona colunas byte_count e habilita padrões de consistência de tamanho.