PrethamMuthappa/SIEM-Honeypot-Home-Lab
GitHub: PrethamMuthappa/SIEM-Honeypot-Home-Lab
该项目记录了从零搭建一个 SOC 家庭实验室的完整流程,通过 VPS 上的 Cowrie 蜜罐捕获攻击日志并转发至 Splunk 进行安全监控与分析。
Stars: 0 | Forks: 0
这是我搭建 SOC 家庭实验室 + 蜜罐的文档
- SIEM - Splunk cloud
- VPS - 目前使用 Oracle cloud 实例来搭建蜜罐
- 宿主机操作系统: MacOS
目前选择 Splunk 作为 SIEM 工具,用于从 VPS 收集数据并记录日志。由于 CPU 架构/Docker 镜像的原因,Wazuh 无法在我的虚拟机中安装
创建了一个 Splunk 账户并添加了数据输入 **HTTP Event collector**,因为我决定通过 https 将日志从 VPS 收集到 Splunk
为了测试 HEC 是否正常工作,我们发送了一个 curl 请求(HEC URL 和 token 非常重要)
curl -k https://URL----.splunkcloud.com:8088/services/collector/event \
-H "Authorization: TOKEN" \
-H "Content-Type: application/json" \
-d '{
"event": {
"message": "Hello from my SOC Lab!"
},
"sourcetype": "_json",
"source": "manual-test"
}'
现在我们可以看到数据提取已成功,并且可以在这里查看
# 在 VPS 中部署 Cowrie
我们将通过 Docker 使用 cowrie,以便我们可以隔离各种内容
安装 Docker 和 compose
`docker run -d \`
`--name cowrie \`
`-p 2222:2222 \`
`cowrie/cowrie:latest`
只需拉取 cowrie docker 镜像并运行它,如果你尝试使用他们的源码仓库从源码构建 docker 镜像,它是无法运行的,包括稳定版和最新发布版
**允许允许端口 2222 的 ingress 规则**
除此之外,我们还创建了一个文件夹供 docker 存储日志,然后我们获取这些日志并将其馈送到 splunk
# 设置 Python 脚本读取日志并发送到 Splunk
我们通过设置一个 Python 脚本来自动化这个过程,该脚本会读取所有日志并向 splunk 发送 POST 请求
在这里我遇到了 SSL 证书问题,所以通过生成新证书来修复它,但仍然不能很好地工作,所以目前打算将 SSL 设置为 false,虽然不推荐这样做,但暂时先这样处理
**第一次尝试**:向 Splunk 发送了单个请求,以检查日志是否被读取并在 Splunk 中查询(**成功!**)
**下一步**:将自动化这部分操作,让每个日志都流式传输到 Splunk
# 使用 Splunk 搜索数据并在仪表板中可视化
收集日志 24 小时后,我们发现有 64 个 IP 地址连接到了我们的服务器,登录尝试超过 256 次
使用 SPL(即 Splunk 的查询语言),我们可以看到不同的数据等
并且我们还可以构建图表来将其可视化
在这段时间里我遇到了一个主要问题,所有的 SSH 日志、IP 地址和密码都被正常记录了下来,但我注意到当你输入密码后,实际上无法 SSH 登录到 shell
例如,当你执行 `ssh -p 2222 root@ipaddrs` 时,当你输入任何密码,它就会卡住,而本来它是应该不论密码是什么都让你登录到 shell 的
**解决方案**
cowrie docker 镜像在 docker 包中并未内置 tty,必须手动安装它,通过这样做,我成功进入了 cowrie shell
现在我们可以看到数据提取已成功,并且可以在这里查看
# 在 VPS 中部署 Cowrie
我们将通过 Docker 使用 cowrie,以便我们可以隔离各种内容
安装 Docker 和 compose
`docker run -d \`
`--name cowrie \`
`-p 2222:2222 \`
`cowrie/cowrie:latest`
只需拉取 cowrie docker 镜像并运行它,如果你尝试使用他们的源码仓库从源码构建 docker 镜像,它是无法运行的,包括稳定版和最新发布版
**允许允许端口 2222 的 ingress 规则**
除此之外,我们还创建了一个文件夹供 docker 存储日志,然后我们获取这些日志并将其馈送到 splunk
# 设置 Python 脚本读取日志并发送到 Splunk
我们通过设置一个 Python 脚本来自动化这个过程,该脚本会读取所有日志并向 splunk 发送 POST 请求
在这里我遇到了 SSL 证书问题,所以通过生成新证书来修复它,但仍然不能很好地工作,所以目前打算将 SSL 设置为 false,虽然不推荐这样做,但暂时先这样处理
**第一次尝试**:向 Splunk 发送了单个请求,以检查日志是否被读取并在 Splunk 中查询(**成功!**)
**下一步**:将自动化这部分操作,让每个日志都流式传输到 Splunk
# 使用 Splunk 搜索数据并在仪表板中可视化
收集日志 24 小时后,我们发现有 64 个 IP 地址连接到了我们的服务器,登录尝试超过 256 次
使用 SPL(即 Splunk 的查询语言),我们可以看到不同的数据等
并且我们还可以构建图表来将其可视化
在这段时间里我遇到了一个主要问题,所有的 SSH 日志、IP 地址和密码都被正常记录了下来,但我注意到当你输入密码后,实际上无法 SSH 登录到 shell
例如,当你执行 `ssh -p 2222 root@ipaddrs` 时,当你输入任何密码,它就会卡住,而本来它是应该不论密码是什么都让你登录到 shell 的
**解决方案**
cowrie docker 镜像在 docker 包中并未内置 tty,必须手动安装它,通过这样做,我成功进入了 cowrie shell标签:CISA项目, Docker, Python, 安全运营中心, 安全防御评估, 底层分析, 无后门, 日志收集, 网络映射, 蜜罐, 证书利用, 请求拦截, 逆向工具