TRAC Labs 最近发现了一个网络钓鱼工具包,我们将其命名为 WikiKit,因为它具有在 JavaScript 被禁用或网络钓鱼链接无效时重定向到维基百科页面的功能。
这个特殊的网络钓鱼活动始于 2024 年 10 月初,针对汽车、制造、医疗、建筑、咨询和娱乐行业。
WikiKit 网络钓鱼活动的独特之处在于它使用托管在 Jimdosite 上的登录页面,背景中带有目标公司的徽标,如下所示。这些页面提示用户单击 ,这会将他们重定向到凭据收集页面,如下所示。Review Document Here
威胁行为者或组织最初获得了对与 IOC 部分中列出的登录页面相关的各种公司凭据的未经授权的访问。然后,他们利用受感染用户的电子邮件帐户进一步分发网络钓鱼链接。这些电子邮件通常包含带有嵌入链接的“附件”。其中一些链接以 开头,让用户觉得该 URL 是合法 Salesforce 重定向的一部分,从而增加用户信任和交互的可能性,例如 。以前,Google Ads 服务用于重定向。app.salesforceiq.com
hxxps://app.salesforceiq[.]com/r?target=<redacted>&url=hxxps://<victim-lookalike-domain>.jimdosite.com
受害者将看到上述登录页面。以下文本在所有着陆页中都相似:
收到新的 PDF 文档
您有 (2) 个新的 PDF 文档供您审阅
请签名并返回
单击后,用户将面临 Cloudflare Tursntile CAPTCHA 检查。Review Document Here
该标签会在 JavaScript ID 被禁用时提供替代内容或行为。因此,将进行重定向。<noscript>
我们分析了一些示例,其中重定向链接将是以下之一:
- https://href.li/?https://en.wikipedia.org/wiki/Category:Office_365
- https://href.li/?https://en.wikipedia.org/wiki/List_of_Microsoft_365_Applications
- https://href.li/?https://en.wikipedia.org/wiki/Internet_Explorer_11
- https://href.li/?https://en.wikipedia.org/wiki/Windows_Server_2019
- https://href.li/?https://en.wikipedia.org/wiki/Email
- https://href.li/?https://en.wikipedia.org/wiki/Email_client
- https://href.li/?https://en.wikipedia.org/wiki/Microsoft_365
- https://href.li/?https://en.wikipedia.org/wiki/Client_access_license
- https://href.li/?https://en.wikipedia.org/wiki/Windows_Server_2016
- https://href.li/?https://en.wikipedia.org/wiki/Microsoft_Exchange_Server
- https://href.li/?https://en.wikipedia.org/wiki/List_of_Microsoft_365_Applications
- https://href.li/?https://en.wikipedia.org/wiki/Microsoft_Office_Mix
- https://href.li/?https://en.wikipedia.org/wiki/Category:Office_365
WikiKit 一直在使用 href.li 匿名服务进行重定向。
输入电子邮件地址后,将发送请求以验证电子邮件地址。如果电子邮件正确无误,服务器将响应以下内容:hxxps://yugaljeeautomotive[.]com/z/pro/mentanance/auth/rUADZcQ3GvV5Gl0r8ijP2l0EbMGF93CFwuqd54Zosi9LiJYgAQtjQfSDI4kmB7RER8PNhNEeClpv8A6z6dboxLHvHSapudmgeIsmHLzTXsq5SWuxcUr4Kqfnyoo1O7WBTk2fV9MkgPy0KwxBOXJIRo/validate
{ "live":true, "grablogo":"1", "email":"email address", "icon":"https://aadcdn.msauthimages.net/<redacted>", "background":"https://aadcdn.msauthimages.net/<redacted>" }
哪里:
live
— 指示用户提供的电子邮件是否被视为有效(true 或 false)。grablogo
— 充当标志,以确定是否应将动态品牌推广应用于网络钓鱼页面(1 或 0)。email
— 表示受害者在网络钓鱼过程中提供的电子邮件地址。icon
— 指向图像文件(徽标)的 URL。background
— 指向背景图像的 URL。
用户输入有效凭证后,该凭证将发送到服务器:
em=email_address pa=password
来自服务器的响应将包含以下示例:
{ "live":true, "email":"email address", "twofactor":true, "role":false, "edu":false, "type":"business", "twofactor_info":[ { "method_name":"PhoneAppOTP", "display":"", "isDefault":true }, { "method_name":"PhoneAppNotification", "display":"", "isDefault":false } ] }
如果特定身份验证方法未标记为默认 ( is ),则函数会从用户界面中隐藏该方法。这可确保用户仅看到 default 方法。isDefault
false
hideOption()
该代码使用正则表达式进行一些检查,以检测环境或代码本身是否被调试工具、注入的脚本或检测篡改。还存在自我验证检查和控制台篡改:
const _0x55de0f = new RegExp(‘function *\( *\)’);
正则表达式以特定格式查找函数定义:或 .调试工具有时会在环境中引入额外的代码,例如 .
function() { … }
function () { … }
function() { debugger; }
const _0x1da82d = new RegExp(‘\+\+ *(?:[a-zA-Z_$][0–9a-zA-Z_$]*)’, ‘i’);
此正则表达式查找对变量名称 (++variableName) 的增量操作。调试工具可能会通过递增变量来循环访问对象或属性,例如:
let counter =0; while (counter <100) { ++counter; }
- 该方法将两个正则表达式应用于与字符串(如 或 )连接的结果。如果任一检查失败,代码将调用 ,这可能是中断或停止执行的方法。否则,它会调用 ,后者将继续进一步验证。
test
_0x47c7e9
chain
input
_0x47c7e9('0')
_0x5e3e02()
- 在 中,如果输入参数的类型为 ,则它使用 JavaScript 的机制创建一个包含无限循环 () 的新函数。这可以防止调试器在运行时注入字符串类型数据或篡改执行流。
_0x5152d1()
_0x1001fa
string
while (true) {}
constructor
function_0x5152d1(_0x1001fa) { if (typeof _0x1001fa ==='string') { returnfunction (_0x1599e0) {} .constructor('while (true) {}') .apply('counter')
- 如果不是字符串,则函数执行数学运算 () 来检测异常。在正常情况下,此操作应返回,因为任何数字除以自身等于 。但是,如果发生篡改或是意外值(例如非数字输入),则结果可能是 NaN (Not-a-Number)。
_0x1001fa
_0x1001fa / _0x1001fa
1
1
_0x1001fa
0
{ ;('' + _0x1001fa / _0x1001fa).length !==1 || _0x1001fa %20 ===0 ?function () { returntrue }
_0x1001fa % 20 === 0
也可能是 debugger 检查的一部分:condition 检查 input 值是否能被 20 整除。如果为 true,则脚本假定输入可能是调试器的重复循环或自动化过程的一部分。调试器有时会系统地循环访问数字或变量以分析程序行为。_0x1001fa
因此,每当脚本通过上述这些检查检测到异常或篡改时,就会触发该语句。该语句有时在脚本中用于挫败分析。例如,它可以通过强制调试器反复暂停来中断调试。debugger
debugger
- Function 通过遍历常见的日志记录方法 ( 、 、 、 和 )并将其替换为占位符函数 (no-op) 来操作浏览器的对象。这将禁用将消息、警告或错误记录到控制台的功能,从而阻止分析师使用浏览器开发人员工具来分析脚本的行为。
_0x2af670
console
log
warn
info
error
exception
table
trace
代码片段中的 、 、 、 、 、 和 等变量用于存储 Base64 编码的图像或图标。每个 Cookie 表示在特定错误条件下显示在网页上的图像。unReq
unEm
pwdReq
unPw
unCode
unSms
emCode
描述输入验证 (捕获用户输入) 和错误处理的表。
WikiKit 根据用户的配置调整认证方式。三种主要方法(、 和 )是指与多重身份验证 (MFA) 机制对应的不同身份验证工作流程。PhoneAppNotification
PhoneAppOTP
OneWaySMS
每种方法都会将特定参数(、 或 )与其他参数(如输入的电子邮件地址 () 和验证码 () )一起发送到 C2 服务器。auth=verify_app
auth=verify_code
auth=verify_sms
em
code
如果身份验证成功,用户将被重定向到 。outlook.office365.com/Encryption/ErrorPage.aspx?src=0&code=10&be=DM8PR09MB6088&fe=1
最近的活动(2024 年 12 月)一直在对凭据收集页面使用相同的 URL()。您可以在 Indicators of Compromise (入侵指标) 部分中查看 IOC。yugaljeeautomotive[.]com/z/pro/mentanance/auth
威胁搜寻
-
查找到包含 “.jimdosite” 的远程 URL 的出站连接,检查 URL 中是否有此博客中描述的模式。 - 查找 的出站连接 ,这表示用户已输入有效的凭据。
outlook.office365.com/Encryption/ErrorPage.aspx?src=0&code=10&be=DM8PR09MB6088&fe=1
- 任何。RUN 威胁情报查询:
domainName:"yugaljeeautomotive.com" OR domainName:"app.salesforceiq.com"
原文始发于微信公众号(安全狗的自我修养):网络钓鱼工具包:WikiKit
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论