0xbitx/DEDSEC_ETA
GitHub: 0xbitx/DEDSEC_ETA
DEDSEC ETA 是一款自动化邮件威胁分析工具,通过九层检测规则对可疑邮件进行评分、分类和 MITRE ATT&CK 映射,帮助 SOC 分析师高效完成钓鱼邮件分诊和事件响应移交。
Stars: 1 | Forks: 0
DEDSEC ETA
Email Threat Analyzer
## 概述 DEDSEC ETA 是一款为安全运营工作流构建的自动化邮件威胁检测工具。它通过 IMAP 直连 Gmail 收件箱,接收传入的邮件,并应用多层次的检测规则来发现网络钓鱼企图、企业邮件入侵指示器和恶意 payload。该工具旨在展示在威胁分析、自动化和检测工程方面的实践能力——这些都是安全运营中心(SOC)分析师所必需的核心能力。 每封邮件都会被拆解并在九个独立的检测层中进行检查。检测结果会被评分、按风险等级分类、映射到 MITRE ATT&CK 技术 ID,并以适用于分诊或事件响应移交的结构化表格形式呈现。报告生成功能会为每封被标记的邮件生成专业的 PDF、机器可读的 JSON 导出文件,以及 STIX 2.1、MISP 和 CSV 格式的 IOC 提取文件。 ## 检测层 ### 认证头分析 (SPF / DKIM / DMARC) 解析 `Received-SPF` 和 `Authentication-Results` 标头,以确定发送服务器是否通过了 SPF、DKIM 和 DMARC 检查。SPF 检查失败是发件人地址被伪造的高可信度指示器。DKIM 和 DMARC 失败表明无法验证邮件完整性,或者违反了发送域的策略。 ### 发件人伪造检测 检查企业邮件入侵攻击中常被利用的三个冒充向量。**Reply-To 不匹配**将 `Reply-To` 标头域与 `From` 域进行比较——攻击者通常会设置一个看似合法的 `From` 地址,同时将回复路由到攻击者控制的收件箱。**Return-Path 不匹配**将信封的 `Return-Path` 与可见的 `From` 域进行比较。**显示名伪造**检查显示名是否包含已知的品牌名称,而实际邮件域并不属于该品牌。 ### 语言学分析 该工具使用 NLTK 对邮件正文进行分词,并应用自然语言处理技术来识别异常。一个精心挑选的合法英语词汇语料库用于标记拼写错误或故意混淆的单词。系统还会扫描紧急触发词、恐吓性措辞、敏感凭证请求,以及冒充 PayPal、Microsoft、Apple 和金融机构等受信任品牌的行为。缺乏收件人个性化的通用问候语会被标记为群发钓鱼的指示器。 ### URL 和域名检查 收集并规范化嵌入在 HTML 中的所有超链接以及从邮件正文中提取的所有纯文本 URL。每个域名都会根据多个威胁情报源进行检查: * **短链接服务检测**——包含 40 多个已知缩短服务的参考列表被标记,因为它们掩盖了真实目的地 * **隧道和端口转发服务**——与 ngrok、Cloudflare Tunnel、LocalTunnel 和类似平台关联的域名被标记为攻击者基础设施 * **域名仿冒检测**——针对受信任的品牌域名进行模糊字符串匹配,以识别相似域名 ### 附件检查和 VirusTotal 查询 根据已知的危险类型检查文件扩展名:直接可执行文件、脚本文件、启用宏的 Office 文档和压缩归档文件。还会检测旨在欺骗用户的双扩展名模式。每个附件 payload 都使用 SHA256 和 MD5 进行哈希处理,并在 VirusTotal API 中查询该哈希值以获取多厂商检测率。结果会在本地缓存,以避免重复的 API 调用。 ### WHOIS 域名年龄检查 通过 WHOIS 查询发件人的域名以确定其注册日期。注册不到 30 天的域名会被标记为高风险——新注册的域名绝大多数与钓鱼活动和一次性的攻击者基础设施有关。 ### MITRE ATT&CK 映射 每个检测信号都会被标记上相应的 MITRE ATT&CK 技术 ID:T1566 (Phishing)、T1566.001 (Spearphishing Attachment)、T1566.002 (Spearphishing Link)、T1557 (Adversary-in-the-Middle)、T1027.011 (Obfuscated Files: URL Shortening)、T1090.001 (Proxy: Internal Proxy)、T1583.001 (Acquire Infrastructure: Domains)、T1204.002 (User Execution: Malicious File) 和 T1027.002 (Obfuscated Files: Archive)。 ### 风险评分 每个检测层都会为综合风险评分贡献加权分数。SPF 失败、隧道域名、VirusTotal 检出和发件人伪造等高可信度指示器所占权重最大。该分数映射到三级分类:**安全**、**可疑**或**恶意**。 ### 受信任发件人白名单 可配置的发件人地址和受信任域名白名单可防止来自已知合法源的误报。匹配此列表中条目的邮件在扫描期间会被静默跳过。 ## 操作工作流 1. 配置一个带有应用专用密码的 Gmail 帐户。凭证使用带有 Base64 编码的 XOR 密码进行静态加密。 2. (可选)将 VirusTotal API 密钥放入 `virustotal.api` 文件中,以启用基于哈希的附件查询。没有它,该工具也能完全正常运行。 3. 选择扫描模式:针对特定发件人、扫描整个收件箱、实时监控或清除垃圾邮件。 4. 邮件以可配置的批次获取,并通过线程池并发处理。 5. 每封经过分析的邮件都会生成一份结构化的终端报告。每封被标记的邮件都会自动生成报告(PDF + JSON + STIX + MISP + CSV)。扫描结束时会显示一个总结仪表板。 ## 示例输出 ``` FROM: someone@phishingsite.com SUBJECT: Verify Your Account Now RISK: Malicious SCORE: 14 ──────────────────────────────────────────────────────────── Type Value ──────────────────────────────────────────────────────────── Auth Headers SPF: Fail | DKIM: Fail | DMARC: Pass Keywords verify, account, urgent URLs http://bit.ly/fake-login Interesting Words acount, verifcation, updat Attachment Flags Executable file: invoice.exe VT Detection: invoice.exe flagged by 12/70 vendors VirusTotal invoice.exe: 12 malicious / 2 suspicious / 70 total Domain Age phishingsite.com: 3 days old (created 2026-07-20) MITRE ATT&CK T1566.001 - Spearphishing Attachment T1027.011 - Obfuscated Files: URL Shortening T1204.002 - User Execution: Malicious File T1583.001 - Acquire Infrastructure: Domains Content Flags Urgency or scare tactic detected Sensitive info requested Display name spoofing: 'PayPal Support' but domain is phishingsite.com Possible Phishing ──────────────────────────────────────────────────────────── Domain Typosquat Tunnel Shorten ──────────────────────────────────────────────────────────── [1] bit.ly No No Yes [2] ngrok.io No Yes No ──────────────────────────────────────────────────────────── ``` ## 报告 每次扫描会为每封被标记的邮件生成多个工件,并保存到 `reports/` 目录中: | 格式 | 文件模式 | 用途 | |---|---|---| | PDF | `email_report_*.pdf` | 事件案例文件附件,分析师交接 | | JSON | `email_analysis_*.json` | SIEM/SOAR 摄取,自定义仪表板 | | STIX 2.1 | `iocs_*.stix.json` | 与 ISAC 和其他 SOC 共享威胁情报 | | MISP | `iocs_*.misp.json` | 直接导入 MISP 实例 | | CSV | `iocs_*.csv` | Splunk、ELK 或 Excel 摄取 | **扫描摘要**仪表板会在每次批量扫描后打印汇总指标: ``` ╭──────────────────────────┬──────────────────────────────────────╮ │ SCAN SUMMARY │ │ ├──────────────────────────┼──────────────────────────────────────┤ │ Total scanned │ 247 │ │ Flagged │ 31 (12.5%) │ │ Malicious │ 8 │ │ Suspicious │ 23 │ │ Safe │ 184 │ │ Whitelisted (skipped) │ 0 │ ├──────────────────────────┼──────────────────────────────────────┤ │ Domain │ ngrok.io (4) │ │ Keyword │ verify (12) │ ├──────────────────────────┼──────────────────────────────────────┤ │ Average risk score │ 3.2 │ │ Reports generated │ 31 PDF / 31 JSON / 31 IOC │ ╰──────────────────────────┴──────────────────────────────────────╯ ``` ## 检测库 由 DEDSEC ETA 执行的真实邮件分析。每个条目都显示了自动分诊期间生成的终端输出,正如分析师在调查期间看到的那样。 ### 1. 合法邮件 (安全) 来自已知发件人的正常邮件通过了所有身份验证检查,且未触发任何检测层。 ``` ╭────────────────────────────────────────────────────────────────────────╮ │ ╭──────────┬───────────────────────────────────────╮ │ │ │ FROM: │ niki@cloudns.net │ │ │ ├──────────┼───────────────────────────────────────┤ │ │ │ SUBJECT: │ How's your ClouDNS experience so far? │ │ │ ├──────────┼───────────────────────────────────────┤ │ │ │ RISK: │ Safe │ │ │ ├──────────┼───────────────────────────────────────┤ │ │ │ SCORE: │ 1 │ │ │ ╰──────────┴───────────────────────────────────────╯ │ ├────────────────────────────────────────────────────────────────────────┤ │ ╭───────────────────┬────────────────────────────────────────────────╮ │ │ │ Type │ Value │ │ │ ├───────────────────┼────────────────────────────────────────────────┤ │ │ │ Keywords │ account │ │ │ ├───────────────────┼────────────────────────────────────────────────┤ │ │ │ URLs │ https://www.linkedin.com/company/cloud-dns-ltd │ │ │ │ │ https://www.facebook.com/cloudns/ │ │ │ │ │ https://twitter.com/ClouDNS │ │ │ │ │ https://www.youtube.com/c/CloudnsNet │ │ │ ├───────────────────┼────────────────────────────────────────────────┤ │ │ │ Interesting Words │ cloudns, dns, iskar, rasheva, str │ │ │ ├───────────────────┼────────────────────────────────────────────────┤ │ │ │ Auth Headers │ SPF: Pass | DKIM: Pass | DMARC: Pass │ │ │ ├───────────────────┼────────────────────────────────────────────────┤ │ │ │ Domain Age │ 6073 days (created: 2009-12-06) │ │ │ ├───────────────────┼────────────────────────────────────────────────┤ │ │ │ MITRE ATT&CK │ T1566 - Phishing │ │ │ ╰───────────────────┴────────────────────────────────────────────────╯ │ ├────────────────────────────────────────────────────────────────────────┤ │ ╭──────────────────┬─────────────┬──────────┬───────────╮ │ │ │ Domain │ Typosquat │ Tunnel │ Shorten │ │ │ ├──────────────────┼─────────────┼──────────┼───────────┤ │ │ │ [1] linkedin.com │ No │ No │ No │ │ │ ├──────────────────┼─────────────┼──────────┼───────────┤ │ │ │ [2] facebook.com │ No │ No │ No │ │ │ ├──────────────────┼─────────────┼──────────┼───────────┤ │ │ │ [3] twitter.com │ No │ No │ No │ │ │ ├──────────────────┼─────────────┼──────────┼───────────┤ │ │ │ [4] youtube.com │ No │ No │ No │ │ │ ╰──────────────────┴─────────────┴──────────┴───────────╯ │ ╰────────────────────────────────────────────────────────────────────────╯ ``` | 工具输出 | |----------| |  | | 报告输出 | |----------| | 报告 | | [email_report_niki_at_cloudns.net_20260724_030609.pdf](https://github.com/user-attachments/files/30319381/email_report_niki_at_cloudns.net_20260724_030609.pdf) | | Json 报告 | | [email_analysis_niki_at_cloudns.net_20260724_030609.json](https://github.com/user-attachments/files/30319383/email_analysis_niki_at_cloudns.net_20260724_030609.json) | ### 2. 包含 SPF、DKIM、DMARC 失败及隧道 URL 的钓鱼尝试(我自己的高级鱼叉式网络钓鱼工具) 一封冒充 Gmail 的凭证收集邮件。SPF、DKIM、DMARC 检查失败,检测到隧道 URL,并且紧急语言触发了内容标记。 ``` ╭───────────────────────────────────────────────────────────────────────╮ │ ╭──────────┬────────────────────────────────────╮ │ │ │ FROM: │ anonymous.service.mailer@gmail.com │ │ │ ├──────────┼────────────────────────────────────┤ │ │ │ SUBJECT: │ Security Alert │ │ │ ├──────────┼────────────────────────────────────┤ │ │ │ RISK: │ Malicious │ │ │ ├──────────┼────────────────────────────────────┤ │ │ │ SCORE: │ 7 │ │ │ ╰──────────┴────────────────────────────────────╯ │ ├───────────────────────────────────────────────────────────────────────┤ │ ╭───────────────────┬───────────────────────────────────────────────╮ │ │ │ Type │ Value │ │ │ ├───────────────────┼───────────────────────────────────────────────┤ │ │ │ Keywords │ reset, account │ │ │ ├───────────────────┼───────────────────────────────────────────────┤ │ │ │ URLs │ https://myaccount.google.com/notifications │ │ │ │ │ mix-solaris-istanbul-signal.trycloudflare.com │ │ │ ├───────────────────┼───────────────────────────────────────────────┤ │ │ │ Interesting Words │ didn, https, llc, usa │ │ │ ├───────────────────┼───────────────────────────────────────────────┤ │ │ │ Auth Headers │ SPF: Unknown | DKIM: Unknown | DMARC: Unknown │ │ │ ├───────────────────┼───────────────────────────────────────────────┤ │ │ │ Domain Age │ 11302 days (created: 1995-08-13) │ │ │ ├───────────────────┼───────────────────────────────────────────────┤ │ │ │ Content Flags │ Possible spoofed brand name │ │ │ │ │ Sensitive info requested │ │ │ │ │ Possible Phishing │ │ │ ├───────────────────┼───────────────────────────────────────────────┤ │ │ │ MITRE ATT&CK │ T1566 - Phishing │ │ │ │ │ T1557 - Adversary-in-the-Middle │ │ │ │ │ T1566 - Phishing │ │ │ │ │ T1090.001 - Proxy: Internal Proxy │ │ │ │ │ T1566 - Phishing │ │ │ ╰───────────────────┴───────────────────────────────────────────────╯ │ ├───────────────────────────────────────────────────────────────────────┤ │ ╭───────────────────────┬─────────────┬──────────┬───────────╮ │ │ │ Domain │ Typosquat │ Tunnel │ Shorten │ │ │ ├───────────────────────┼─────────────┼──────────┼───────────┤ │ │ │ [1] google.com │ No │ No │ No │ │ │ ├───────────────────────┼─────────────┼──────────┼───────────┤ │ │ │ [2] trycloudflare.com │ No │ Yes │ No │ │ │ ╰───────────────────────┴─────────────┴──────────┴───────────╯ │ ╰───────────────────────────────────────────────────────────────────────╯ ``` | 鱼叉式钓鱼工具输出 | |----------| |  | | 工具输出 | |----------| |  | | 报告输出 | |----------| | 报告 | | [email_report_anonymous.service.mailer_at_gmail.com_20260724_023403.pdf](https://github.com/user-attachments/files/30319230/email_report_anonymous.service.mailer_at_gmail.com_20260724_023403.pdf) | | Json 报告 | | [email_analysis_anonymous.service.mailer_at_gmail.com_20260724_023403.json](https://github.com/user-attachments/files/30319238/email_analysis_anonymous.service.mailer_at_gmail.com_20260724_023403.json) | ## 技术栈 | 包 | 用途 | |---|---| | `nltk`, `pyspellchecker` | 自然语言处理,拼写错误检测 | | `BeautifulSoup4` | HTML 邮件正文解析,URL 提取 | | `tldextract` | 域名规范化 | | `tabulate` | 终端输出表格格式化 | | `fpdf` | PDF 报告生成 | | `python-whois` | 域名注册年龄验证 | | `imaplib`, `smtplib` | Gmail IMAP 和 SMTP 连接 | | `concurrent.futures` | 多线程邮件处理 | | `hashlib` | 附件校验和计算 | | `ipaddress` | 用于 IOC 导出的 IP 验证 | | `json`, `csv` | 结构化数据导出 | ## 安装 ``` git clone https://github.com/0xbitx/DEDSEC_ETA.git cd DEDSEC_ETA pip3 install -r requirements.txt chmod +x dedsec-eta ``` 要启用 VirusTotal 附件查询,请将您的 API 密钥放在项目根目录下名为 `virustotal.api` 的文件中: ``` echo "your-api-key-here" > virustotal.api ``` 该工具在没有 VirusTotal 密钥的情况下也能完全运行。附件哈希处理仍会进行,并且哈希值将包含在所有报告中,以供手动查询。 运行: ``` ./dedsec-eta ``` ### 如何获取您的 GMAIL 密钥 1. 访问此链接:https://myaccount.google.com/u/0/apppasswords
标签:逆向工具