JavaScript的注入引出技术诈骗

0×01 前言

在最近的恶意软件的调查中,我们发现了一些有趣的混淆JavaScript代码。此代码伪装成现在流行的插件AddThis social
sharing的一部分,在URL命名约定和图像文件中使用它。恶意软件最终将网站访问者重定向到node.additionsnp[.]top,这个网站存在着可能对访问者造成威胁的技术骗局。这种恶意软件巧妙的隐藏了自己,网络管理员很难能识别它。

0×02 混淆的恶意图像文件

恶意代码嵌入在WordPress核心文件的末尾


  1. wp-includes/js/jquery/ui/datepicker.min.js 

攻击者使用onblur函数加载恶意内容,窗口失去焦点三秒后,它将使用replace函数来解密模糊的payload URL。 这是通过在字符串中随机位置添加0到5的数字来编码的,如下所示:


  1. 22c1n4d41.3s27-44a2d11d1t0hi4s3.0t1o2p001 

在从字符串中删除0-5之间的所有数字后,我们看到它从以下位置的URL获取payload:


  1. //cnd.s7-addthis[.]top 

恶意软件还会在字符串前添加http和附加#ad.png,从而生成PNG图像文件的URL。

0×03 一个令人信服的假图像

该恶意软件很狡猾,如果你直接去访问PNG文件,会返回一个404页面。这很可能是攻击者基于访问者浏览器的 user-agent字符串进行了限制访问。我们可以使用curl工具去伪造一下,欺骗它正常的进行工作。

我能够访问假的PNG文件。它甚至包含正确的头信息和魔术字节,以将文件格式标识为PNG图像:

该文件还包含一些二进制代码,它通过浏览器渲染一个实际的图像(它看起来像一个真正的AddThis图标)。 这个额外的步骤使得它更难被网站所有者识别为恶意软件:

隐藏在图像文件中的恶意代码在恶意软件业务中并不是什么新东西 – 我们已经看到了这些年来不同的技术。在PNG文件的END部分之后添加的恶意代码不会破坏图像。

图像文件内容,带有恶意有效载荷在末尾,由我们上面提到的脚本解析和执行:


  1. eval(y.responseText.split('###')[1]) 

隐藏函数用于将浏览器重定向到URL:


  1. hxxp://node.additionsnp[.]top/?aff=8007001 

0×04 重定向到技术诈骗

此页面检查访问者的IP地址和浏览器,使用下面的脚本将不符合的访问者返回到上一页面:


  1. window.onload=history.back() 

对于搜索引擎的user-agents(例如Googlebot),此页面返回404 Not Found错误。

但是,如果访问者在启用JavaScript的Windows上使用浏览器,并且使用美国或加拿大IP,则此页面将显示带有典型技术诈骗警告的弹出窗口。这些骗子试图说服受害者,他们的计算机感染了恶意软件,并紧急发布一些免费的“帮助台”号码来解决这个问题。

如果受害者呼叫这些号码,骗子将连接到受害者的计算机,然后自愿清除错误日志,并删除不存在的恶意软件 – 换取几百美元。

访问受害者的计算机也可以使骗子安装一些额外的间谍软件。 有时,骗局页面甚至可能会请求您的Windows用户名和密码(as reported in this MalwareBytes thread),这可能有助于感染受害者的计算机。

0×05 Source and Additional Domains

此恶意软件广告使用位于伯利兹的IP地址的服务器,特别是在俄罗斯和乌克兰组织注册的80.87.205.233和185.93.185.243。

我们发现有更多的网域与此恶意软件广告系列相关联:


  1. wine.industrialzz.top 
  2. one.industrialzz.top 
  3. web.machinerysc.top 
  4. sub.contentedy.top 
  5. check-work-18799.top 
  6. asp.refreshmentnu.top 
  7. get.resemblanceao.bid 
  8. sip.discoveredzp.bid 

0×06 总结

有这么多域用于托管诈骗内容,这似乎是这些唯利可图黑帽子的附属公司。这个恶意软件被注入到WordPress核心文件,与其他代码混合,并欺骗熟悉的合法服务,以隐藏其轨迹,使其很难被发现。

简单搜索你的网站文件和数据库去发现恶意域不会有任何作用,因为这可以很容易混淆。

为了快速检测您的网站文件的未经授权的更改,您可以设置一个监控服务,将您的文件与已知的良好状态进行比较。我建议使用WordPress的sucuri-scanner插件,准备好对安全事件采取行动,可以让您在访问者受到这些欺骗行为伤害之前采取行动。

作者:zusheng
来源:51CTO

