harshb30/Honeypot-SIEM-AWS-Lab

GitHub: harshb30/Honeypot-SIEM-AWS-Lab

基于 AWS 搭建的 Cowrie 蜜罐与 Splunk SIEM 威胁检测实验环境,用于捕获并分析真实僵尸网络攻击与恶意软件投递行为。

Stars: 0 | Forks: 0

# 威胁检测实验室:AWS 上的 Cowrie 蜜罐 + Splunk SIEM ![AWS](https://img.shields.io/badge/AWS-%23FF9900.svg?style=for-the-badge&logo=amazon-aws&logoColor=white) ![Splunk](https://img.shields.io/badge/splunk-000000?style=for-the-badge&logo=splunk&logoColor=white) ![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white) ![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white) ## 目标 构建了一个 AWS 实验环境来模拟端到端的威胁检测:在 docker 中部署 Cowrie SSH 蜜罐,通过 Splunk Universal Forwarder 转发实时攻击日志,并将 JSON 日志接入 Splunk SIEM 以进行实时分析。 ## 架构流程 AWS-Honeypot-SIEM drawio --- ## 工具与技术 | 角色 | 工具 / 技术 | |---|---| | 云基础设施 | AWS EC2, AWS VPC, Security Groups (Firewalls) | | SIEM | Splunk Enterprise, AWS EC2 上的 Splunk Universal Forwarder | | 蜜罐 | AWS EC2 上的 Cowrie Docker | | 攻击 | 真实世界的攻击者/僵尸网络 | | 容器化 | Docker | ## 阶段 1:在 EC2 实例 1 上构建 SIEM (Splunk) 1. 安装 Splunk: ``` wget -O splunk-9.2.2-d76edf6f0a15-linux-2.6-amd64.deb "https://download.splunk.com/products/splunk/releases/9.2.2/linux/splunk-9.2.2-d76edf6f0a15-linux-2.6-amd64.deb" sudo dpkg -i splunk-9.2.2-d76edf6f0a15-linux-2.6-amd64.deb sudo /opt/splunk/bin/splunk start --accept-license sudo /opt/splunk/bin/splunk enable boot-start ``` 2. AWS Security Group 配置: ``` Inbound TCP 22 (My IP) - SSH login to instance. Inbound TCP 8000 (My IP) - Splunk Web UI login. Inbound TCP 9997 (AWS Subnet 172.31.0.0/16) - Splunk Forwarder Receiver. Enable Receiver: Log into Splunk UI, navigate to Settings > Forwarding and Receiving, and open port 9997. ``` ## 阶段 2:在 EC2 实例 2 上部署 Cowrie 蜜罐 1. 将 SSH 连接更改为端口 55555,以允许蜜罐捕获端口 22 的流量。管理员登录将使用端口 55555 进行。 ``` sudo vim /etc/ssh/sshd_config ``` 2. AWS Security Group 配置: ``` Inbound TCP 5555 (My IP) - SSH login to instance. Inbound TCP 22 (Anywhere (0.0.0.0)) - Honeypot SSH ``` 3. Cowrie 设置 ``` sudo apt update && sudo apt install docker.io docker-compose-v2 -y sudo systemctl enable docker sudo systemctl start docker git clone https://github.com/cowrie/cowrie.git cd cowrie mkdir logs sudo vim compose.yaml ``` 4. 包含两个容器配置的 compose.yaml 文件: ``` services: cowrie: image: cowrie/cowrie:latest #get latest cowrie image container_name: cowrie_honeypot #name ports: - "22:2222" #forward port 22 to 2222 honeypot port volumes: - ./logs:/cowrie/cowrie-git/var/log/cowrie #logs at host:logs in container restart: always forwarder: image: splunk/universalforwarder:latest # get latest splunk forwarder image container_name: splunk_forwarder #name user: root environment: #splunk arguments to be passed - "SPLUNK_GENERAL_TERMS=--accept-sgt-current-at-splunk-com" - "SPLUNK_START_ARGS=--accept-license" - "SPLUNK_FORWARD_SERVER=172.31.XX.XX:9997" - "SPLUNK_PASSWORD=pas***" volumes: - ./logs:/mnt/cowrie_logs:ro #logs at host:logs in container restart: always ``` 5. 启动两个容器 ``` sudo docker compose up -d ``` ## 阶段 3:将 Splunk Forwarder 容器连接到 Splunk ``` #add splunk instance IP to forwarder sudo docker exec -it splunk_forwarder /opt/splunkforwarder/bin/splunk add forward-server 172.31.XX.XX:9997 -auth "admin:pas***" #add the log file path and set soure type json for splunk parsing sudo docker exec -it splunk_forwarder /opt/splunkforwarder/bin/splunk add monitor "/mnt/cowrie_logs/cowrie.json" -sourcetype _json -auth "admin:pas***" ##check if forwarding is active sudo docker exec -it splunk_forwarder /opt/splunkforwarder/bin/splunk list forward-server -auth "admin:pas***" ``` `Active forwards: 172.31.XX.XX:9997 Configured but inactive forwards: None` ## 阶段 4:威胁情报与事件响应(Splunk UI 上的实时数据) 以下查询和仪表板展示了由蜜罐捕获并路由到 Splunk 的实时真实攻击。 ### 1. 成功的登录 通过追踪成功的身份验证事件,我们可以立即隔离受损的会话,在这些会话中,攻击者突破了外部边界并获得了执行权限。 ``` sourcetype="_json" eventid="cowrie.login.success" | table _time, src_ip, username, password ``` success_login ### 2. 投递的文件/恶意软件 ``` sourcetype="_json" eventid="cowrie.session.file_upload" | table _time, src_ip, shasum, filename ``` droppedfiles ### 3. OSINT 与恶意软件分析(IPLocation 与 VirusTotal) 从 Splunk 日志中提取 `shasum` (SHA-256 hash) 和 `src_ip` 使我们能够利用 OSINT 工具来识别威胁行为者及其工具。 * **威胁行为者 1:** `101.96.203.55`(来源:中国) ipchina * **威胁行为者 2:** `83.236.176.109`(来源:德国) ipgermany **VirusTotal 调查结果:** 分析证实,这两个投递的 payload 都是 **Cryptominer Trojans**(挖矿木马)的变种,它们伪装成像 `sshd` 或 `discord-exploit` 这样听起来合法的系统名称以逃避检测。 *文件 1 来源(中国):* miner-china miner-china2 *文件 2 来源(德国):* discord-sshd-coinminer-de discord-sshd-coinminer-de2 ### 4. 登录后的终端输入 ``` sourcetype="_json" eventid=cowrie.command.input | table _time, src_ip, input ``` input_splunk1 input_splunk2 识别出命中蜜罐的四种不同类别的行为: 1. 僵尸网络成功暴力破解凭证,并立即运行 `uname -a` 以获取操作系统详细信息,然后再下载特定的恶意软件 payload。 2. 攻击者将恶意二进制文件投递到隐藏文件夹(`./48867..`)中,对其进行重命名以混入正常的系统进程(`sshd`),授予执行权限(`chmod +x`)并在后台静默运行它们(`nohup`)。 3. 复杂的脚本扫描 `/proc/cpuinfo` 和 `lspci` 以检查 NVIDIA 显卡,从而确定受感染的服务器是否适合用于挖掘加密货币。 4. 较慢且标准的 Linux 导航命令(`whoami`、`pwd`、`ls`)表明是人类的手动探索。*(此交互由我执行,以验证 pipeline)。*
标签:AWS, Docker, DPI, 威胁情报, 安全, 安全防御评估, 开发者工具, 版权保护, 蜜罐, 证书利用, 请求拦截, 超时处理