技术讨论 | 一次尚未完成的薅羊毛行动
字数 1424 2025-08-18 11:37:02
基于代理与爆破技术的羊毛党实战教学文档
1. 背景与目标
本教学文档基于一次针对XX眼镜公司"免费领取日抛5日装隐形眼镜"活动的安全测试案例。目标是通过技术手段分析并利用活动中的安全漏洞,实现多账号领取赠品。
2. 技术分析
2.1 验证码机制分析
- 验证码长度:4位纯数字
- 验证码请求方式:
POST /tws/we_chat/active/get_auth_code - 请求参数:
phoneNumber=13812345678 - 验证码验证接口:
POST /tws/we_chat/active/check_auth_code - 验证参数:
name=你好&phoneNumber=13812345678&verificationCode=1234
2.2 门店选择机制
- 门店ID参数:
storeId=store20160003 - 获取活动详情接口:
GET /tws/we_chat/active/detail?activeId=5e6d2ccd-a9b5-41b8-a376-2c00ab0c4ee4&storeId=store20160003
3. 攻击实施步骤
3.1 验证码爆破
- 使用Burp Suite的Intruder模块
- 攻击类型:Sniper
- 攻击位置:
verificationCode参数 - 载荷类型:4位数字(0000-9999)
- 预计爆破时间:约1分钟
3.2 门店选择绕过
- 通过枚举
storeId参数值 - 查找距离最近的门店ID
- 修改请求中的
storeId参数
3.3 实际领取技巧
- 提前生成多个账号的领取二维码并截图保存
- 门店应对策略:
- 声称已提前扫描门店二维码预约
- 应对店员对页面跳转的检查
4. 技术难点与解决方案
4.1 现场验证码爆破需求
问题:现场注册需要即时爆破验证码
解决方案:
- 建立手机到云服务器的代理通道
- 云端自动解析请求并爆破验证码
- 2分钟内返回结果到手机端
4.2 代理技术实现
4.2.1 代理工具选择
使用wyproxy工具,基于mitmproxy开发:
- 支持HTTP/HTTPS和Socks5代理
- 可记录请求到MySQL数据库
- 基本命令:
python wyproxy.py -h python wyproxy.py -d -p 8080 -m HTTP/HTTPS
4.2.2 手机代理配置
-
WiFi连接后设置代理:
- 代理服务器IP和端口
- 或使用PAC自动配置文件
-
蜂窝网络代理配置:
- 通过VPN配置实现
- 使用客户端软件如Wingy、Brook等
4.2.3 Shadowsocks与代理结合
问题:如何在SS服务端插入代理
尝试方案:
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner root --dport 443 -j REDIRECT --to-port 8080
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner root --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING --dst p tcp -m owner ! --uid-owner root --dport 8080 -j DNAT --to-destination 127.0.0.1:8080
sysctl -w net.ipv4.ip_forward=1
未解决问题:
- iptables规则配置问题
- SS服务器与代理服务器是否为同一台的影响
- Burp与SS的结合使用
5. 安全建议
5.1 对活动主办方的建议
- 增加验证码复杂度(6位以上或字母数字混合)
- 限制单IP请求频率
- 加强门店核验机制(如动态二维码)
- 验证码与手机号/IP/设备绑定
5.2 对开发者的建议
- 避免在客户端暴露门店ID等敏感参数
- 实现服务端严格的输入验证
- 关键操作添加二次验证
6. 扩展思考
-
自动化羊毛党工具设计:
- 多账号管理
- 自动爆破验证码
- 智能选择最近门店
- 二维码自动生成与保存
-
对抗羊毛党的技术:
- 行为分析识别机器操作
- 设备指纹技术
- 基于风险的验证机制
7. 法律与道德声明
本教学文档仅用于安全研究和技术学习目的。未经授权对他人系统进行测试或利用漏洞获取利益可能违反法律。请遵守当地法律法规,仅在获得明确授权的情况下进行安全测试。