
Renifle le trafic sortant à la recherche de rappels suspects ressemblant à des balises, car si ça revient régulièrement, ce n'est probablement pas le petit-déjeuner.
Sniffe le trafic sortant pour les rappels suspects de type beacon, car si ça revient régulièrement, ce n'est probablement pas le petit-déjeuner.
Bacon Sampler est un capteur léger de connexions sortantes qui renifle le grésillement de votre trafic réseau et signale les comportements suspects de type « beacon » – ces rappels périodiques, lents et discrets que les malwares adorent utiliser pour communiquer avec leur serveur de commande.
Il surveille passivement les connexions sortantes et les requêtes DNS, puis met en évidence des schémas tels que des intervalles réguliers, des destinations répétées, une gigue étrange et des tailles de paquets cohérentes – en gros, tout ce qui ressemble moins à une navigation normale qu'à un bot qui se connecte pour recevoir des instructions.
Considérez-le comme un Scanner de Beacons, mais plus savoureux : si quelque chose revient exactement à la même heure à chaque fois… nous goûtons le bacon.
.mmdb) ou DB-IP Lite (.mmdb).BIN)pip install -r requirements.txt
Téléchargez une base GeoIP et notez le chemin :
.mmdb).BIN)Si vous préférez une recherche en ligne gratuite, vous pouvez ignorer cette étape et utiliser --geoip-online.
Lister les interfaces :
python capture_outbound.py --list-interfaces
Choisir une interface par son index :
python capture_outbound.py --interface 0
Utiliser plusieurs interfaces (répétable) :
python capture_outbound.py --interface "Ethernet" --interface "Wi-Fi"
Ou avec des noms séparés par des virgules :
python capture_outbound.py --interfaces "Ethernet,Wi-Fi"
Capture Pcap uniquement (A) avec GeoIP hors ligne :
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Pcap + corrélation netstat (B) avec GeoIP hors ligne :
python capture_outbound.py --mode pcap_plus_netstat --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Pcap + netstat union (A+B) :
python capture_outbound.py --mode both --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
GeoIP en ligne (gratuit, limité en taux, mis en cache sur disque) :
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi
GeoIP en ligne avec token IPinfo :
$env:IPINFO_TOKEN="your_token_here"
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo
Ou passer le token explicitement :
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo --geoip-online-token "your_token_here"
Ajuster le délai d'attente et les tentatives de GeoIP en ligne :
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi --geoip-timeout 2.5 --geoip-retries 1
Désactiver le DNS inversé (exécutions plus rapides) :
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --no-dns
Ajuster le délai d'attente DNS :
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --dns-timeout 0.5
Limiter la capture par nombre de paquets :
python capture_outbound.py --mode pcap --duration 60 --packet-limit 5000
Filtrer par protocole, port distant et 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
Résumés par groupe et N premiers :
python capture_outbound.py --group-by remote_ip,process --top 10
Suivre le nombre total d'octets par connexion :
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --track-bytes
Désactiver la sortie de progression :
python capture_outbound.py --no-progress
Désactiver la sortie console :
python capture_outbound.py --no-console
Pcap + netstat union (A+B) + GeoIP en ligne + Écrire un 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"
Pcap uniquement + dossier de sortie + noms CSV/JSON personnalisés :
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"
Détection d'activité de type beacon (rappels lents et discrets) :
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
Détection de schémas (intervalles réguliers, gigue, destinations répétées, tailles cohérentes) :
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
Seuils beacon + schémas serrés avec filtrage :
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
Capture centrée DNS (résolution DNS rapide + schémas 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.json*_group_remote_ip*.csv/json, *_group_process*.csv/json, *_group_country*.csv/jsonChemins CSV/JSON de sortie personnalisés :
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --csv "C:\Path\outbound.csv" --json "C:\Path\outbound.json"
Envoyer toutes les sorties vers un dossier :
python capture_outbound.py --mode pcap --duration 20 --output-dir "C:\Path\Reports"
Écrire la sortie HTML :
python capture_outbound.py --html "outbound.html"