Tycoon 2FA钓鱼工具包分析
Tycoon 2FA钓鱼工具包是一个成熟的“钓鱼即服务”平台,于2023年8月出现,旨在绕过双重认证和多因素认证保护,主要针对Microsoft 365和Gmail账户。它利用“中间人”方法,通过反向代理服务器托管模仿合法登录界面的欺诈性钓鱼页面,实时捕获用户凭据和会话Cookie。根据Any.run恶意软件趋势追踪器的数据,Tycoon 2FA今年报告的事件超过64,000起,位列前茅。
这使得攻击者能够窃取认证代码并获得对受害者账户的访问权限,即使启用了双重认证。
目标账户
Tycoon 2FA活动专门针对:
- Microsoft账户
- Gmail账户
- 使用Gmail商业账户的组织账户
攻击传播方式
与Tycoon 2FA活动相关的钓鱼链接通过多种旨在欺骗毫无戒心的用户的方法进行分发。攻击者使用以下方式分享这些链接:
- PDF文档
- SVG文件
- 恶意网站
- PowerPoint演示文稿
- 电子邮件
- Amazon S3存储
Tycoon威胁行为者使用Amazon S3存储桶托管恶意伪造登录页面。
https://click.mailchimp.com/track/click/30010842/s3.ap-northeast-3.=amazonaws.com?p=3DeyJzIjoiUUhxQS1jMmJmNW9QeS1lNUFZT2RMeVE4WlJjIiwidiI6Miwic=CI6IntcInVcIjozMDAxMDg0MixcInZcIjoyLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL3MzLmFw=LW5vcnRoZWFzdC0zLmFtYXpvbmF3cy5jb21cXFwvYmFzc2V0dGhvdXNlaW5uLmNvbVxcXC9pbmR=leC5odG1sXCIsXCJpZFwiOlwiZTFjOTg0N2U5YzM1NDc0NjhhZGIyYTAxMGNhZWQxNGZcIixcIn=VybF9pZHNcIjpbXCJhMTlmMmI4NzE3MjNjNGU4YTFmYjU2Mjc2OTY2NDE3ZTQzYTkzNWYyXCJdL=FwibXNnX3RzXCI6MTc1NDkxMTMzM30ifQ"
- Canva和Dropbox
预重定向检查
这些预重定向检查是钓鱼工具包防御检测的关键部分。包括:
- 域名检查:验证用户是否来自预期来源。
- 验证码检查:用于过滤机器人和自动化工具。
- 机器人/扫描工具检查:系统主动寻找用户可能是安全扫描器或自动化机器人的迹象。
- 调试器检查:工具包检查用户是否打开了网页浏览器的开发者工具或调试器,这是安全分析师的常见做法。
Tycoon 2FA钓鱼工具包利用样板模板,根据Microsoft服务器的响应动态生成伪造登录页面。其中一个模板会提示用户输入其多因素认证代码,然后实时将此代码中继到Microsoft的服务器,从而有效地绕过了这一关键的安全步骤。
理解组织策略
Tycoon 2FA活动的一个特别先进的功能是能够理解组织的特定安全策略。通过分析登录过程中的错误消息,钓鱼工具包可以定制其攻击,创建高度针对性的活动,增加成功窃取凭据的机会。
技术分析
机器人检查
Tycoon 2FA攻击从验证码检查开始,以过滤掉自动化机器人。这是确保活动仅针对真实用户的关键步骤。
第一阶段(邮箱提取)
初始HTML页面包含一个带有base64编码有效载荷的JavaScript文件。此有效载荷使用LZ-string算法进行压缩。然后脚本使用LZ-string库来解压缩和执行隐藏的有效载荷。
JavaScript 1(域名检查)
攻击的第二阶段使用一种称为“DOM消失术”的技术来逃避检测。恶意JavaScript代码从文档对象模型中移除自身,但JavaScript在内存中执行,不会为检查页面代码的安全工具留下可见痕迹。
恶意脚本包含三个不同的base64编码有效载荷,每个都设计为在特定条件下运行。
-
有效载荷1:此有效载荷使用XOR密码进行混淆。一旦去混淆,它会投放第二阶段的有效载荷脚本。只有当满足特定条件时才会执行此有效载荷:
window.location.pathname.split必须包含感叹号(!)或美元符号($)。此检查可能使攻击者能够确认用户是通过预期的恶意文档或链接重定向的,而不是通过自动安全扫描器。美元符号($)后面的字符串表示base64编码的受害者电子邮件地址。- 示例URL:
https://qaok5hty3.vraudo.es/ITITRt408hJWgm!5Cj/$ZmhhZ2tZWllckBwdGMuY29t
- 示例URL:
-
有效载荷2和3:如果上述条件不满足,则加载以下错误页面。
JavaScript 2 – 邮箱提取
当脚本检测到调试器处于活动状态时,它通过替换window.location变量将用户重定向到https://google.com。
如果未检测到调试器,脚本会使用window.location属性检索当前URL以检查是否有嵌入的电子邮件地址。
脚本执行以下操作以提取和传输数据:
- URL参数检查:查找URL编码的字符并将其转换为其原始形式。
- 邮箱提取:脚本从当前URL提取电子邮件地址。
- 数据创建:通过在电子邮件地址的开头附加“WQ”来创建自定义字符串(例如,
WQtest@outlook.com)。 - 数据外传:此包含电子邮件的自定义字符串通过POST请求发送到攻击者的命令与控制服务器,URL如下:
url: "/zcYbH5gqRHbzSQXiK8YtTbhpNSGtkZc6xbMyRBGazbWU8fjfq",
C2服务器的响应包含下一阶段的有效载荷,该有效载荷使用AES算法和CryptoJS库进行加密。然后脚本解密并加载有效载荷以继续攻击。
第二阶段(调试器检查和机器人检查)
该脚本由两个主要部分组成,均旨在逃避检测并传递最终有效载荷。
-
规避和重定向:脚本的第一部分使用base64编码和CryptoJS加密进行了大量混淆。当此代码被去混淆后,它会执行关键的调试器检查。如果检测到调试器,脚本会立即通过使用
window.location.replace将用户重定向到良性网站,例如https://www.target.com。此第一个脚本使用全局Windows对象执行。 -
解密有效载荷:如果未找到调试器,则执行脚本的第二部分。与第一部分类似,此脚本也进行了混淆,但它使用了base64编码、连接和CryptoJS加密的组合。一旦解密,此代码负责解密并启动攻击的下一阶段——最终有效载荷。与第一个脚本类似,此部分也通过全局Windows对象加载和执行。
机器人检查有效载荷
攻击的下一阶段是旨在筛选出自动化扫描器和安全工具的机器人检查。
如果检测到机器人,它会立即尝试连接到特定的硬编码URI(https://egk1w.onkttyhqjycn.es/sunel$bqtaxtc’)。然后脚本使用window.location.replace和参数将用户重定向到https://www.target.com。
如果未检测到机器人,脚本会使用setTimeout函数暂停150毫秒,然后再尝试连接。脚本继续下一步,向攻击者的端点("../eypkDtn5lPJjyOMUrofhYfQwPk9fbGCAjUgZztc9dMlLdgv";)发送带有表单数据的POST请求。
第三阶段
JavaScript 有效载荷 1
该脚本包含两个不同的base64有效载荷和Microsoft O365图形代码。
- Microsoft O365登录图形代码:第一个有效载荷是Microsoft O365登录图形代码。这负责创建一个看起来逼真的Microsoft登录页面,诱使用户输入其凭据。
- 调试器检查:第二个有效载荷检查调试器的存在。
- 加密的JavaScript有效载荷:第三个有效载荷是CryptoJS加密的有效载荷。一旦解密,此有效载荷将加载下一阶段的JavaScript有效载荷。
JavaScript 有效载荷 2
该脚本包含两个不同的base64有效载荷:
- 用于加载下一个JavaScript有效载荷的Base64编码有效载荷
- 调试器检查
HTML 有效载荷 3
该脚本包含一个双重用途组件,其中包括调试器检查和样板模板代码。
攻击如何展开
当受害者将其凭据输入伪造登录页面时,攻击者会立即收到此信息。作为中间人,攻击者使用这些被盗凭据向合法的Microsoft服务器发送新的登录请求。 受害者看到的网站然后根据Microsoft服务器的响应动态更新。网页使用以下webparts动态更新。
基于从登录过程中收到的错误消息,攻击者可以逆向工程组织的特定电子邮件配置。这使他们能够创建更有效、有针对性的钓鱼活动。
最终 JavaScript 有效载荷
恶意JavaScript代码执行一系列操作来收集用户数据,将其传输给攻击者,然后提供动态钓鱼页面。
-
数据收集与传输:脚本首先从用户的浏览器收集信息:
- 它使用
navigator.userAgent检索用户代理字符串,该字符串提供有关浏览器和操作系统的详细信息。 - 它向合法的IP地理定位服务(
https://get.geojs.io/v1/ip/geo.json)发送请求以收集用户的IP地址和国家/地区。
然后,这些收集到的数据(包括用户的地理位置和用户代理)使用具有硬编码密钥和IV(
1234567890123456)的CryptoJS进行加密。加密的数据被转换为二进制格式,并通过AJAX POST请求发送到攻击者的端点(/tdwsch3h8IoKcUOkog9d14CkjDcaR0ZrKSA95UaVbbMPZdxe)。 - 它使用
-
用户行为跟踪:一旦用户输入其凭据,脚本会根据请求类型跟踪他们的操作:
checkemail、checkpass、twofaselect或twofaselected。为了识别用户的选择,每个操作都会生成一个唯一的随机化模式:checkemail:pq或rscheckpass:yz或12twofaselect:56,78, 或90twofaselected:23或45
-
数据外传:在用户提交其信息后,脚本加密被盗的密码和会话令牌,然后将它们发送到另一个攻击者控制的端点。
‘https[:]//3eJBE8eo5f13oigGmQkDKhEkKNK9c2TlnVZPVRc16Hnhi0G4kxTsXEf2gH[.]jgcrrouu[.]es/sZzqqvSHaFLRSRFbpIgHEzUhFBimCQAHTCPYNKQFZGMAFYFZUSEVATEOXHQKEXAQDWFXJOAYHETC‘
攻击者作为中间人,将被盗凭据提交给Microsoft服务器。根据服务器的响应(例如,登录成功、密码错误或需要MFA),攻击者的服务器发回一个加密的有效载荷。然后,受害者的浏览器解密此响应并加载适当的网页模板。这使得钓鱼尝试看起来无缝且极具说服力,因为页面的行为模仿了真实的登录过程。
调试器检查
脚本首先执行用户代理检查,以查看浏览器是否由自动化工具(如PhantomJS或Burp Suite)控制。如果检测到任何这些工具,脚本会立即加载空白页面以防止进一步分析。
- 检测调试器:脚本还主动尝试检测是否正在使用调试器。它检查激活浏览器调试模块的特定按键。脚本监控调试器已打开多长时间。如果打开时间超过0.1秒,它会假设存在安全研究人员并将用户重定向到
google.com以终止攻击。
结论
Tycoon 2FA钓鱼攻击越来越多地针对组织,使攻击者能够未经授权访问Microsoft和Google账户。这种访问暴露了敏感资源,如电子邮件、OneDrive、Google Drive和其他应用程序。攻击者利用被盗数据进行针对高价值账户的有针对性的钓鱼活动,在环境内横向移动,窃取数据以及部署勒索软件。
建议
为防范这些钓鱼攻击,组织应采取以下措施:
-
用户钓鱼意识教育
- 培训用户识别可疑活动和钓鱼企图,以最大限度地降低再次感染风险。
- 教导识别通信中修改或拼写错误的URL和语法错误。
- 教育用户了解可能重定向到钓鱼网站的恶意文件(例如PDF、PPT、Word文档和SVG文件)的风险。
-
加强认证
- 部署强大的多因素认证方法以增强账户安全性。
-
实施反钓鱼解决方案
- 利用先进的反钓鱼工具有效检测和阻止钓鱼企图。