时间: 2024-11-03 08:33:37

JavaScript的注入引出技术诈骗的相关文章

远程线程注入引出的问题

远程线程注入引出的问题   一.远程线程注入基本原理 远程线程注入--相信对Windows底层编程和系统安全熟悉的人并不陌生,其主要核心在于一个Windows API函数CreateRemoteThread,通过它可以在另外一个进程中注入一个线程并执行.在提供便利的同时,正是因为如此,使得系统内部出现了安全隐患.常用的注入手段有两种:一种是远程的dll的注入,另一种是远程代码的注入.后者相对起来更加隐蔽,也更难被杀软检测.本文具体实现这两种操作,在介绍相关API使用的同时,也会解决由此引发的一些

《JavaScript设计与开发新思维》——1.4 JavaScript和其他常见技术的比较

1.4 JavaScript和其他常见技术的比较 在我开始学习外语之前,从未真正领会英语语法的课程:有时候掌握一种思想只需要一些比较和对照.在接下来的几页当中,我将说明如何将JavaScript与其他你可能已经熟悉的常见技术进行比较,希望你能够更加完整地理解将要掌握的这种语言. HTML和CSS HTML(HyperText Markup Language,超文本标记语言)是用于创建网页的技术.(顺便说一句,如果你还不知道这一点,就需要在进一步学习本书之前学习HTML.)HTML和JavaScr

关于javascript模块加载技术的一些思考_javascript技巧

前不久有个网友问我在前端使用requireJs和seajs的问题,我当时问他你们公司以前有没有自己编写的javascript库,或者javascript框架,他的回答是什么都没有,他只是听说像requirejs和seajs是新东西新技术,很有价值所以想用它. 这位网友的问题引起了我对javascript模块加载技术的思考,上篇文章我给出了自己写的一个javascript库的基本结构,其实写这篇文章的一个起因就是因为我想使用requirejs或者seajs这样的技术来重新设计我写javascrip

PHP的SQL注入攻击技术实现以及预防措施

SQL攻击(SQL injection,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏. 有部份人认为SQL注入攻击是只针对Microsoft SQL Server而来,但只要是支持批处理SQL指令的数据库服务器,都有可能受到此种手法的攻击. 原因 在应用程序中若有下列状况,则可能应用程序正暴露在SQ

JavaScript事件委托的技术原理探讨示例_javascript技巧

如今的JavaScript技术界里最火热的一项技术应该是'事件委托(event delegation)'了.使用事件委托技术能让你避免对特定的每个节点添加事件监听器:相反,事件监听器是被添加到它们的父元素上.事件监听器会分析从子元素冒泡上来的事件,找到是哪个子元素的事件.基本概念非常简单,但仍有很多人不理解事件委托的工作原理.这里我将要解释事件委托是如何工作的,并提供几个纯JavaScript的基本事件委托的例子. 假定我们有一个UL元素,它有几个子元素: 复制代码 代码如下: <ul id=&qu

Javascript依赖注入学习笔记

注意:不要将依赖注入和设计模式里的依赖倒置原则(Dependency Inversion Principle)混淆. 目标 设想我们有两个模块.第一个是负责Ajax请求服务(service),第二个是路由(router). var service = function() {      return { name: 'Service' }; } var router = function() {      return { name: 'Router' }; } //我们有另一个函数需要用到这两

JavaScript依赖注入的实现思路

如今各个框架都在模块化,连前端的javascript也不例外.每个模块负责一定的功能,模块与模块之间又有相互依赖,那么问题来了:javascript的依赖注入如何实现?(javascript的依赖注入,各大框架都有相应的实现,这里只学习实现思路) 如下需求: 假设已经有定义好的服务模块Key-Value集合,func为添加的新服务,参数列表为服务依赖项. var services = { abc : 123, def : 456, ghi : 789 }; // 假设已定义好某些Service 

javascript 鼠标拖动图标技术_javascript技巧

这个例子简单讲就是鼠标拖动图标到它任意想去的地方 代码 复制代码 代码如下: <body> <div id="block" style="width:100px; height:100px; position:relative; background-color:#FF0000";></div> <script> var bb = document.getElementById("block");

Javascript技术栈中的四种依赖注入小结_基础知识

作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道经久不衰.比如在J2EE中,就有大名鼎鼎的执牛耳者Spring.Javascript社区中自然也不乏一些积极的尝试,广为人知的AngularJS很大程度上就是基于DI实现的.遗憾的是,作为一款缺少反射机制.不支持Annotation语法的动态语言,Javascript长期以来都没有属于自己的Spri