嗅探出站流量中可疑的信标式回调,因为如果它按时反复出现,那很可能不是早餐。
Bacon Sampler 是一款轻量级的出站连接捕获工具,它嗅探你网络流量中的“滋滋声”,并标记可疑的“信标式”行为——那些恶意软件喜欢用来与外界通信的周期性、低慢速回调。
它被动监控出站连接和 DNS 查询,然后突出显示诸如稳定间隔、重复目标、异常的抖动以及一致的数据包大小等模式——基本上任何看起来不像正常浏览行为、更像僵尸程序在等待指令的东西。
你可以把它想象成一个更美味的 Beacon Scanner:如果某个东西每次都在相同的时间返回……那我们就在品尝培根了。
.mmdb) 或 DB-IP Lite (.mmdb).BIN)pip install -r requirements.txt
下载一个 GeoIP 数据库并记下路径:
.mmdb).BIN)如果你喜欢免费在线查询,你可以跳过这一步,改用 --geoip-online。
列出接口:
python capture_outbound.py --list-interfaces
按索引选择接口:
python capture_outbound.py --interface 0
使用多个接口(可重复指定):
python capture_outbound.py --interface "Ethernet" --interface "Wi-Fi"
或者使用逗号分隔的名称:
python capture_outbound.py --interfaces "Ethernet,Wi-Fi"
仅 pcap 捕获(A) + 离线 GeoIP:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Pcap + netstat 关联(B) + 离线 GeoIP:
python capture_outbound.py --mode pcap_plus_netstat --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
Pcap + netstat 联合(A+B):
python capture_outbound.py --mode both --duration 20 --interface "Ethernet" --geoip-db "C:\Path\GeoLite2-Country.mmdb"
在线 GeoIP(免费,有速率限制,缓存到磁盘):
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi
使用 IPinfo 令牌的在线 GeoIP:
$env:IPINFO_TOKEN="your_token_here"
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo
或者显式传递令牌:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipinfo --geoip-online-token "your_token_here"
调整在线 GeoIP 超时和重试次数:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --geoip-online ipapi --geoip-timeout 2.5 --geoip-retries 1
禁用反向 DNS(加快运行速度):
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --no-dns
调整 DNS 超时:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --dns-timeout 0.5
按数据包数量限制捕获:
python capture_outbound.py --mode pcap --duration 60 --packet-limit 5000
按协议、远程端口和 IP CIDR 过滤:
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
分组汇总和 top N:
python capture_outbound.py --group-by remote_ip,process --top 10
追踪每个连接的总字节数:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --track-bytes
禁用进度输出:
python capture_outbound.py --no-progress
禁用控制台输出:
python capture_outbound.py --no-console
Pcap + netstat 联合(A+B) + 在线 GeoIP + 写入 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 + 输出文件夹 + 自定义 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"
信标式活动检测(低慢速回调):
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
模式检测(稳定间隔、抖动、重复目标、一致大小):
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
紧凑的信标 + 模式阈值与过滤:
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 聚焦捕获(快速 DNS 查询 + 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/json自定义 CSV/JSON 输出路径:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --csv "C:\Path\outbound.csv" --json "C:\Path\outbound.json"
将所有输出发送到文件夹:
python capture_outbound.py --mode pcap --duration 20 --output-dir "C:\Path\Reports"
写入 HTML 输出:
python capture_outbound.py --html "outbound.html"
写入 pcap 文件:
python capture_outbound.py --mode pcap --duration 20 --interface "Ethernet" --pcap-out "capture.pcap"
--mode {pcap,pcap_plus_netstat,both}:捕获策略(默认:pcap)--duration SECONDS:捕获持续时间(默认:15)--packet-limit COUNT:在 N 个数据包后停止(0 = 无限制)--list-interfaces:显示 Npcap 接口并退出--interface NAME:捕获接口名称(可重复)--interfaces "NAME,NAME":逗号分隔的接口名称--filter-protocol tcp,udp:协议过滤器(可重复或逗号分隔)--filter-port 80,443,1000-2000:远程端口过滤器--allow-ip CIDR:允许的远程 IP CIDR--deny-ip CIDR:拒绝的远程 IP CIDR--group-by remote_ip,process,country:分组汇总输出--top N:将分组汇总限制为前 N 行--beacon-min-duration SECONDS:信标检测的最小持续时间--beacon-min-packets COUNT:信标检测的最小数据包数--beacon-min-interval SECONDS:信标检测的最小平均间隔--beacon-max-interval SECONDS:信标检测的最大平均间隔--beacon-max-jitter SECONDS:信标检测的最大间隔抖动--beacon-max-rate PPS:信标检测的最大每秒数据包数--pattern-high-jitter SECONDS:随机模式中的间隔抖动阈值--pattern-repeat-destination COUNT:标记重复目标所需的最小连接数--pattern-max-byte-jitter BYTES:一致性检查的最大字节大小范围--dns-pattern-min-queries COUNT:标记模式所需的最小 DNS 查询数--csv PATH:CSV 输出路径(默认:outbound_connections.csv)--json PATH:JSON 输出路径(默认:outbound_connections.json)--html PATH:HTML 报告输出路径--pcap-out PATH:将捕获的数据包写入 pcap--output-dir PATH:将所有输出文件写入此目录--no-console:禁用控制台表格输出--no-progress:禁用进度输出--log-json:将警告/错误以 JSON 行格式发送到 stderr--track-bytes:在可用时追踪每个连接的总字节数--geoip-db PATH:GeoIP 数据库路径(.mmdb 或 IP2Location .BIN)--geoip-db-type {auto,maxmind,dbip,ip2location}:GeoIP 数据库类型(默认:auto)--geoip-online {ipapi,ip-api,ipinfo}:使用免费在线 GeoIP 服务(有速率限制)--geoip-online-token TOKEN:在线 GeoIP 提供商的 API 令牌(例如 IPinfo)--geoip-cache-path PATH:覆盖在线 GeoIP 缓存 JSON 路径--geoip-timeout SECONDS:在线 GeoIP 请求超时(默认:3.0)--geoip-retries COUNT:在线 GeoIP 重试次数(默认:2)--no-dns:禁用反向 DNS 查询--dns-timeout SECONDS:DNS 查询超时(默认:2.0)主要输出(--csv/--json)包含的字段: