Mike Felch //
随着越来越多组织强制要求使用双因素认证(2FA)来访问GSuite和OWA等外部服务,红队和渗透测试团队需要创新技术来捕获2FA令牌,而不仅仅是获取员工凭证。多年来,出现了多种获取2FA令牌的攻击方式,如伪造手机GSM信号、暴力破解令牌,或寻找禁用多因素认证的遗留门户。近期,攻击者开始通过社会工程诱骗受害者通过短信发送令牌。虽然这些技术偶尔有效,但成功率较低。CredSniper正是在红队行动中应运而生的工具,能够高效获取凭证和2FA令牌,甚至适用于技术资深的高级员工。
钓鱼攻击已存在多年,多数组织已开始在日常培训中提高员工安全意识。但问题在于,培训往往聚焦于识别邮件中的危险信号,而非培养健康的网络行为习惯。CredSniper通过克隆目标熟悉的认证门户,诱骗受害者主动提交凭证和2FA令牌。
使用HTTPS不仅保护目标凭证不被非安全站点窃取,还能避免克隆门户因质量低劣而被识别为钓鱼站点。例如,克隆GSuite门户时,Chrome浏览器会警告目标站点可疑,而HTTPS能解决此问题。CredSniper安装时会通过Let's Encrypt为指定主机申请SSL证书,前提是主机名已解析至服务器IP。
CredSniper内置GSuite模块,用户也可快速创建新模块(约5-10分钟)。模块定义了模板与路由的映射关系,例如访问/login
时会加载认证流程相应阶段的模板。CredSniper的核心思想是:在后台与真实门户交互时同步获取目标输入的2FA短信令牌。
模板采用Jinja2语言,支持动态插入用户数据(如{{ username }}
)。模块可配置任意多路由以适应不同认证流程。
CredSniper提供轻量级API,支持快速消费易过期的2FA令牌。API功能包括:
https://<钓鱼站点>/creds/view?api_token=<API令牌>
https://<钓鱼站点>/creds/seen/<凭证ID>?api_token=<API令牌>
https://<钓鱼站点>/config
undefined请求体示例:{
"enable_2fa": true,
"module": "gmail",
"api_token": "随机字符串"
}安装后运行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为例,认证流程分三阶段:
CredSniper在实战中表现卓越,作者同时推荐了Kuba Gretzky开发的同类工具evilginx2(通过代理连接拦截凭证)。两者均为红队行动提供了强大支持。
相关链接:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。