SUNBURST
Detection for SUNBURST C2 Stage-1 using Shannon Entropy
关于:
使用香农熵检测域名生成算法(DGA)。
该函数仅接收FQDN输入,或从CSV文件读取。
语法:Prefix_or_subdomain.Domain.TLD
由于APT利用长字符串DGA进行杀伤链C2而开发。
识别高熵(>2倍标准差)的长字符串URL。
关注长前缀/子域名URL的前2.5%。
保存额外元数据供CND分析师使用(例如前缀长度)
要求:
- Python 3.9+
- Python存在于PATH环境变量中
- 列出所有导入项(如有必要,使用pip install)
- 输入DNS日志每行一个FQDN(无其他标点)
- Cisco Top-1M(CSV、ZIP)或Majestic Top-1M(CSV)文件与脚本位于同一文件夹。
运行方法(交互模式开启,见变量部分):
- 安装Python 3.9.x
- 准备所有输入文件并确保格式正确(域名在文本文件中,每行一个,无标点)
- 确保输入文件与此脚本位于同一目录/文件夹。
4a) (Windows) 在Python IDLE或Visual Studio Code中打开此脚本。
4b) (Linux) $~: python3 shannon.py
- 输入要检查的DNS日志文件。
- 输入要使用的Cisco Umbrella(CSV/ZIP)或Majestic Top-1M文件(CSV)。
- 等待生成频率和香农熵值。
- 检查输出文件。
运行方法(交互模式关闭,见变量部分):
- 安装Python 3.9.x
- 准备所有输入文件并确保格式正确(域名在文本文件中,每行一个,无标点)
- 确保输入文件与此脚本位于同一目录/文件夹。
4a) (Windows) 在Python IDLE或Visual Studio Code中打开此脚本。
4b) (Linux) $~: python3 shannon.py
- 要分析的输入日志为"domains.txt",见变量部分。
- 选择Top-N文件以构建字典概率,见变量部分。
- 等待生成频率和香农熵值。
- 检查输出文件。
假设:
- 大写和小写字母出现的概率相等。
a) 忽略TOR节点改变DNS查询的大小写敏感性及0x20编码。
- ETOAN字符频率图不足,因缺少:0-9、"-"和""
a) 域名可以包含连字符(-)、下划线()和数字。
- 非设计用于对抗ExploderBot DGA。
- 输入:纯文本文件,每个URL占一行,无其他内容。
- 输入仅由URL字符串组成,不含禁止字符。
- 输入和输出文件必须与此脚本位于同一文件夹。
- Python3在PATH环境变量中。
数据集(域名):
使用的数据集来自从SQLite提取的Pi-Hole查询日志(12小时窗口)。
BASH:
$~: sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain FROM queries WHERE timestamp >='$(($(date +%s) - 43200))'" > domains.txt
使用 Excel > 数据 > 删除重复项 进行去重
还移除了反向查询(PTR)in-addr.arpa的数据。
数据集(概率):
本脚本利用RedCanary的DGA分析结果,输入URL并计算香农熵。
DevOps测试阶段线:
- shannon.py (1.0) - 使计算能够与静态RedCanary字典配合工作。
- shannon.py (1.1) - 微小测试合并到1.0中。
- dictionary.py (1.0) - 测试打开/关闭Cisco + Majestic Top-1M。
- shannon.py (2.0) - 合并1.0与dictionary.py的测试功能。
参考:
Splunk香农熵 - 此想法的来源*
https://www.splunk.com/en_us/blog/tips-and-tricks/when-entropy-meets-shannon.html
SANS Mark Baggett - RedCanary用于分析Alexa Top 1M的工具
https://github.com/markbaggett/freq
RedCanary - 概率评分来源的博客
https://redcanary.com/blog/threat-hunting-entropy/
Alexa Top 1M域名 - RedCanary使用的语料库
https://www.alexa.com/topsites
DGA检测器
https://github.com/exp0se/dga_detector
香农熵 - 公式
https://towardsdatascience.com/the-intuition-behind-shannons-entropy-e74820fe9800