|
传播机制 Frans Rosé花费了相当长的时间对JavaScript进行分析,并试图弄清楚恶意软件的传播方式。从表面上看,这貌似是一个简单的工作,但实际情况并非如此。这项工作涉及多个步骤,其中就包括确定Javascript的有效载荷。此外,由于是由脚本决定何时发起网络攻击,因此要实时关心攻击者何时发起攻击。 利用Chrome传播的恶意软件不仅仅是传播恶意的网络链接,还会收集和统计受害者的信息。我们尝试将此次恶意软件传播过程进行分解,总结下来主要分为以下几个步骤: 1、受害者从朋友那里收到Facebook Messenger的链接。
Facebook的消息框,消息框中的信息包括用户的姓氏、“视频”(Video)一词和随机的emoji表情:
Google文档共享PDF预览 点击链接后,用户就会被复位向到docs.google.com上的一个URL。此链接是通过运用共享PDF的预览链接制作的。这一可能性比较大,因为这是通过外部链接在合法的Google域上获得大型受控内容区域的最快方式。 PDF本身是运用PHP中的TCPDF 6.2.13创建的,然后运用Google Cloud Services上传Google文档。TCPDF 6.2.13的PHP创建的,然后运用Google Cloud Services上传到Google文档。点击
上图中显示“任何人都可以编辑”(Anyone can edit”),这就意味着任何拥有链接的人都可以对其进行编辑。让我们来看看这个链接是如何传播开来的——攻击对所有受害者facebook好友都发送了相同的链接。但任何一个好友改变链接访问权限,就会阻止攻击蔓延到受害者的其它朋友。另一个有趣的细节是创建文档的用户。对大量的个案进行研究就会发现其中的规律:
重新定向 在点击Google文档链接后,用户将被重新定向,最有可能出现的是指纹识别技术浏览器。以下我们将重点分析Chrome浏览器。Chrome扩展程序重新定向被重新定向至虚假的YouTube网页,运用Chrome浏览器的用户将被重新定向至虚假的YouTube网页。我们注意到在攻击时运用了几个不一样的域。
Chrome扩展程序 这里运用了多种Chrome扩展程序。所有的扩展程序都是新创建的,代码是从名称相似的扩展名中盗来的。这些扩展程序主要是运用background.js和manifest.json的修改版。 显示进行了更改以控制tabs和所有的URL,并启用对background.js的支持: 我们发现的所有Chrome扩展程序中的后台脚本都是不清楚的,但基础的脚本如下图所示:
这个脚本非常值得深入推敲。首先,用户只有从Chrome Webstore上安装了扩展程序,background.js才能获得外部URL;如果运用未打包的从本地安装的扩展程序则不会触发网络攻击。 抓取的URL将包含另一个脚本的引用。这个脚本将运用URL.createObjectURL发送到一个Javascript的Blob对象,然后运行background.js。Blob对象中新生成的脚本同样是不清楚的,如下图所示:
1、如果tab加载成功,就会为所有tab添加一个听众。 2、标签页面载入后,将向另一URL地址发起请求。如果该响应包含任何内容,将被发回标签页面,同时运用executeScript进行触发。该文件之后将在发出请求的标签页面上运行Javascript,从而及时实现XSS注入。 获得所有脚本 进行识别被注入文件的研究时,我注意到攻击者的C&C服务器并非始终有代码返回。我开始猜测,当攻击发起时,攻击者能够控制是否传播攻击,以及是否采取手动或特定手段进行。 为了避免在这里白白坐等,我建立了伪扩展程序来模拟攻击者的行为。当然,我并没有激活相关代码,而是将其保存在本地。 一段时间后,我注意到自己已经获得许多点击量,点击者的终端均立即发回了回应码(back code):
创建一个访问令牌。现在Facebook已经弃用了FQL API,Facebook此前一直运用FQL API:
取得好友列表 由于攻击者已经获得一个支持FQL的访问凭证,他们将能利用过时API取得受害者的朋友列表,并按上线日期进行划分,将一直保持在线的朋友选取出来。他们通过一次选取50名好友将其打乱,只有当这些好友处于空闲或在线状态时,才开始发动攻击。 接着,他们将通过另一域名生成链接,专门用于接受用户ID信息。这一链接将在Google Docs上创建PDF文件,记录现在受害者的档案资料,再由一个短地址将其发回。攻击者接收该链接后,会再次随即向所有好友发送信息,并使该链接再次运转。有趣的细节在前面的攻击中,植入代码的某些部分从未被运用过,或有所遗留。其中一部分就是在合适条件下向每名好友发送消息的定位功能,在实际攻击中其被换成了随机的emoji表情:
攻击者所运用的域中包含了一些文件,使我们猜测相似login.php在内的PHP文件应该储存其中。该文件将同时释放出一个Facebook登录脚本,以及一个硬编码电子邮箱地址:
我们发现攻击者运用了数种版本的Facebook注入脚本。在攻击的末尾阶段,该脚本仅仅点赞了Facebook页面,却并未发动攻击。另外,用于收集访问凭证的域名也从脚本中移除了。 登录页 正如我们所提到,脚本同样列举了你正在运用的浏览器类型。Chrome拓展部分仅对运用Google Chrome的用户有效。如果你运用的是另一种浏览器,相关代码也会执行其它命令。 有趣的是,攻击者虽然对大多数操作系统添加了支持,但我们并未收集到针对Linux操作系统的任何样本。我们所收集的样本均为恶意广告程序,在受害者打开最后的登陆页时,将被复位向至数个包含恶意邮件或广告的跟踪域。这也说明了攻击者想要通过点击量或分发恶意邮件或广告进行谋利。 Safari浏览器 MD5 (AdobeFlashPlayerInstaller.dmg) = d8bf71b7b524077d2469d9a2524d6d79 MD5 (FlashPlayer.dmg) = cfc58f532b16395e873840b03f173733 MD5 (MPlay.dmg) = 05163f148a01eb28f252de9ce1bd6978 这些均为虚假的Adobe Flash更新,但受害者每次都会关闭不一样的网站。为此,攻击者似乎轮流运用了一组域名。
MD5 (VideoPlayerSetup_2368681540.exe) = 93df484b00f1a81aeb9ccfdcf2dce481 MD5 (VideoPlayerSetup_3106177604.exe) = de4f41ede202f85c370476b731fb36eb
现在,Google Chrome安全小组已禁用所有恶意扩展程序,但是当攻击者运用恶意软件盗取了你的Facebook个人资料的同时,也盗取了你Facebook账号的访问令牌(access-token)。这个访问令牌可能使有时间限制的,但是它的访问权限非常之大。Facebook账号的访问令牌主要是用于安卓系统的Facebook软件。一旦获得了你的访问令牌,攻击者就可以访问用户的个人资料,不论你是否更改了密码、注销Facebook账户或是关闭了Facebook上的的平台设置。
结语 攻击主要依赖现实的社交互动,动态用户内容和合法域名作为中间步骤。上述扩散机制的核心感染点是安装Chrome扩展程序。当你允许扩展过程控制浏览器活动时请格外注意。同时,也要弄清楚现在你的浏览器上运行了哪些扩展程序。如果你运用的是Chrome浏览器,可以在URL中输入chrome://extensions/,以获得正在运行的扩展程序列表。 |
发表评论