
Schnüffelt ausgehenden Datenverkehr auf verdächtige, beaconartige Callbacks, denn wenn es planmäßig zurückkommt, ist es wahrscheinlich kein Frühstück.
Schnüffelt ausgehenden Datenverkehr auf verdächtige, beaconartige Rückrufe, denn wenn etwas immer wieder nach Plan zurückkommt, ist es wahrscheinlich kein Frühstück.
Bacon Sampler ist ein leichtgewichtiger Fänger für ausgehende Verbindungen, der das Brutzeln Ihres Netzwerkverkehrs belauscht und verdächtiges „Beacon-ähnliches“ Verhalten aufspürt – diese periodischen, langsamen Rückrufe, mit denen Malware gerne nach Hause telefoniert.
Es überwacht passiv ausgehende Verbindungen und DNS-Abfragen und hebt dann Muster wie gleichmäßige Intervalle, wiederholte Ziele, merkwürdiges Jitter und konsistente Paketgrößen hervor – im Grunde alles, was weniger nach normalem Surfen aussieht und mehr nach einem Bot, der Anweisungen abholt.
Betrachten Sie es als Beacon-Scanner, aber schmackhafter: Wenn etwas immer wieder zur gleichen Zeit zurückkommt … dann verkosten wir den Bacon.
.mmdb) oder DB-IP Lite (.mmdb).BIN)pip install -r requirements.txt
Laden Sie eine GeoIP-Datenbank herunter und notieren Sie den Pfad:
.mmdb).BIN)Wenn Sie eine kostenlose Online-Abfrage bevorzugen, können Sie diesen Schritt überspringen und --geoip-online verwenden.
Schnittstellen auflisten:
python capture_outbound.py --list-interfaces
Eine Schnittstelle nach Index auswählen:
python capture_outbound.py --interface 0
Mehrere Schnittstellen verwenden (wiederholbar):
python capture_outbound.py --interface "Ethernet" --interface "Wi-Fi"
Oder mit kommagetrennten Namen:
python capture_outbound.py --interfaces "Ethernet,Wi-Fi"
Nur-Pcap-Erfassung (A) mit Offline-GeoIP:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Pcap + netstat-Korrelation (B) mit Offline-GeoIP:
python capture_outbound.py --mode pcap_plus_netstat --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Pcap + netstat-Vereinigung (A+B):
python capture_outbound.py --mode both --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Online-GeoIP (kostenlos, ratenbegrenzt, auf Festplatte zwischengespeichert):
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi
Online-GeoIP mit IPinfo-Token:
$env:IPINFO_TOKEN="your_token_here"
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo
Oder Token explizit übergeben:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo --geoip-online-token "your_token_here"
Online-GeoIP-Timeouts und Wiederholungen optimieren:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi --geoip-timeout 2.5 --geoip-retries 1
Reverse-DNS deaktivieren (schnellere Läufe):
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --no-dns
DNS-Timeout einstellen:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --dns-timeout 0.5
Erfassung durch Paketzahl begrenzen:
python capture_outbound.py --mode pcap --duration 60 --packet-limit 5000
Nach Protokoll, Remote-Port und IP-CIDR filtern:
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
Gruppenzusammenfassungen und Top-N:
python capture_outbound.py --group-by remote_ip,process --top 10
Gesamtbytes pro Verbindung verfolgen:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --track-bytes
Fortschrittsausgabe deaktivieren:
python capture_outbound.py --no-progress
Konsolenausgabe deaktivieren:
python capture_outbound.py --no-console
Pcap + netstat-Vereinigung (A+B) + Online-GeoIP + Pcap + CSV + HTML schreiben:
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"
Nur-Pcap + Ausgabeordner + benutzerdefinierte CSV/JSON-Namen:
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"
Erkennung von Beacon-ähnlicher Aktivität (langsame Rückrufe):
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
Mustererkennung (gleichmäßige Intervalle, Jitter, wiederholte Ziele, konsistente Größen):
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
Strenge Beacon- + Pattern-Schwellenwerte mit Filterung:
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
DNS-fokussierte Erfassung (schnelle DNS-Abfrage + DNS-Muster):
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.jsonBenutzerdefinierte CSV/JSON-Ausgabepfade:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --csv "C:\Path\outbound.csv" --json "C:\Path\outbound.json"
Alle Ausgaben in einen Ordner senden:
python capture_outbound.py --mode pcap --duration 20 --output-dir "C:\Path\Reports"
HTML-Ausgabe schreiben:
python capture_outbound.py --html "outbound.html"
Eine Pcap-Datei schreiben:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --pcap-out "capture.pcap"
--mode {pcap,pcap_plus_netstat,both}: Erfassungsstrategie (Standard: pcap)--duration SECONDS: Erfassungsdauer (Standard: 15)--packet-limit COUNT: Stopp nach N Paketen (0 = unbegrenzt)--list-interfaces: Npcap-Schnittstellen anzeigen und beenden--interface NAME: Name der Erfassungsschnittstelle (wiederholbar)--interfaces "NAME,NAME": Kommagetrennte Schnittstellennamen--filter-protocol tcp,udp: Protokollfilter (wiederholbar oder kommagetrennt)--filter-port 80,443,1000-2000: Remote-Port-Filter--allow-ip CIDR: Erlaubte Remote-IP-CIDR(s)Hauptausgaben (--csv/--json) enthalten Felder:
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, , Abgeleitete Ausgaben umfassen:
remote_ip, remote_port, remote_hostname, remote_fqdn, remote_countrypid, process_name, connection_count, unique_remote_ipsremote_ip, process oder countrybeacon_reasonpattern_type/,
// (mit ) und Zielsummen--mode pcap_plus_netstat reichert nur erfasste Verbindungen mit PID/Prozessdaten an.--mode both fügt netstat-only-Verbindungen zur endgültigen Ausgabe hinzu.2.--log-json formatiert Warnungen/Fehler als JSON-Zeilen (nützlich für die Weiterverarbeitung).--duration ist in Sekunden.--packet-limit stoppt die Erfassung nach N Paketen, auch wenn die Dauer noch nicht abgelaufen ist.--no-dns überspringt die Reverse-DNS-Auflösung (Hostname/FQDN bleiben leer).--dns-timeout steuert das DNS-Abfrage-Timeout (Sekunden).geoip_online_cache.json im Ausgabeverzeichnis (oder Arbeitsverzeichnis) zwischengespeichert, sofern nicht mit --geoip-cache-path überschrieben.*_group_remote_ip*.csv/json, *_group_process*.csv/json, *_group_country*.csv/json--deny-ip CIDR: Abgelehnte Remote-IP-CIDR(s)--group-by remote_ip,process,country: Gruppenausgabe--top N: Begrenze Gruppenzusammenfassungen auf die obersten N Zeilen--beacon-min-duration SECONDS: Mindestdauer für Beacon-Erkennung--beacon-min-packets COUNT: Mindestpaketanzahl für Beacon-Erkennung--beacon-min-interval SECONDS: Mindestdurchschnittsintervall für Beacon-Erkennung--beacon-max-interval SECONDS: Maximales Durchschnittsintervall für Beacon-Erkennung--beacon-max-jitter SECONDS: Maximaler Intervall-Jitter für Beacon-Erkennung--beacon-max-rate PPS: Maximale Pakete pro Sekunde für Beacon-Erkennung--pattern-high-jitter SECONDS: Intervall-Jitter-Schwellenwert für zufällige Muster--pattern-repeat-destination COUNT: Mindestverbindungen, um wiederholte Ziele zu kennzeichnen--pattern-max-byte-jitter BYTES: Maximale Bytegroßenspanne für Konsistenz--dns-pattern-min-queries COUNT: Mindest-DNS-Abfragen, um Muster zu kennzeichnen--csv PFAD: CSV-Ausgabepfad (Standard: outbound_connections.csv)--json PFAD: JSON-Ausgabepfad (Standard: outbound_connections.json)--html PFAD: HTML-Berichtsausgabepfad--pcap-out PFAD: Erfasste Pakete in eine Pcap-Datei schreiben--output-dir PFAD: Alle Ausgabedateien in dieses Verzeichnis schreiben--no-console: Konsolentabellenausgabe deaktivieren--no-progress: Fortschrittsausgabe deaktivieren--log-json: Warnungen/Fehler als JSON-Zeilen nach stderr ausgeben--track-bytes: Gesamtbytes pro Verbindung verfolgen, wenn verfügbar--geoip-db PFAD: GeoIP-Datenbankpfad (.mmdb oder IP2Location .BIN)--geoip-db-type {auto,maxmind,dbip,ip2location}: GeoIP-DB-Typ (Standard: auto)--geoip-online {ipapi,ip-api,ipinfo}: Kostenlosen Online-GeoIP-Dienst verwenden (ratenbegrenzt)--geoip-online-token TOKEN: API-Token für Online-GeoIP-Anbieter (z. B. IPinfo)--geoip-cache-path PFAD: Online-GeoIP-Cache-JSON-Pfad überschreiben--geoip-timeout SECONDS: Online-GeoIP-Anfrage-Timeout (Standard: 3.0)--geoip-retries COUNT: Online-GeoIP-Wiederholungsversuche (Standard: 2)--no-dns: Reverse-DNS-Abfrage deaktivieren--dns-timeout SECONDS: DNS-Abfrage-Timeout (Standard: 2.0)last_seensourcebyte_count (wenn --track-bytes aktiviert ist)pattern_reasonbyte_minbyte_maxbyte_range--track-bytesdns_query, query_count, Resolver-IP/Port, Musterdetails und
byte_min/byte_max/byte_range (mit --track-bytes)--geoip-db-type auto verwendet die Dateierweiterung: .mmdb -> MaxMind/DB-IP, .BIN -> IP2Location.US) statt vollständiger Ländernamen.--geoip-db weggelassen wird, bleibt die Spalte remote_country leer, es sei denn, --geoip-online wird verwendet.--geoip-db als auch --geoip-online angegeben sind, wird die Datenbank verwendet.--filter-port bezieht sich auf den Remote-Port (ausgehendes Ziel).--track-bytes fügt byte_count-Spalten hinzu und ermöglicht Größenkonsistenzmuster.