
Sniffa il traffico in uscita per callback sospette simili a beacon, perché se continua a tornare con regolarità, probabilmente non è colazione.
Annusa il traffico in uscita alla ricerca di callback sospetti simili a beacon, perché se continua a tornare periodicamente, probabilmente non è colazione.
Bacon Sampler è un leggero catturatore di connessioni in uscita che annusa il traffico di rete e segnala comportamenti sospetti "simili a beacon" – quei callback periodici, lenti e costanti che il malware ama per comunicare con il server di comando.
Monitora passivamente le connessioni in uscita e le ricerche DNS, poi evidenzia pattern come intervalli costanti, destinazioni ripetute, jitter anomalo e dimensioni dei byte consistenti, insomma tutto ciò che assomiglia più a un bot che riceve istruzioni che a una normale navigazione.
Pensalo come uno Scanner di Beacon, ma più gustoso: se qualcosa continua a ripresentarsi sempre alla stessa ora... stiamo assaggiando il bacon.
.mmdb) o DB-IP Lite (.mmdb).BIN)pip install -r requirements.txt
Scarica un database GeoIP e annota il percorso:
.mmdb).BIN)Se preferisci una ricerca online gratuita, puoi saltare questo passaggio e usare --geoip-online.
Elenca interfacce:
python capture_outbound.py --list-interfaces
Scegli un'interfaccia per indice:
python capture_outbound.py --interface 0
Usa più interfacce (ripetibile):
python capture_outbound.py --interface "Ethernet" --interface "Wi-Fi"
Oppure con nomi separati da virgola:
python capture_outbound.py --interfaces "Ethernet,Wi-Fi"
Cattura solo Pcap (A) con GeoIP offline:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Cattura Pcap + correlazione netstat (B) con GeoIP offline:
python capture_outbound.py --mode pcap_plus_netstat --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Unione Pcap + netstat (A+B):
python capture_outbound.py --mode both --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
GeoIP online (gratuito, con limite di richieste, memorizzato nella cache su disco):
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi
GeoIP online con token IPinfo:
$env:IPINFO_TOKEN="your_token_here"
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo
Oppure passa il token esplicitamente:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo --geoip-online-token "your_token_here"
Regola timeout e tentativi del GeoIP online:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi --geoip-timeout 2.5 --geoip-retries 1
Disabilita DNS inverso (esecuzioni più veloci):
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --no-dns
Regola timeout DNS:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --dns-timeout 0.5
Limita la cattura per numero di pacchetti:
python capture_outbound.py --mode pcap --duration 60 --packet-limit 5000
Filtra per protocollo, 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
Riepiloghi per gruppo e primi N:
python capture_outbound.py --group-by remote_ip,process --top 10
Traccia i byte totali per connessione:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --track-bytes
Disabilita output di avanzamento:
python capture_outbound.py --no-progress
Disabilita output console:
python capture_outbound.py --no-console
Unione Pcap + netstat (A+B) + GeoIP online + Scrivi 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"
Solo Pcap + cartella di output + nomi CSV/JSON personalizzati:
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"
Rilevamento di attività simili a beacon (callback lenti e costanti):
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
Rilevamento di pattern (intervalli costanti, jitter, destinazioni ripetute, dimensioni consistenti):
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
Soglie strette per beacon + pattern con filtri:
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
Cattura focalizzata su DNS (ricerca DNS veloce + pattern 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.jsonPercorsi personalizzati per output CSV/JSON:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --csv "C:\Path\outbound.csv" --json "C:\Path\outbound.json"
Invia tutti gli output in una cartella:
python capture_outbound.py --mode pcap --duration 20 --output-dir "C:\Path\Reports"
Scrivi output HTML:
python capture_outbound.py --html "outbound.html"
Scrivi un file pcap:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --pcap-out "capture.pcap"
--mode {pcap,pcap_plus_netstat,both}: Strategia di cattura (default: pcap)--duration SECONDS: Durata della cattura (default: 15)--packet-limit COUNT: Ferma dopo N pacchetti (0 = illimitato)--list-interfaces: Mostra le interfacce Npcap ed esci--interface NAME: Nome dell'interfaccia di cattura (ripetibile)--interfaces "NAME,NAME": Nomi di interfaccia separati da virgola--filter-protocol tcp,udp: Filtro protocollo (ripetibile o separato da virgola)--filter-port 80,443,1000-2000: Filtri porta remota--allow-ip CIDR: Consenti CIDR IP remoto(i)Gli output principali (--csv/--json) includono i campi:
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, , Gli output derivati includono:
remote_ip, remote_port, remote_hostname, remote_fqdn, remote_countrypid, process_name, connection_count, unique_remote_ipsremote_ip, process o countrybeacon_reasonpattern_type/, // (con ) e totali destinazione--mode pcap_plus_netstat arricchisce solo le connessioni catturate con dati PID/processo.--mode both aggiunge le connessioni solo netstat all'output finale.2 dopo aver scritto gli output.--log-json formatta avvisi/errori come righe JSON (utile per l'inserimento).--duration è in secondi.--packet-limit ferma la cattura dopo N pacchetti anche se la durata non è scaduta.--no-dns salta la risoluzione DNS inversa (hostname/FQDN saranno vuoti).--dns-timeout controlla i timeout della risoluzione DNS (secondi).geoip_online_cache.json nella directory di output (o directory di lavoro) a meno che non venga sovrascritto con --geoip-cache-path.--geoip-db-type auto utilizza l'estensione del file: -> MaxMind/DB-IP, -> IP2Location.*_group_remote_ip*.csv/json, *_group_process*.csv/json, *_group_country*.csv/json--deny-ip CIDR: Nega CIDR IP remoto(i)--group-by remote_ip,process,country: Output riepilogo per gruppo--top N: Limita i riepiloghi di gruppo ai primi N risultati--beacon-min-duration SECONDS: Durata minima per rilevamento beacon--beacon-min-packets COUNT: Numero minimo di pacchetti per rilevamento beacon--beacon-min-interval SECONDS: Intervallo medio minimo per rilevamento beacon--beacon-max-interval SECONDS: Intervallo medio massimo per rilevamento beacon--beacon-max-jitter SECONDS: Jitter massimo dell'intervallo per rilevamento beacon--beacon-max-rate PPS: Pacchetti massimi al secondo per rilevamento beacon--pattern-high-jitter SECONDS: Soglia di jitter dell'intervallo per pattern randomizzati--pattern-repeat-destination COUNT: Connessioni minime per segnalare destinazioni ripetute--pattern-max-byte-jitter BYTES: Intervallo massimo di dimensione in byte per consistenza--dns-pattern-min-queries COUNT: Query DNS minime per segnalare pattern--csv PATH: Percorso output CSV (default: outbound_connections.csv)--json PATH: Percorso output JSON (default: outbound_connections.json)--html PATH: Percorso output report HTML--pcap-out PATH: Scrive i pacchetti catturati in un file pcap--output-dir PATH: Scrive tutti i file di output in questa directory--no-console: Disabilita output tabella console--no-progress: Disabilita output di avanzamento--log-json: Emette avvisi/errori come righe JSON su stderr--track-bytes: Traccia i byte totali per connessione quando disponibile--geoip-db PATH: Percorso database GeoIP (.mmdb o IP2Location .BIN)--geoip-db-type {auto,maxmind,dbip,ip2location}: Tipo database GeoIP (default: auto)--geoip-online {ipapi,ip-api,ipinfo}: Usa servizio GeoIP online gratuito (con limite di richieste)--geoip-online-token TOKEN: Token API per provider GeoIP online (es. IPinfo)--geoip-cache-path PATH: Override del percorso cache JSON GeoIP online--geoip-timeout SECONDS: Timeout richiesta GeoIP online (default: 3.0)--geoip-retries COUNT: Tentativi di ripetizione GeoIP online (default: 2)--no-dns: Disabilita la risoluzione DNS inversa--dns-timeout SECONDS: Timeout risoluzione DNS (default: 2.0)last_seensourcebyte_count (quando --track-bytes è attivato)pattern_reasonbyte_minbyte_maxbyte_range--track-bytesdns_query, query_count, IP/porta risolutore, dettagli pattern e byte_min/byte_max/byte_range (con --track-bytes).mmdb.BINUS) invece dei nomi completi del paese.--geoip-db viene omesso, la colonna remote_country rimane vuota a meno che non si usi --geoip-online.--geoip-db che --geoip-online, viene utilizzato il database.--filter-port si applica alla porta remota (destinazione in uscita).--track-bytes aggiunge colonne byte_count e abilita i pattern di consistenza delle dimensioni.