Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Cisco-FMC-honeypot — 最初是用于 CVE-2026-20131 的蜜罐 | Kitploit
工具/GitHubGitHub/hassan-pouladi/cisco-fmc-honeypot
漏洞分析网络安全恶意软件分析威胁情报事件响应
GitHubhassan-pouladi/cisco-fmc-honeypot

Cisco-FMC-honeypot

最初是用于 CVE-2026-20131 的蜜罐

查看仓库
1132个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

FMC-Trap

一个低交互蜜罐,模拟Cisco Secure Firewall Management Center (FMC) 的Web界面,并捕获未认证的Java序列化风格攻击流量(CVE风格的不安全反序列化探测)。

  • 安全设计: 该应用程序不会反序列化Java对象;它检测\xac\xed\x00\x05(以及Base64 rO0AB…)并使用正则表达式和启发式方法提取shell或URL字符串。
  • 无命令执行: 第二阶段URL仅通过Python requests 检索到不可执行的下载卷中。
  • 面向生产的堆栈: Docker Compose 配合 Gunicorn 以及可选的 Caddy(HTTPS,Let’s Encrypt)。

为什么运行它?

单行JSON日志(兼容Splunk和ELK),可选的Telegram告警,哈希化的第二阶段工件,以及非root容器用户。该项目面向需要专注的FMC风格陷阱且无需额外集成代码的研究人员。

要求

项目说明
Docker 和 Docker Compose v2安装Docker
VPS 或主机建议使用专用或隔离的网络段
域名(可选)对于HTTPS:配置DNS并允许入站TCP 80和TCP 443到主机

快速开始(大约五分钟)

1. 克隆

root@kitploit:~
git clone https://github.com/Hassan-Pouladi/Cisco-FMC-honeypot
cd FMC-Trap

2. 配置环境

root@kitploit:~
cp .env.example .env

根据需要编辑 .env(参见环境变量)。对于位于捆绑Caddy后的部署,设置**TRUST_X_FORWARDED_FOR=1**,以便日志中的客户端IP地址反映原始客户端。

3. 将Caddy指向您的域名

编辑**Caddyfile:将占位符主机名替换为您的**域名(如果适用,包括www):

root@kitploit:~
example.com, www.example.com {
	reverse_proxy fmc-trap:5000
}

可选地,取消注释Caddyfile中的全局email [email protected]块以接收Let's Encrypt到期通知。

4. DNS和防火墙(HTTPS)

  • 创建A(如果适用,还有AAAA)记录:yourdomain.com 指向您服务器的公共IP,如果使用www也创建。
  • 允许主机上的入站TCP 80和TCP 443(云安全组和主机防火墙,例如ufw allow 80,443/tcp)。

5. 数据目录(必需)

应用程序在容器内以UID **10001**运行。绑定挂载的./data目录必须是可写的:

root@kitploit:~
mkdir -p data/logs data/downloads
sudo chown -R 10001:10001 data/logs data/downloads

如果没有正确的所有权,利用POST请求可能会返回500(写入日志或原始blob时出现Permission denied)。

6. 启动

root@kitploit:~
docker compose up -d --build

7. 验证

root@kitploit:~
docker compose ps
curl -sI https://yourdomain.com/

预期会收到**HTTP/2 200(或301或302**)以及**Via: Caddy。在浏览器中,https://yourdomain.com/** 应显示模拟的FMC登录页面。

关于在哪里读取事件、有效载荷和Docker输出,请参见查找日志、下载和服务输出和常见操作。

查找日志、下载和服务输出

以下所有内容都相对于您的项目目录(包含docker-compose.yml的文件夹,通常在克隆后为FMC-Trap)。路径位于主机上;Docker通过绑定挂载将它们映射到容器中。

当日志文件中出现内容时:fmc-trap.json在请求匹配反序列化探测行为(POST中的魔数)时,每行接收一个JSON对象。默认情况下,对假登录页面的普通GET请求不会写入此文件。

**当下载文件夹中有文件时:**只有当管道从探测中提取URL且harvester成功获取允许的远程内容(在MAX_DOWNLOAD_MB限制内)时,条目才会出现。如果目录保持为空,可能还没有合格的URL,或者获取被应用程序的策略阻止。

**美化打印JSON(可选):**对于单行,通过python -m json.tool管道输出,或如果安装了jq则使用它。

常见操作

架构

