#
在线乞讨
2026-06-16
在线乞讨蜜罐部署教程 —— 让每次攻击都变成你的广告
免责声明:本项目仅供安全研究、教育学习使用。请勿用于非法用途。部署蜜罐监听攻击流量在法律允许范围内,但诱导真实用户付款可能涉及欺诈风险,请自行评估。
目录
1. 项目介绍
这是什么?
一个反向蜜罐(Reverse Honeypot)—— 部署在公网服务器上,看起来像一个完整的"在线乞讨/要饭"网站,实际上:
- 正常访客看到 👉 中英文双语要饭页面(微信/支付宝/BTC 收款码 + 背景音乐 + 才艺展示)
- 攻击者看到 👉 🙏 "别打了!磕头了!求求了!" 中英文乞讨页面
- 所有攻击数据 👉 自动记录 IP、UA、请求参数、攻击类型到日志文件
核心逻辑
每次有人打你,返回你的收款码和乞讨文案 = 每台肉鸡都在帮你打广告
| 场景 | 返回内容 |
|---|---|
普通访客 GET / | 完整要饭网站(收款码 + 音乐 + 才艺) |
SQLi ?id=1 union select | 正常页面(背后记录攻击者信息) |
路径遍历 ../../../etc/passwd | 🙏 "别打了" 中英乞讨页 |
XSS <script>alert(1)</script> | 🙏 "别打了" 中英乞讨页 |
| 扫描器过快(限流触发) | 🙏 "别打了" 中英乞讨页 |
功能特性
- ✅ 中英文双语切换 — 右上角一键切换
- ✅ 三种支付方式 — 微信 / 支付宝 / ₿ Bitcoin
- ✅ 原版乞丐背景音乐 — 21秒循环(来自 beggar.aeert.com)
- ✅ 才艺展示弹窗 — 点击播放上行琶音,22秒后可再来一遍
- ✅ 讨饭 GIF — 原版 yaofan.gif 动图
- ✅ Nginx 限流 — 50次/秒,超出返回乞讨页
- ✅ 恶意模式拦截 — SQLi/XSS/路径遍历 → 乞讨嘲讽页
- ✅ 攻击日志 — 所有请求记录到 JSONL 文件
- ✅ 假后台陷阱 —
/admin/记录攻击者输入的账号密码 - ✅ 陷阱端点 —
/api、/.env、/actuator等返回乞讨文案
2. 技术架构
攻击者/访客 → 服务器ip:80
│
▼
Nginx (反向代理 + 限流 + 恶意模式检测)
│
┌───────┴───────┐
▼ ▼
Flask 后端 :5000 拦截页 (429)
(API + 日志记录) (乞讨嘲讽 HTML)| 组件 | 技术 | 说明 |
|---|---|---|
| 反向代理 | Nginx 1.24 | 限流、恶意模式检测、静态文件 |
| 后端 API | Python Flask 3.1 | 订单创建、设置接口、攻击日志 |
| 数据库 | 无(JSONL 文件) | /var/log/honeypot/attacks.jsonl |
| 前端 | 纯 HTML + JS + CSS | 自包含,无框架依赖 |
| 音频 | AAC 21秒循环 | 原版 bgm.m4a(纯音乐) |
| 支付二维码 | 微信/支付宝图片 + BTC 二维码 API | 可替换成你自己的 |
3. 快速部署(一行命令)
前提条件
- Ubuntu 24.04 服务器(其他 Debian 系也可)
- 公网 IP,80 端口开放
- root 权限
一键部署脚本
# 以 root 登录服务器后执行
bash <(curl -sL https://raw.githubusercontent.com/mzm010101/beggar-honeypot/main/deploy.sh)⚠️ 先 Fork 本项目到你的 GitHub,再运行上面的命令。
或者下载源码后在服务器上手动执行。
验证部署
# 正常访问
curl http://你的服务器IP/
# 路径遍历攻击 → 应该返回乞讨页
curl http://你的服务器IP/../../../etc/passwd
# XSS 攻击
curl "http://你的服务器IP/<script>alert(1)</script>"
# SQLi
curl "http://你的服务器IP/?id=1 union select"
# 检查 API 是否正常
curl -X POST http://你的服务器IP/order/create \
-H 'Content-Type: application/json' \
-d '{"amount":"1","payType":"wechat","remark":"test"}'
# 查看攻击日志
tail -f /var/log/honeypot/attacks.jsonl4. 手动部署(Ubuntu 24.04)
4.1 安装依赖
apt-get update -qq
apt-get install -y -qq nginx python3 python3-pip ufw fail2ban
pip3 install --break-system-packages flask flask-cors4.2 创建目录结构
mkdir -p /var/www/honeypot/assets/audio
mkdir -p /var/www/honeypot/assets/img
mkdir -p /var/www/honeypot/assets/plugins/layer
mkdir -p /var/log/honeypot4.3 上传文件
从 GitHub 克隆或从你的本地传输:
# 克隆仓库
git clone https://github.com/mzm010101/beggar-honeypot.git /tmp/beggar
# 复制文件
cp /tmp/beggar/index.html /var/www/honeypot/
cp /tmp/beggar/backend.py /var/www/honeypot/
cp /tmp/beggar/beggar-honeypot.conf /etc/nginx/sites-available/
cp /tmp/beggar/beggar-honeypot.service /etc/systemd/system/
cp /tmp/beggar/assets/audio/bgm.m4a /var/www/honeypot/assets/audio/
cp /tmp/beggar/assets/img/yaofan.gif /var/www/honeypot/assets/img/
cp /tmp/beggar/assets/plugins/layer/layer.min.js /var/www/honeypot/assets/plugins/layer/4.4 配置 Nginx
rm -f /etc/nginx/sites-enabled/default
ln -sf /etc/nginx/sites-available/beggar-honeypot /etc/nginx/sites-enabled/
nginx -t && nginx -s reload4.5 启动后端服务
systemctl daemon-reload
systemctl enable beggar-honeypot
systemctl restart beggar-honeypot4.6 安全加固
# 防火墙:只开 80 和 22
ufw --force reset
ufw default deny incoming
ufw default allow outgoing
ufw allow 80/tcp comment 'honeypot'
ufw allow 22/tcp comment 'ssh'
ufw limit 22/tcp
ufw --force enable
# 关掉 SSH 密码登录(前提是已配好密钥)
sed -i 's/^#*PasswordAuthentication .*/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#*PermitRootLogin .*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
systemctl restart sshd
# Nginx 安全增强
cat > /etc/nginx/conf.d/hardening.conf << 'EOF'
server_tokens off;
client_max_body_size 1M;
client_body_buffer_size 128k;
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 10s;
EOF
nginx -t && nginx -s reload
# Fail2ban
cat > /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
bantime = 1d
findtime = 10m
maxretry = 5
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 7d
[nginx-botsearch]
enabled = true
EOF
systemctl restart fail2ban5. 蜜罐工作原理
5.1 Nginx 拦截层
Nginx 配置了两种拦截机制:
模式匹配拦截 — 正则匹配恶意请求特征:
location ~* (select|union|drop|delete|insert|exec|eval|cmd|alert|<script|\.\./|/etc/passwd|/proc/self|/WEB-INF) {
return 200 '<乞讨页面 HTML>';
}限流拦截 — 50次/秒,超限返回乞讨页:
limit_req_zone $binary_remote_addr zone=honeypot:10m rate=50r/s;
location / {
limit_req zone=honeypot burst=10 nodelay;
}5.2 陷阱端点
黑客扫描常见漏洞路径时,会掉进陷阱:
| 端点 | 返回 | 目的 |
|---|---|---|
/admin/ | 假登录页面 | 记录输入的账号密码 |
/h2 | 假 H2 数据库控制台 | 诱捕尝试连接数据库的攻击者 |
/api | 乞讨文案 | 记录尝试 API 探测的攻击者 |
/.env | 乞讨文案 | 记录尝试读取环境变量的攻击者 |
/actuator | 乞讨文案 | 记录 Spring Boot 扫描器 |
/wp-admin | 乞讨文案 | 记录 WordPress 扫描器 |
5.3 攻击日志格式
所有请求记录到 /var/log/honeypot/attacks.jsonl,每条 JSON 包括:
{
"timestamp": "2026-06-16T06:30:34.749894",
"endpoint": "/order/create",
"method": "POST",
"remote_addr": "127.0.0.1",
"x_forwarded_for": "112.96.228.0",
"user_agent": "curl/8.18.0",
"referer": "",
"cookies": {},
"headers": { "Host": "122.51.6.11", ... },
"args": {},
"data": { "amount": "1", "payType": "wechat", "remark": "test" },
"attack_type": "normal"
}attack_type 字段可选值:normal(正常)、sqli_attempt(SQL注入)、trap_endpoint(陷阱端点)、db_probe(数据库探测)。
6. 安全加固
蜜罐部署后,服务器本身也需要加固,防止被攻击者真的日穿。
6.1 系统层面
| 措施 | 命令 |
|---|---|
| 更新系统 | apt update && apt upgrade -y |
| UFW 防火墙 | 只开 80(http) + 22(ssh) |
| SSH 密钥登录 | PasswordAuthentication no |
| SSH 端口(可选) | 改到 22222 防扫描 |
| Fail2ban | 7 天封禁暴力破解 |
| 内核参数 | SYN cookies、防 IP 伪造、防重定向 |
6.2 Nginx 层面
# 隐藏版本号
server_tokens off;
# 限制请求体大小(防大包攻击)
client_max_body_size 1M;
# 超时设置(防慢速攻击)
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 10s;6.3 Flask 层面
- Flask 仅监听
127.0.0.1:5000(不对外暴露) - 所有请求通过 Nginx 转发
- 攻击日志写 JSONL 文件,不存数据库
7. 吸引攻击者
7.1 被动发现(最省事)
服务器 80 端口对外开后,以下平台会自动发现:
| 平台 | 说明 | 网址 |
|---|---|---|
| Shodan | 互联网设备搜索引擎 | shodan.io |
| Fofa | 网络空间测绘 | fofa.info |
| ZoomEye | 网络空间雷达 | zoomeye.org |
| Censys | 互联网资产搜索 | censys.io |
一旦被收录,攻击者会自动扫描你的蜜罐。
7.2 主动投喂(效果更好)
在以下地方留下链接:
Telegram 技术群:
老哥们看看这个站是什么框架?http://你的IP/
感觉有点东西,但日不动...安全论坛:
萌新练手站,能不能日?http://你的IP/GitHub Issue:
在你们项目相关的 Issue 里留个链接:"顺便看看这个站的安全性"7.3 搜索引擎收录
<!-- 在页面 head 里加 meta 标签,被抓取时显示诱人标题 -->
<meta name="description" content="在线支付系统 v2.3.1 - 测试环境">7.4 假装漏洞站
在服务器上加几个假端点,让攻击者觉得"有漏洞":
http://你的IP/api/users→ 返回{"status":"ok","data":"..."}http://你的IP/admin/login→ 写"测试后台,密码 admin"http://你的IP/version→ 返回nginx/1.24.0(配合隐藏版本号一起玩)
攻击者看到这些会拼命往里日。
8. 查看攻击日志
实时查看
# 查看最新攻击
tail -f /var/log/honeypot/attacks.jsonl
# 查看 Nginx 访问日志
tail -f /var/log/nginx/honeypot-access.log
# 统计攻击者 IP
cat /var/log/honeypot/attacks.jsonl | python3 -c "
import sys, json, collections
ips = collections.Counter()
for l in sys.stdin:
d = json.loads(l)
ips[d['remote_addr']] += 1
for ip, cnt in ips.most_common(10):
print(f'{ip:20s} {cnt:5d} 次')
"
# 统计攻击类型
cat /var/log/honeypot/attacks.jsonl | python3 -c "
import sys, json, collections
types = collections.Counter()
for l in sys.stdin:
d = json.loads(l)
types[d['attack_type']] += 1
for t, c in types.most_common():
print(f'{t:20s} {c:5d} 次')
"查看 Fail2ban 封禁状态
fail2ban-client status sshd
fail2ban-client status nginx-botsearch9. FAQ
Q: BTC 地址怎么换?
修改 index.html 顶部配置:
var BITCOIN_ADDRESS = "你的BTC地址";Q: 怎么换自己的微信/支付宝收款码?
scp 你的微信码.png root@你的服务器:/var/www/honeypot/assets/img/qr_wechat.png
scp 你的支付宝码.png root@你的服务器:/var/www/honeypot/assets/img/qr_alipay.pngQ: 背景音乐哪里来的?
来自原版 beggar.aeert.com 的 bgm.m4a,21秒 AAC 纯音乐(有人声的乞丐调)。
Q: 日志太多占磁盘怎么办?
日志默认存储在 /var/log/honeypot/,JSONL 格式。建议加 logrotate:
cat > /etc/logrotate.d/honeypot << 'EOF'
/var/log/honeypot/*.log
/var/log/honeypot/*.jsonl {
daily
rotate 7
compress
missingok
notifempty
}
EOFQ: 被真实 DDoS 怎么办?
- 给域名套 Cloudflare CDN(免费版自带 DDoS 防护)
- 加 Nginx 限流(已内置 50r/s)
- 或者直接关停蜜罐,攻击者打的是空壳
Q: 蜜罐会被反入侵吗?
- Flask 后端只监听
127.0.0.1(不对外暴露) - Nginx 已限制请求体大小和超时
- SSH 已关闭密码登录
- 系统已启用 UFW 防火墙
- 建议定期
apt update && apt upgrade -y
10. 开源 & 贡献
项目地址
https://github.com/mzm010101/beggar-honeypot.git目录结构
beggar-honeypot/
├── index.html # 中英双语要饭网站(核心文件)
├── backend.py # Flask 后端(API + 日志)
├── beggar-honeypot.conf # Nginx 配置
├── beggar-honeypot.service # systemd 服务文件
├── deploy.sh # 一键部署脚本
├── secure-honeypot.sh # 安全加固脚本
├── assets/
│ ├── audio/
│ │ └── bgm.m4a # 背景音乐(21秒循环)
│ ├── img/
│ │ ├── yaofan.gif # 讨饭动图
│ │ ├── qr_wechat.png # 你的微信收款码(替换我)
│ │ └── qr_alipay.png # 你的支付宝收款码(替换我)
│ └── plugins/
│ └── layer/
│ └── layer.min.js # 弹窗插件
└── README.md # 本教程版权说明
本项目基于 MIT 协议开源。背景音乐 bgm.m4a 来自 npsvip/begger 项目(MIT 协议),仅使用纯音乐部分。
如何贡献
- Fork 本仓库
- 修改你的
index.html中的收款地址 - 替换
qr_wechat.png和qr_alipay.png - 提交 Pull Request
效果展示
正常访问(访客视角)
http://你的IP/
🙏 好人一生平安 🙏
🎵 大哥哥大姐姐们呐,你们都是有钱的人呐~
谁有那多余的零钱,给我这可怜的人呐~
[微信支付] [支付宝] [₿ Bitcoin]
❤️ 热心捐助攻击访问(攻击者视角)
http://你的IP/../../../etc/passwd
🙏
⚡ STOP 别打了 PLEASE STOP ⚡
── 中文 ──
大哥哥大姐姐们呐~ 俺就是个要饭的,你打我有什么用!
求求了,别扫了!别打了!
CPU 打冒烟了,流量打没了...
🙇 磕头了!好人一生平安!
── English ──
Oh kind sir/madam, I am just a humble beggar!
Why do you attack a poor soul like me?
Please, have mercy! Stop scanning!
🙇 I kneel before you! May good bless you!
💰 点此捐助 Donate Here 💰
IP: 1.2.3.4 | UA: sqlmap/1.8最后的话:这个项目的核心哲学 —— 你不是在和攻击者对抗,而是把每次攻击转化成你的广告。每个打过来的请求都看到你的收款码和乞讨文案,等于每台肉鸡都在帮你打广告。攻击成本变成了你的营销成本。
TAGS:
在线乞讨
相关推荐
- 暂无相关推荐,看看别的吧。
0 评论