andrewmichaelsmith/flux
GitHub: andrewmichaelsmith/flux
一款持续进化的 HTTP 蜜罐系统,覆盖从经典凭证泄露到 AI 工具配置的广泛诱饵面,通过逐请求唯一金丝雀实现对攻击者窃取与利用行为的精准检测。
Stars: 3 | Forks: 0
# flux
[](https://github.com/andrewmichaelsmith/flux/actions/workflows/tests.yml)
一个不断进化的 HTTP 蜜罐,由基于实时蜜罐传感器网络观察结果运行的 LLM 积极维护。语料库中新的扫描器行为驱动着新陷阱的产生;随着日志显示哪些内容引发了后续操作、哪些被忽略,现有的陷阱会被调整或淘汰。下表列出了每个家族的最后更新日期(初始发布或最新实质性更改,以较新者为准)。
基于 nginx 后端的小型异步 Python。需 Python 3.11+;仅一个运行时依赖 —— [aiohttp](https://docs.aiohttp.org/)。采用异步架构,使得 tarpit 和 fake-git 滴漏路径能够维持数千个并发的慢速滴漏连接(每个约 8 KB),而不是为每个连接分配一个操作系统线程。
## 陷阱
每个家族都可以通过环境变量独立开启;默认全部启用(见 [`CONFIG.md`](./CONFIG.md))。无密钥部署仍会对受金丝雀保护的行返回 404 —— 调度需要在总开关之外设置 `TRACEBIT_API_KEY`。我们使用 [Tracebit Community](https://community.tracebit.com) 作为金丝雀:免费套餐,注册并将密钥填入环境变量即可。
| 陷阱 | 功能描述 | 更新时间 | 需要 Key |
| --- | --- | --- | --- |
| 虚假 `/.env` 金丝雀签发器 | 生成一个基于每次请求的 Tracebit Community 金丝雀,并将其作为 `.env` 格式的 payload 返回 | 2026-04-22 | 是 |
| 虚假 `/.git/` 仓库 | 提供一个松散对象 git 树,其 `config/secrets.yml` 嵌入了一个金丝雀,且其 `.git/config` 的 `[remote "origin"] url` 将同一金丝雀作为 HTTP Basic userinfo 嵌入 —— 因此仅获取 `.git/config`(而不进行克隆)的抓取者依然会带走一个活跃的金丝雀。匹配 `/.git/*`(部署在子路径上的应用)并且在 `.git` 段上不区分大小写;提供一个最小有效的 `/.git/index`(DIRC 头)使得 `git-dumper` 类工具不会因缺少索引而中止。按 IP 缓存,使得大规模探测能看到一致的树结构 | 2026-04-23 | 是 |
| 金丝雀文件陷阱 | 针对以下路径提供格式合理的文件响应:`/wp-config.php`、`/backup.sql`、`/id_rsa`、`/.aws/credentials`、`/api/v4/user`、`/users/sign_in`、`/actuator/env`、`/.vscode/sftp.json`、GCP 服务账户 JSON 变体(`/.config/gcloud/application_default_credentials.json`、`/firebase-adminsdk.json` 等)、CI/CD 配置文件等 —— 完整表格见[下方](#canary-file-trap-table) | 2026-04-29 | 是 |
| AI 凭证文件金丝雀 | AI 编辑器 / 编码助手配置(`/.claude/settings.json`、`/.cline/{settings,mcp_settings}.json`、`/.continue/config.json`、`/.cursor/mcp.json`、`/.aider.conf.yml`、`/.sourcegraph/cody.json`、`/.config/open-interpreter/config.yaml` 等)以及 AI 基础设施 / 代理配置(`/litellm_config.yaml`、`/langsmith.env`、`/.huggingface/token`、`/.streamlit/secrets.toml`、`/baseten.yaml`、通用 MCP 配置、`/.bito/`、`/.codeium/`、`/.roost/`、`/cohere_config.json` 等) —— 列在同一张表格中;因 Tracebit 尚未提供 LLM 金丝雀类型,故在此脚注中单独说明 | 2026-04-28 | 是 |
| 虚拟 Webshell | 在已知的 `*.php` shell 探测路径以及 shell 劫持正则表达式家族(`/.well-known/.php`、`/.trash/*`、`/.tmb/`、`/.dj/`、`/.alf/` 等)上提供逼真的文件管理器;并在后续命令中模拟 `id` / `whoami` / `uname -a` / `cat /etc/passwd` —— [文档](./docs/fake-webshell.md) | 2026-04-22 | 否 |
| 模块化 tarpit + 指纹识别 | 慢速滴漏响应及六个指纹识别模块(cookie、ETag、重定向链、可变滴漏、Content-Length 不匹配、DNS 回调);在 `.env` 变体及可配置的首次接触路径(`/`、`/index.html`、`/robots.txt` 等)上触发 | 2026-04-20 | 否 |
| 虚假 LLM-API 端点 | 在 `/v1/models`、`/v1/chat/completions`、`/anthropic/v1/messages`、`/api/chat` 等路径上提供 Ollama / OpenAI / Anthropic-proxy JSON;记录 model + auth header + prompt 前缀 —— [文档](./docs/fake-llm-api.md) | 2026-04-20 | 否 |
| 虚假 SonicWall SSL VPN | 在 CVE-2024-53704 认证绕过链的三个路径上提供 SonicOS 7 JSON 响应;记录提交的用户名、body sha 及预览,以及重放的 session cookie —— [文档](./docs/fake-sonicwall.md) | 2026-04-21 | 否 |
| 虚假 Cisco WebVPN 端点 | 在 `/+CSCOE+/...` 和 `/+CSCOL+/...` 上提供 Cisco SSL VPN 登录页及启动器资产;同时识别发往 `/` 的 AnyConnect `config-auth` XML POST,并记录提交的用户名而不存储密码 —— [文档](./docs/fake-cisco-webvpn.md) | 2026-04-26 | 否 |
| 虚假 Ivanti Connect Secure / Pulse Secure VPN | 在 `/dana-na/...` 和 `/dana-cached/hc/...` 上提供 Ivanti SSL VPN 欢迎页 + 登录 POST + HostChecker 安装器资产;生成一个基于每次请求的 `DSID` cookie,记录 username + has-password,并在针对 `/dana-ws/namedusers` 发送的包含 shell 元字符的 payload 上触发 `ivantiHasCmdInjection` 标记(CVE-2023-46805 / CVE-2024-21887 / CVE-2025-22457 链诱饵) —— [文档](./docs/fake-ivanti-vpn.md) | 2026-04-27 | 否 |
| 虚假 IBM Aspera Faspex 门户 | 在 `/aspera/faspex/...` 上提供 Aspera Faspex 的登录/注销/中继界面;发出合理的 HTML/JSON,在注销/中继端点上记录后续 payload 预览,并使扫描器链在初始指纹识别后继续保持活跃(CVE-2022-47986 诱饵) —— [文档](./docs/fake-aspera-faspex.md) | 2026-04-27 | 否 |
| 虚假 Hikvision IP 摄像头 | Hikvision ISAPI 界面(`/SDK/webLanguage`、`/ISAPI/Security/userCheck`、`/ISAPI/System/deviceInfo`);返回带有 `Server: App-webs/` 头及 CVE-2021-36260 窗口固件标识的合理 XML,并在 body/query 中的 shell 元字符指示器上触发 `hikvisionHasCmdInjection`,使得 language-parameter 命令注入 payload 易于分类排查 —— [文档](./docs/fake-hikvision.md) | 2026-04-29 | 否 |
| 虚假 GeoServer 管理 / OGC | 在 `/geoserver/...` 上提供 GeoServer 2.x 管理外壳 + About 页面 + OGC `*_Capabilities`;在 query string + body 中标记 OGNL/表达式语言指示器,以便轻松分类排查 CVE-2024-36401 payload —— [文档](./docs/fake-geoserver.md) | 2026-04-25 | 否 |
| 虚假 ColdFusion 管理 / 组件浏览器 | ColdFusion 公共 `.cfm` 锚点及 `/CFIDE/componentutils/`、Administrator 和 AdminAPI 界面;记录 method、auth/session 提示及漏洞利用 payload 指示器 —— [文档](./docs/fake-coldfusion.md) | 2026-04-25 | 否 |
| 虚假 Atlassian Confluence | 在 `pages/createpage-entervariables.action`、`pages/doenterpagevariables.action`、`templates/editor-preload-container`、`users/user-dark-features`、`login.action`(裸路径、`/confluence/`、`/wiki/` 前缀)上的 Confluence 7.x 登录界面;同时匹配请求路径本身中 URL 编码的 `${@...}` OGNL 注入;从 payload 中提取 OAST/Interactsh 回调主机名(CVE-2022-26134 诱饵) —— [文档](./docs/fake-confluence.md) | 2026-04-30 | 否 |
| 命令注入 / printenv 响应器 | `/admin/config?cmd=…` 和 `/admin/config.php?cmd=…`(admin-shell 漏洞利用特征)以及 `/printenv`、`/cgi-bin/printenv`、`/cgi-bin/test-cgi`;对 cmd 的值进行分类,返回合理的 `cat /etc/passwd` / `id` / `uname` 主体,并在 cmd 请求 `~/.aws/credentials` 或环境变量时生成一个基于每次请求的 Tracebit AWS 金丝雀 —— [文档](./docs/cmd-injection.md) | 2026-04-26 | 是 |
| PHP/body-RCE 响应器 | 针对 PHPUnit `eval-stdin.php`、PHP-CGI `auto_prepend_file=php://input` 以及 Apache CGI 路径遍历 `/bin/sh` 的 Body 驱动漏洞利用响应器;记录 request-body payload 及解码后的 base64 命令提示 —— [文档](./docs/cmd-injection.md) | 2026-04-26 | 否 |
所有陷阱会将每个事件的 JSON 单行日志记录到配置的日志路径。有关 schema 请参见 [`LOGS.md`](./LOGS.md)。
## 安装
```
pip install .
```
或者就地运行(需要系统路径中存在 `aiohttp`):
```
pip install aiohttp
python -m flux
```
## 运行
Flux 默认监听 `127.0.0.1:18081`。预期的部署方式是将 nginx 置于前端,并将一组陷阱路径(例如 `/.env`、`/.git/*`、`/shell.php` 等)代理给它;nginx 负责处理 TLS、`X-Forwarded-*` 头以及所有非陷阱路由。
```
export TRACEBIT_API_KEY=... # optional — enables canary-backed traps (/.env, /.git/*, etc)
python -m flux
```
文档:[`CONFIG.md`](./CONFIG.md)(环境变量) ·
[`LOGS.md`](./LOGS.md)(JSONL schema + `result` 标签) ·
[`BENCH.md`](./BENCH.md)(吞吐量 + tarpit 饱和度数值)。
## 金丝雀文件陷阱表
### 设计原则:每个凭证都是每次命中唯一的
提供**固定字面量**凭证(硬编码的数据库密码、硬编码的 API 密钥)的陷阱渲染器没有任何检测价值 —— 重放不会触发任何警报 —— 并且在整个传感器集群中的每个传感器上提供相同的字符串,这会成为跨传感器的指纹。因此,渲染响应中每个看起来像密钥的字段都必须是每次命中唯一的。当能增加检测价值时(针对 AWS STS、Tracebit 托管的 gitlab URL、Tracebit sshIp 的重放),我们会使用 Tracebit 作为后端;如果没有匹配的金丝雀类型,我们会回退到基于每次命中的随机合成凭证。具体来说,每个秘密形态的字段要么是:
1. **一个基于每次请求的 Tracebit 金丝雀** —— `_aws(r)` 或 `_gitlab_creds(r, ...)`。当其被重放以攻击匹配目标(全局 AWS STS、用于 u/p 和 cookie 的 Tracebit 托管 gitlab URL、用于 ssh 的 Tracebit sshIp)时会触发。
2. **一个基于每次命中的随机合成值** —— `_fake_db_password()` 或类似函数。*不会*触发(该凭证类型不存在 Tracebit 路径,例如 MySQL/Postgres),但由于每次渲染都是唯一的,因此无法在整个集群中对渲染出的 body 进行指纹识别。
在金丝雀周围的“合理填充物”中,当值不具备凭证特征时使用硬编码的字面量是可接受的 —— 例如用户名 `wp_prod`、主机名 `db.internal`、存储桶名称、注释等。
绝对不能固定的是任何看起来像密码、token 或密钥的内容。
当金丝雀类型在 Tracebit Community 中尚不存在时(LLM API 密钥、Google 服务账号),陷阱必须装扮成 AWS 金丝雀的合理格式,使得基于字段名匹配的抓取器依然能窃取到活跃的金丝雀值(参见下文的 AI 凭证陷阱)或 发出基于每次命中的随机合成值,从而使得响应无法被指纹识别 —— 绝不使用固定字面量。
### 陷阱表
所有项均受 `TRACEBIT_API_KEY` 控制,并带有基于 IP 的 TTL 缓存以保护配额。
可通过 `CANARY_TRAPS_ENABLED` 切换整个类别。路径均为不区分大小写的精确匹配。
| 陷阱 | 路径 | 金丝雀类型 | 日志标签 |
| --- | --- | --- | --- |
| AWS 凭证文件 (INI) | `/.aws/credentials` | `aws` | `aws-credentials-file` |
| AWS SDK 配置 (INI) | `/.aws/config` | `aws` | `aws-config-file` |
| Postgres pgpass | `/.pgpass` | `gitlab-username-password` | `pgpass` |
| WordPress 配置 | `/wp-config.php` 以及编辑器遗留后缀变体(`.bak`、`.save`、`.swp`、`.swo`、`.old`、`.orig`、`.txt`、`~`、`::$DATA`)及简写/重定位形式(`/wp-config.bak`、`/wp-config.old`、`/wp-config.txt`、`/wp-config-backup.php`、`/backup/wp-config.php`);同时匹配观察到的双重编码的 `.bak` 形式 | `aws` | `wp-config` |
| SQL 转储 | `/backup.sql`、`/db.sql`、`/dump.sql`、`/database.sql`、`/backup/db.sql`、`/sql/backup.sql` | `aws` | `sql-dump` |
| 通用 JSON 配置 | `/config.json`、`/settings.json`、`/credentials.json`、`/secrets.json` | `aws` | `config-json` |
| SFTP 部署配置 | `/.vscode/sftp.json`、`/sftp-config.json`、`/sftp.json`、`/.ftpconfig` | `gitlab-username-password` | `sftp-config` |
| Firebase / GCP SA | `/firebase.json`、`/google-services.json`、`/serviceaccount.json`、`/service-account.json`、`/firebase-adminsdk.json`、`/gcp-service-account.json`、`/.config/gcloud/application_default_credentials.json` | `aws` | `firebase-json` |
| Docker 客户端 | `/.docker/config.json`、`/docker/config.json` | `aws` | `docker-config` |
| Docker Compose | `/docker-compose.yml`、`/docker-compose.yaml`、`/compose.yml`、`/compose.yaml`,以及 `.prod`、`.production`、`.dev`、`.staging`、`.override` 变体(包括 `.yml` 和 `.yaml`) | `aws` | `docker-compose` |
| GitHub Actions 工作流 | `/.github/workflows/{deploy,main,ci,build,test,docker,release,cd}.yml` 及 `.yaml` 变体 | `aws` | `github-actions-workflow` |
| GitLab CI 配置 | `/.gitlab-ci.yml`、`/.gitlab-ci.yaml`、`/.gitlab/.gitlab-ci.yml` | `aws` | `gitlab-ci` |
| Jenkins Pipeline | `/Jenkinsfile`、`/Jenkinsfile.bak` | `aws` | `jenkinsfile` |
| Bitbucket Pipelines | `/bitbucket-pipelines.yml`、`/bitbucket-pipelines.yaml` | `aws` | `bitbucket-pipelines` |
| 通用 CI 部署配置 | `/appveyor.yml`、`/.circleci/config.yml`、`/azure-pipelines.yml`、`/deployment.yml`、`/deploy.yml`、`/drone.yml`、`/.drone.yml` 及适用的 `.yaml` 变体 | `aws` | `generic-ci-config` |
| Spring properties | `/application.properties` | `aws` | `application-properties` |
| Spring YAML | `/application.yml`、`/application.yaml` | `aws` | `application-yml` |
| Spring Boot Actuator `/env` | `/actuator/env`、`/actuator/env.json`、`/env`、`/manage/env`、`/management/env`、`/api/actuator/env` | `aws` | `actuator-env` |
| 生产环境 .env | `/.env.production`、`/.env.prod`、`/.env.live` | `aws` | `env-production` |
| phpinfo() | `/phpinfo.php`、`/info.php`、`/php.php`、`/test.php` | `aws` | `phpinfo` |
| SSH 私钥 | `/id_rsa`、`/.ssh/id_rsa`、`/ssh/id_rsa`、`/ssh/id_rsa.key`、`/keys/id_rsa`、`/private.key`、`/deploy_key`、`/deploy.key`、`/.ssh/id_ed25519`、`/.ssh/id_dsa`、`/.ssh/id_ecdsa`、`/id_ed25519`、`/id_dsa`、`/id_ecdsa`、`/root/.ssh/id_rsa`、`/home/.ssh/id_rsa` | `ssh` | `ssh-private-key` |
| SSH 公钥 | `/id_rsa.pub`、`/.ssh/id_rsa.pub` | `ssh` | `ssh-public-key` |
| SSH 客户端配置 | `/.ssh/config` | `ssh` | `ssh-config` |
| known_hosts | `/.ssh/known_hosts`、`/known_hosts` | `ssh` | `known-hosts` |
| authorized_keys | `/authorized_keys`、`/.ssh/authorized_keys`、`/.ssh/authorized_keys2`、`/static/.ssh/authorized_keys`、`/downloads/.ssh/authorized_keys`、`/blog/.ssh/authorized_keys` | `ssh` | `authorized-keys` |
| .netrc | `/.netrc`、`/_netrc` | `gitlab-username-password` | `netrc` |
| git 凭证存储 | `/.git-credentials`;fake-git 同样提供 `/.git/credentials` | `gitlab-username-password` | `git-credentials` / `fake-git` |
| .npmrc | `/.npmrc` | `gitlab-username-password` | `npmrc` |
| .pypirc | `/.pypirc` | `gitlab-username-password` | `pypirc` |
| GitLab API 用户 | `/api/v4/user` | `gitlab-username-password` | `gitlab-api-user` |
| GitLab 登录 | `/users/sign_in` | `gitlab-cookie` | `gitlab-sign-in` |
| OpenAI 配置文件 | `/.openai/config.json` | `aws` (†) | `openai-config` |
| Anthropic 配置文件 | `/.anthropic/config.json` | `aws` (†) | `anthropic-config` |
| Cursor MCP 配置 | `/.cursor/mcp.json` | `aws` (†) | `cursor-mcp` |
| Claude Code 凭证 | `/.claude/.credentials.json` | `aws` (†) | `claude-credentials` |
| Claude Desktop 设置 | `/.claude/settings.json` | `aws` (†) | `claude-settings` |
| Cline 设置 | `/.cline/settings.json` | `aws` (†) | `cline-settings` |
| 通用 MCP 服务器配置 | `/.cline/mcp_settings.json`、`/mcp_settings.json`、`/mcp.json`、`/.mcp/mcp.json` | `aws` (†) | `mcp-config` |
| Continue.dev 配置 | `/.continue/config.json` | `aws` (†) | `continue-config` |
| Sourcegraph Cody 配置 | `/.sourcegraph/cody.json` | `aws` (†) | `cody-config` |
| Aider 配置 | `/.aider.conf.yml` | `aws` (†) | `aider-conf` |
| Open-Interpreter 配置 | `/.config/open-interpreter/config.yaml` | `aws` (†) | `open-interpreter-config` |
| LiteLLM 代理配置 | `/litellm_config.yaml`、`/litellm/config.yaml`、`/proxy_config.yaml` | `aws` (†) | `litellm-config` |
| LangSmith 环境变量 | `/langsmith.env` | `aws` (†) | `langsmith-env` |
| HuggingFace 令牌 | `/.huggingface/token`、`/.cache/huggingface/token` | `aws` (†) | `huggingface-token` |
| Streamlit 密钥 | `/.streamlit/secrets.toml` | `aws` (†) | `streamlit-secrets` |
| OpenAI 扁平配置 | `/openai.json` | `aws` (†) | `openai-config-flat` |
| Anthropic 扁平配置 | `/anthropic.json` | `aws` (†) | `anthropic-config-flat` |
| 通用 AI 提供商配置 | `/cohere_config.json`、`/tabnine_config.json`、`/.bito/config.json`、`/.codeium/config.json`、`/.roost/config.json`、`/pinecone_config.json`、`/.lobechat/config.json`、`/chatgpt-next-web.json` | `aws` (†) | `ai-provider-config` |
| Baseten 模型部署配置 | `/baseten.yaml` | `aws` (†) | `baseten-config` |
`/users/sign_in` 将 cookie 金丝雀作为 `Set-Cookie: _gitlab_session=` 返回。`/api/v4/user` 将 username/password 金丝雀嵌入到合理的 GitLab API 用户响应中。
`ssh` 金丝雀仅在窃取的密钥被重放以对抗 Tracebit 的 ``sshIp``(随密钥对一起返回)时才会触发。这就是 ``ssh-config`` 和 ``known-hosts`` 存在的原因 —— 如果没有目标主机的提示,窃取到的 ``/id_rsa`` 没有任何指向,因此攻击者会运行 ``ssh -i id_rsa ``,从而导致金丝雀永远不会触发。这三个陷阱组合在一起(``id_rsa`` → ``config`` → ``known_hosts``)为遍历暴露的 ``.ssh/`` 目录的扫描器提供了完整的 密钥 + `Host bastion HostName ` 映射,这将解析为一次 ``ssh bastion`` 重放,从而让金丝雀能够成功触发。
† **AI 凭证文件陷阱目前可能还不完全合理。**
Tracebit Community 尚未提供 OpenAI / Anthropic / LLM 金丝雀类型,因此这些陷阱将 `aws` 金丝雀伪装成了 OpenAI / Anthropic / Cursor / Claude 形状的 JSON。通过密钥格式前缀(`sk-...`、`sk-ant-...`)进行过滤的扫描器会正确判定该密钥为伪造并将其丢弃;但通过字段名(`api_key`、`auth_token`、`accessToken`、`GITHUB_PERSONAL_ACCESS_TOKEN`)进行抓取的扫描器,依然会提取该值并将其发送出去,并且如果该值被当作 AWS 凭证使用,*这种*侧信道将会触发 AWS 金丝雀。尽管如此,我们依然发布了它,因为探测行为本身正是我们想要记录的。当 Tracebit 正式推出 LLM 金丝雀时,将这些渲染器替换为真正的 LLM 金丝雀即可。
这四种金丝雀类型(`aws`、`ssh`、`gitlab-username-password`、`gitlab-cookie`)是目前 Tracebit Community 通过 [`/openapi.json`](https://community.tracebit.com/openapi.json) 暴露的所有内容。电子邮件和 LLM 金丝雀在 Tracebit 的市场宣传中被提及,但尚未加入 API;一旦 API 支持,新的陷阱界面将会及时上线。
## 测试
```
pip install -e '.[dev]'
python -m pytest
```
两个测试文件:
- `tests/test_server.py` —— 纯函数测试(渲染器、路径匹配器、解析器)+ 通过 aiohttp 进程内 `TestClient` 进行的调度测试。
- `tests/test_integration.py` —— 将 flux 绑定到 127.0.0.1 的随机端口,并使用真实的 HTTP 客户端通过内核环回接口进行访问。用于捕获仅在实际 socket 上才会出现的问题。
## 每个陷阱的文档
新颖陷阱的响应格式、解析字段及其设计理由位于 [`docs/`](./docs/) 目录下:
- [虚假 LLM-API 端点](./docs/fake-llm-api.md)
- [虚假 SonicWall SSL VPN 端点](./docs/fake-sonicwall.md)
- [虚假 Cisco WebVPN 端点](./docs/fake-cisco-webvpn.md)
- [虚假 Ivanti Secure / Pulse Secure VPN 端点](./docs/fake-ivanti-vpn.md)
- [虚假 IBM Aspera Faspex 陷阱](./docs/fake-aspera-faspex.md)
- [虚假 Hikvision IP 摄像头陷阱](./docs/fake-hikvision.md)
- [虚假 GeoServer 管理 / OGC](./docs/fake-geoserver.md)
- [虚假 ColdFusion 管理 / 组件浏览器](./docs/fake-coldfusion.md)
- [虚假 Atlassian Confluence](./docs/fake-confluence.md)
- [命令注入 / printenv 响应器](./docs/cmd-injection.md)
- [CI/CD 配置金丝雀](./docs/ci-cd-config.md)
- [虚假 Webshell](./docs/fake-webshell.md)
其他陷阱(`.env`、`/.git/`、金丝雀文件陷阱、tarpit + 指纹识别)的文档记录在 [`CONFIG.md`](./CONFIG.md) 及上方的金丝雀表格中。
## 许可证
MIT。详见 [LICENSE](./LICENSE)。
标签:aiohttp, C2, CISA项目, Cobalt Strike, DLL 劫持, Git泄露, HTTP蜜罐, Nginx, Python, Web安全, 代码仓库安全, 低开销并发, 加密, 大语言模型, 威胁情报, 安全传感器, 密码管理, 开发者工具, 异步编程, 攻击诱捕, 数据泄露, 无后门, 漏洞扫描器, 网络安全, 自动化蜜罐, 蓝队分析, 蜜标, 逆向工具, 隐私保护