BlessedRebuS/Krawl

GitHub: BlessedRebuS/Krawl

一款云原生 Web 欺骗服务器,通过虚假应用和诱饵数据检测、延迟并分析攻击者与爬虫的恶意活动。

Stars: 469 | Forks: 38

Krawl

一个现代化、可定制的 Web 蜜罐服务器,旨在通过欺骗性网页、虚假凭证和 Canary Token 检测并追踪攻击者与 Web 爬虫的恶意活动。

License Release
GitHub Container Registry Kubernetes Helm Chart
## 目录 - [演示](#demo) - [什么是 Krawl?](#what-is-krawl) - [Krawl 仪表盘](#krawl-dashboard) - [安装](#-installation) - [Docker Run](#docker-run) - [Docker Compose](#docker-compose) - [Kubernetes](#kubernetes) - [本地 (Python)](#local-python) - [配置](#configuration) - [config.yaml](#configuration-via-configyaml) - [环境变量](#configuration-via-enviromental-variables) - [封禁恶意 IP](#use-krawl-to-ban-malicious-ips) - [IP 信誉](#ip-reputation) - [转发 Server 头](#forward-server-header) - [更多文档](#additional-documentation) - [贡献](#-contributing) ## 演示 提示:抓取 `robots.txt` 路径以获得更多乐趣 ### Krawl URL: [http://demo.krawlme.com](http://demo.krawlme.com) ### 查看仪表盘 [http://demo.krawlme.com/das_dashboard](http://demo.krawlme.com/das_dashboard) ## 什么是 Krawl? **Krawl** 是一个云原生欺骗服务器,旨在检测、延迟和分析恶意攻击者、Web 爬虫及自动化扫描器。 它创建逼真的虚假 Web 应用程序,其中充满低垂的果实,如管理面板、配置文件和暴露的虚假凭证,以吸引并识别可疑活动。 ![dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/893cc5017d013252.png) 通过消耗攻击者的资源,Krawl 有助于清晰地区分恶意行为与合法爬虫。 其特性包括: - **蜘蛛陷阱页面**:基于 [spidertrap 项目](https://github.com/adhdproject/spidertrap),通过无限随机链接消耗爬虫资源 - **虚假登录页面**:WordPress、phpMyAdmin、管理面板 - **蜜罐路径**:在 robots.txt 中宣传以捕获扫描器 - **虚假凭证**:外观逼真的用户名、密码、API 密钥 - **[Canary Token](docs/canary-token.md) 集成**:外部告警触发 - **随机服务器头**:基于服务器头和版本混淆攻击 - **实时仪表盘**:监控可疑活动 - **可定制字典**:基于 JSON 的简易配置 - **随机错误注入**:模拟真实服务器行为 您可以轻松地将 Krawl 与您的其他服务一起通过反向代理暴露,从而保护它们免受 Web 爬虫和恶意用户的侵害。更多详情请参阅 [反向代理文档](docs/reverse-proxy.md)。 ![use case](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c465ee0b17013253.png) ## Krawl 仪表盘 Krawl 提供了一个全面的仪表盘,可通过启动时生成的**随机秘密路径**或通过 `KRAWL_DASHBOARD_SECRET_PATH` 配置的**自定义路径**访问。这使得仪表盘对扫描您蜜罐的攻击者不可见。 仪表盘分为三个主要标签页: - **Overview (概览)** — 攻击活动的高级视图:IP 来源的交互式地图、近期可疑请求,以及排名前列的 IP、User-Agent 和路径。 ![geoip](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0e04dd2367013255.png) - **Attacks (攻击)** — 捕获的凭证、蜜罐触发和检测到的攻击类型(SQLi、XSS、路径遍历等)的详细分析,配有图表和表格。 ![attack_types](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/013636cf09013256.png) - **IP Insight (IP 洞察)** — 选定 IP 的深度取证视图:地理位置、ISP/ASN 信息、信誉标记、行为时间轴、攻击类型分布及完整访问历史。 ![ipinsight](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/2e42106a79013257.png) 更多详情请参阅 [仪表盘文档](docs/dashboard.md)。 ## 🚀 安装 ### Docker Run 使用最新镜像运行 Krawl: ``` docker run -d \ -p 5000:5000 \ -e KRAWL_PORT=5000 \ -e KRAWL_DELAY=100 \ -e KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard" \ -v krawl-data:/app/data \ --name krawl \ ghcr.io/blessedrebus/krawl:latest ``` 访问服务器地址 `http://localhost:5000` ### Docker Compose 创建一个 `docker-compose.yaml` 文件: ``` services: krawl: image: ghcr.io/blessedrebus/krawl:latest container_name: krawl-server ports: - "5000:5000" environment: - CONFIG_LOCATION=config.yaml - TZ=Europe/Rome volumes: - ./config.yaml:/app/config.yaml:ro # bind mount for firewall exporters - ./exports:/app/exports - krawl-data:/app/data restart: unless-stopped volumes: krawl-data: ``` 运行: ``` docker-compose up -d ``` 停止: ``` docker-compose down ``` ### Kubernetes **Krawl 也可以在 Kubernetes 上原生运行**。可以通过 [通过 manifest](kubernetes/README.md) 或 [使用 helm chart](helm/README.md) 进行安装。 ### Python + Uvicorn 直接使用 Python(建议版本 13)和 uvicorn 运行 Krawl,用于本地开发或测试: ``` pip install -r requirements.txt uvicorn app:app --host 0.0.0.0 --port 5000 --app-dir src ``` 访问服务器地址 `http://localhost:5000` ## 配置 Krawl 使用**配置层级**,其中**环境变量优先于配置文件**。此方法推荐用于 Docker 部署和开箱即用的快速自定义。 ### 通过 config.yaml 配置 您可以使用 [config.yaml](config.yaml) 文件进行高级配置,例如 Docker Compose 或 Helm chart 部署。 ### 通过环境变量配置 | 环境变量 | 描述 | 默认值 | |----------------------|-------------|---------| | `CONFIG_LOCATION` | yaml 配置文件路径 | `config.yaml` | | `KRAWL_PORT` | 服务器监听端口 | `5000` | | `KRAWL_DELAY` | 响应延迟(毫秒) | `100` | | `KRAWL_SERVER_HEADER` | 用于欺骗的 HTTP Server 头 | `""` | | `KRAWL_LINKS_LENGTH_RANGE` | 链接长度范围,格式为 `min,max` | `5,15` | | `KRAWL_LINKS_PER_PAGE_RANGE` | 每页链接数,格式为 `min,max` | `10,15` | | `KRAWL_CHAR_SPACE` | 用于链接生成的字符集 | `abcdefgh...` | | `KRAWL_MAX_COUNTER` | 初始计数器值 | `10` | | `KRAWL_CANARY_TOKEN_URL` | 外部 Canary Token URL | None | | `KRAWL_CANARY_TOKEN_TRIES` | 显示 Canary Token 前的请求数 | `10` | | `KRAWL_DASHBOARD_SECRET_PATH` | 自定义仪表盘路径 | 自动生成 | | `KRAWL_PROBABILITY_ERROR_CODES` | 错误响应概率 (0-100%) | `0` | | `KRAWL_DATABASE_PATH` | 数据库文件位置 | `data/krawl.db` | | `KRAWL_EXPORTS_PATH` | 防火墙规则集导出路径 | `exports` | | `KRAWL_BACKUPS_PATH` | 数据库转存储存路径 | `backups` | | `KRAWL_BACKUPS_CRON` | 控制备份作业计划的 cron 表达式 | `*/30 * * * *` | | `KRAWL_BACKUPS_ENABLED` | 启用数据库转储作业的布尔值 | `true` | | `KRAWL_DATABASE_RETENTION_DAYS` | 数据库数据保留天数 | `30` | | `KRAWL_HTTP_RISKY_METHODS_THRESHOLD` | 危险 HTTP 方法检测阈值 | `0.1` | | `KRAWL_VIOLATED_ROBOTS_THRESHOLD` | robots.txt 违规阈值 | `0.1` | | `KRAWL_UNEVEN_REQUEST_TIMING_THRESHOLD` | 计时变异系数阈值 | `0.5` | | `KRAWL_UNEVEN_REQUEST_TIMING_TIME_WINDOW_SECONDS` | 请求计时分析的时间窗口(秒) | `300` | | `KRAWL_USER_AGENTS_USED_THRESHOLD` | 检测多 User-Agent 的阈值 | `2` | | `KRAWL_ATTACK_URLS_THRESHOLD` | 攻击 URL 检测阈值 | `1` | | `KRAWL_INFINITE_PAGES_FOR_MALICIOUS` | 向恶意 IP 提供无限页面 | `true` | | `KRAWL_MAX_PAGES_LIMIT` | 爬虫最大页面限制 | `250` | | `KRAWL_BAN_DURATION_SECONDS` | 被限速 IP 的封禁时长(秒) | `600` | 例如 ``` # 设置 canary token export CONFIG_LOCATION="config.yaml" export KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url" # 设置页面范围 (min,max 格式) export KRAWL_LINKS_PER_PAGE_RANGE="5,25" # 设置 analyzer 阈值 export KRAWL_HTTP_RISKY_METHODS_THRESHOLD="0.2" export KRAWL_VIOLATED_ROBOTS_THRESHOLD="0.15" # 设置自定义 dashboard 路径 export KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard" ``` 带环境变量的 Docker 运行示例: ``` docker run -d \ -p 5000:5000 \ -e KRAWL_PORT=5000 \ -e KRAWL_DELAY=100 \ -e KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url" \ --name krawl \ ghcr.io/blessedrebus/krawl:latest ``` ## 使用 Krawl 封禁恶意 IP Krawl 使用基于信誉的系统对攻击者 IP 地址进行分类。每隔五分钟,Krawl 会将识别出的恶意 IP 导出到 `malicious_ips.txt` 文件中。 该文件既可以从 Docker 容器挂载到另一个系统,也可以通过 `curl` 直接下载: ``` curl https://your-krawl-instance//api/download/malicious_ips.txt ``` 此文件支持在各种平台上自动阻止恶意流量。您可以用它来更新以下平台的防火墙规则: * [OPNsense 和 pfSense](https://www.allthingstech.ch/using-opnsense-and-ip-blocklists-to-block-malicious-traffic) * [RouterOS](https://rentry.co/krawl-routeros) * [IPtables](plugins/iptables/README.md) 和 [Nftables](plugins/nftables/README.md) * [Fail2Ban](plugins/fail2ban/README.md) ## IP 信誉 Krawl [使用分析近期流量的任务来构建并持续更新 IP 信誉](src/tasks/analyze_ips.py)评分。它会定期运行,并根据多种行为指标评估每个活跃 IP 地址,将其分类为攻击者、爬虫或普通用户。阈值完全可自定义。 ![ip reputation](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/55c919ed95013259.png) 分析包括: - **危险 HTTP 方法使用**(例如 POST、PUT、DELETE 比例) - **Robots.txt 违规** - **请求计时异常**(突发或不规则模式) - **User-Agent 一致性** - **攻击 URL 检测**(例如 SQL 注入、XSS 模式) 每个信号都会贡献到一个加权评分模型,该模型会分配一个信誉类别: - `attacker` (攻击者) - `bad_crawler` (恶意爬虫) - `good_crawler` (良好爬虫) - `regular_user` (普通用户) - `unknown` (数据不足) 生成的评分和指标存储在数据库中,供 Krawl 用于驱动仪表盘、信誉跟踪以及自动缓解操作(如 IP 封禁或防火墙集成)。 ## 转发 Server 头 如果 Krawl 部署在 NGINX 等代理之后,应使用以下代理配置转发 **server header**: ``` location / { proxy_pass https://your-krawl-instance; proxy_pass_header Server; } ``` ## 更多文档 | 主题 | 描述 | |-------|-------------| | [API](docs/api.md) | Krawl 用于 IP 数据、信誉和地理位置的外部 API | | [Honeypot](docs/honeypot.md) | 蜜罐页面全览:虚假登录、目录列表、凭证文件、SQLi/XSS/XXE/命令注入陷阱等 | | [Reverse Proxy](docs/reverse-proxy.md) | 如何将 Krawl 部署在 NGINX 之后或使用诱饵子域名 | | [Database Backups](docs/backups.md) | 启用并配置自动数据库转储作业 | | [Canary Token](docs/canary-token.md) | 通过 canarytokens.org 设置外部告警触发器 | | [Wordlist](docs/wordlist.md) | 自定义虚假用户名、密码和目录列表 | | [Dashboard](docs/dashboard.md) | 访问并探索实时监控仪表盘 | ## 免责声明 ## Star History Star History Chart
标签:AMSI绕过, BOF, CISA项目, Cobalt Strike, Docker, Helm, IP信誉, IP封禁, Python, Web蜜罐, 伪造凭据, 低交互蜜罐, 反爬虫, 威胁检测, 子域名突变, 安全防御评估, 密码管理, 攻击诱捕, 无后门, 欺骗防御, 漏洞模拟, 网络安全, 蜜罐, 证书利用, 请求拦截, 逆向工具, 配置审计, 金丝雀令牌, 隐私保护