使用CredSniper窃取红队行动中的2FA令牌
使用CredSniper窃取红队行动中的2FA令牌
Mike Felch //
随着越来越多组织强制要求使用双因素认证(2FA)来访问GSuite和OWA等外部服务,红队和渗透测试团队需要创新技术来捕获2FA令牌,而不仅仅是获取员工凭证。多年来,出现了多种获取2FA令牌的攻击方式,如伪造手机GSM信号、暴力破解令牌,或寻找禁用多因素认证的遗留门户。近期,攻击者开始通过社会工程诱骗受害者通过短信发送令牌。虽然这些技术偶尔有效,但成功率较低。CredSniper正是在红队行动中应运而生的工具,能够高效获取凭证和2FA令牌,甚至适用于技术资深的高级员工。
CredSniper简介
钓鱼攻击已存在多年,多数组织已开始在日常培训中提高员工安全意识。但问题在于,培训往往聚焦于识别邮件中的危险信号,而非培养健康的网络行为习惯。CredSniper通过克隆目标熟悉的认证门户,诱骗受害者主动提交凭证和2FA令牌。
HTTPS的必要性
使用HTTPS不仅保护目标凭证不被非安全站点窃取,还能避免克隆门户因质量低劣而被识别为钓鱼站点。例如,克隆GSuite门户时,Chrome浏览器会警告目标站点可疑,而HTTPS能解决此问题。CredSniper安装时会通过Let's Encrypt为指定主机申请SSL证书,前提是主机名已解析至服务器IP。
模块化认证门户
CredSniper内置GSuite模块,用户也可快速创建新模块(约5-10分钟)。模块定义了模板与路由的映射关系,例如访问/login
时会加载认证流程相应阶段的模板。CredSniper的核心思想是:在后台与真实门户交互时同步获取目标输入的2FA短信令牌。
模板采用Jinja2语言,支持动态插入用户数据(如{{ username }}
)。模块可配置任意多路由以适应不同认证流程。
API集成
CredSniper提供轻量级API,支持快速消费易过期的2FA令牌。API功能包括:
- 查看凭证(GET):
https://<钓鱼站点>/creds/view?api_token=<API令牌>
- 标记凭证为已读(GET):
https://<钓鱼站点>/creds/seen/<凭证ID>?api_token=<API令牌>
- 更新配置(POST):
https://<钓鱼站点>/config
请求体示例:{ "enable_2fa": true, "module": "gmail", "api_token": "随机字符串" }
简易安装
- 克隆仓库:
$ git clone https://github.com/ustayready/CredSniper $ cd CredSniper $ ./install.sh
- 配置参数:包括模块选择、最终跳转URL、SSL启用、2FA钓鱼开关、主机名及监听端口。
- 依赖安装:自动安装Python3、VirtualEnv、CertBot等组件。
安装后运行python credsniper.py --help
即可启动。后续使用时需先激活虚拟环境:
$ cd CredSniper
$ source bin/activate
(CredSniper) $ python credsniper.py --help
灵活使用
支持多种配置模式,关键参数包括:
--module
:指定钓鱼模块(如gmail
)--twofactor
:启用2FA钓鱼--ssl
:启用Let's Encrypt SSL--final
:设置钓鱼后跳转URL
凭证存储文件:
.cache
:临时缓存用户名和密码阶段凭证。.sniped
:存储完整凭证,含2FA信息、IP及地理位置数据。
页面克隆技巧
使用FireFox插件“Save Page WE”克隆页面并内嵌资源,避免回调风险。模板需放入modules/module/templates/
目录并使用Jinja2语法。以Gmail为例,认证流程分三阶段:
- 邮箱验证:加载用户头像(通过Google Picaso服务)
- 密码验证:后台验证并检测2FA状态
- 2FA令牌捕获:根据类型(短信/OTP/Yubikey)处理
总结
CredSniper在实战中表现卓越,作者同时推荐了Kuba Gretzky开发的同类工具evilginx2(通过代理连接拦截凭证)。两者均为红队行动提供了强大支持。
相关链接:
- CredSniper GitHub
- Evilginx2 GitHub
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码