harshb30/Honeypot-SIEM-AWS-Lab
GitHub: harshb30/Honeypot-SIEM-AWS-Lab
基于 AWS 搭建的 Cowrie 蜜罐与 Splunk SIEM 威胁检测实验环境,用于捕获并分析真实僵尸网络攻击与恶意软件投递行为。
Stars: 0 | Forks: 0
# 威胁检测实验室:AWS 上的 Cowrie 蜜罐 + Splunk SIEM




## 目标
构建了一个 AWS 实验环境来模拟端到端的威胁检测:在 docker 中部署 Cowrie SSH 蜜罐,通过 Splunk Universal Forwarder 转发实时攻击日志,并将 JSON 日志接入 Splunk SIEM 以进行实时分析。
## 架构流程
---
## 工具与技术
| 角色 | 工具 / 技术 |
|---|---|
| 云基础设施 | 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
```
### 2. 投递的文件/恶意软件
```
sourcetype="_json" eventid="cowrie.session.file_upload" | table _time, src_ip, shasum, filename
```
### 3. OSINT 与恶意软件分析(IPLocation 与 VirusTotal)
从 Splunk 日志中提取 `shasum` (SHA-256 hash) 和 `src_ip` 使我们能够利用 OSINT 工具来识别威胁行为者及其工具。
* **威胁行为者 1:** `101.96.203.55`(来源:中国)
* **威胁行为者 2:** `83.236.176.109`(来源:德国)
**VirusTotal 调查结果:**
分析证实,这两个投递的 payload 都是 **Cryptominer Trojans**(挖矿木马)的变种,它们伪装成像 `sshd` 或 `discord-exploit` 这样听起来合法的系统名称以逃避检测。
*文件 1 来源(中国):*
*文件 2 来源(德国):*
### 4. 登录后的终端输入
```
sourcetype="_json" eventid=cowrie.command.input | table _time, src_ip, input
```
识别出命中蜜罐的四种不同类别的行为:
1. 僵尸网络成功暴力破解凭证,并立即运行 `uname -a` 以获取操作系统详细信息,然后再下载特定的恶意软件 payload。
2. 攻击者将恶意二进制文件投递到隐藏文件夹(`./48867..`)中,对其进行重命名以混入正常的系统进程(`sshd`),授予执行权限(`chmod +x`)并在后台静默运行它们(`nohup`)。
3. 复杂的脚本扫描 `/proc/cpuinfo` 和 `lspci` 以检查 NVIDIA 显卡,从而确定受感染的服务器是否适合用于挖掘加密货币。
4. 较慢且标准的 Linux 导航命令(`whoami`、`pwd`、`ls`)表明是人类的手动探索。*(此交互由我执行,以验证 pipeline)。*
---
## 工具与技术
| 角色 | 工具 / 技术 |
|---|---|
| 云基础设施 | 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
```
### 2. 投递的文件/恶意软件
```
sourcetype="_json" eventid="cowrie.session.file_upload" | table _time, src_ip, shasum, filename
```
### 3. OSINT 与恶意软件分析(IPLocation 与 VirusTotal)
从 Splunk 日志中提取 `shasum` (SHA-256 hash) 和 `src_ip` 使我们能够利用 OSINT 工具来识别威胁行为者及其工具。
* **威胁行为者 1:** `101.96.203.55`(来源:中国)
* **威胁行为者 2:** `83.236.176.109`(来源:德国)
**VirusTotal 调查结果:**
分析证实,这两个投递的 payload 都是 **Cryptominer Trojans**(挖矿木马)的变种,它们伪装成像 `sshd` 或 `discord-exploit` 这样听起来合法的系统名称以逃避检测。
*文件 1 来源(中国):*
*文件 2 来源(德国):*
### 4. 登录后的终端输入
```
sourcetype="_json" eventid=cowrie.command.input | table _time, src_ip, input
```
识别出命中蜜罐的四种不同类别的行为:
1. 僵尸网络成功暴力破解凭证,并立即运行 `uname -a` 以获取操作系统详细信息,然后再下载特定的恶意软件 payload。
2. 攻击者将恶意二进制文件投递到隐藏文件夹(`./48867..`)中,对其进行重命名以混入正常的系统进程(`sshd`),授予执行权限(`chmod +x`)并在后台静默运行它们(`nohup`)。
3. 复杂的脚本扫描 `/proc/cpuinfo` 和 `lspci` 以检查 NVIDIA 显卡,从而确定受感染的服务器是否适合用于挖掘加密货币。
4. 较慢且标准的 Linux 导航命令(`whoami`、`pwd`、`ls`)表明是人类的手动探索。*(此交互由我执行,以验证 pipeline)。*标签:AWS, Docker, DPI, 威胁情报, 安全, 安全防御评估, 开发者工具, 版权保护, 蜜罐, 证书利用, 请求拦截, 超时处理