root@kitploit:~
Internet :443/:80 → Caddy (TLS, Let’s Encrypt) → fmc-trap:5000 (Gunicorn/Flask)
                              ↓
                    ./data/logs, ./data/downloads (bind mounts)
  • 只有Caddy将80和443发布到主机;应用程序容器不直接暴露(参见Compose中的expose: "5000")。
  • Caddy在容器内使用公共DNS解析器(1.1.1.1、8.8.8.8),以便在VPS解析器在Docker中无法访问的主机上(某些云提供商的常见限制),Let's Encrypt能够成功。

环境变量

Compose将这些变量传递到**fmc-trap**服务;详情请参阅docker-compose.yml。

JSON日志字段(参考)

data/logs/fmc-trap.json中的每一行都是一个JSON对象。常见键包括timestamp、event_type、src_ip、headers、raw_payload_hash、extracted_commands,以及当文件被存储时的downloaded_file_hash。保存在data/downloads/下的blob使用模式0400(所有者只读)。

故障排除

可选:在本地主机上暴露应用程序(调试)

要直接访问Gunicorn而无需Caddy,在docker-compose.yml中的**fmc-trap**下添加以下内容:

root@kitploit:~
ports:
  - "127.0.0.1:5000:5000"

在生产环境中当Caddy终止TLS时,不要将应用程序绑定到0.0.0.0。

安全

  • 在专用VPS或隔离网络上部署。该服务处理恶意流量,并可能下载恶意软件以供分析。
  • 仅将Telegram令牌和其他机密存储在主机上的.env中(切勿提交.env)。
  • 将防火墙限制为所需的最小端口(对于HTTPS为80和443)。

法律和道德使用

仅在您拥有的系统或您被明确授权部署仪器的系统上部署。蜜罐可能收集攻击流量和恶意软件;遵守适用法律和组织策略。此软件仅供安全研究使用。

下载工具
内容主机路径如何打开或跟踪
事件日志(JSON行)data/logs/fmc-trap.jsontail -f data/logs/fmc-trap.json(实时流),或在编辑器中打开,或导入Splunk或ELK
下载的第二阶段有效载荷data/downloads/只有当harvester保存远程响应时文件才会出现;每个文件以其SHA256哈希命名(64个十六进制字符),无扩展名。使用ls -la data/downloads(Linux或macOS)或Get-ChildItem data\downloads(Windows PowerShell)列出
应用程序进程输出不是文件;Dockerdocker compose logs -f fmc-trap
Caddy(TLS、代理、ACME)不是文件;Dockerdocker compose logs -f caddy
Telegram告警(可选)不存储在data/中在.env中设置TELEGRAM_BOT_TOKEN和TELEGRAM_CHAT_ID;事件日志记录时触发告警
目标命令或操作
查看容器是否在运行docker compose ps
编辑.env或Caddyfile后重启docker compose up -d --build(或如果仅更改了环境变量,则使用docker compose up -d --force-recreate)
停止堆栈docker compose down
持续跟踪新的JSON事件tail -f data/logs/fmc-trap.json
检查最近几个事件tail -n 50 data/logs/fmc-trap.json
计算下载的工件数量在文件管理器中打开data/downloads,或使用shell对该目录进行文件计数(文件以SHA256命名)
确认蜜罐页面加载在浏览器中打开https://yourdomain.com/,或像验证步骤那样使用curl -sI
变量用途默认值/备注
TRUST_X_FORWARDED_FOR使用第一个X-Forwarded-For跳作为src_ip推荐与Caddy一起使用**1**
DECEPTION_STATUS200返回HTML正文;302返回重定向200
DECEPTION_REDIRECT_URL当状态为302时的目标路径/
MAX_DOWNLOAD_MB每个URL的Harvester限制16
TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID可选告警空值禁用告警
FMC_SERVER_HEADERServer响应头nginx
VT_API_KEY保留可选
症状解决方法
在data/下写入时出现**Permission denied**运行sudo chown -R 10001:10001 data/logs data/downloads
Bind for 0.0.0.0:80 failed: port is already allocated另一个服务或容器已绑定到80。停止该服务或释放80;每个主机上只能有一个进程监听80。
Caddy日志中出现Let's Encrypt或ACME错误确认DNS解析到此服务器,并且80和443可从互联网访问。当主机解析器在Docker内部失败时,Compose为Caddy配置了DNS 1.1.1.1和8.8.8.8。
curl到HTTPS返回空输出或首次尝试失败等待直到certificate obtained successfully出现在docker compose logs caddy中。
日志中的客户端IP为**172.x.x.x**使用Caddy时设置**TRUST_X_FORWARDED_FOR=1**,然后重新创建容器:docker compose up -d --force-recreate。