Kaspersky Lab 和Detectify 联合对上周在Facebook 上传播的恶意软件进行逆向分析。当我们的设备受到攻击时,可以从所涉及的公司和云服务中得到帮助, 以便快速关闭攻击的部分,减轻攻击带来的影响。
更新 #1: 攻击仍在进行, 但它已经改变了流程, 现在窃取了 non-expiry 的访问-令牌。请阅读以下内容。
介绍
自从卡巴斯基实验室在博客上公布关于多平台的facebook 恶意软件过去了一些日子, 这款恶意软件是通过 facebook 的信使传播。在卡巴斯基实验室分析这一软件的安全威胁同时,其实还有有一些研究人员在做同样的工作, 包括Frans Rosén, Detectify 的安全顾问。
在Frans看了David对博客的评论,他找到David问他:为什么他们都做同样的工作。Frans有一个想法, 所以他们开始比较笔记, 发现Frans实际上分析了David一些没有的部分。他们决定共同写下第二部分的分析, 将攻击行为详细描述。
传播机制
Frans花了许多时间分析JavaScript,希望找到恶意软件是如何传播的,虽然这个任务看似简单。试图找出 Javascript 有效载荷的方法有多个步骤。此外, 由于脚本动态决定何时启动攻击, 因此必须在攻击者触发它时对其进行监视。
这些结论可以分解成几个步骤, 因为它不仅是传播链接, 恶意软件还会通知攻击者关于每个感染者所收集统计信息, 并枚举浏览器。我们试着尽可能简单地总结这些步骤:
1.受害者会在Facebook 聊天窗口收到好友发来的一个链接。
2.链接转到 Google 文档, 它的图像看起来像是一个假的视频播放器, 上面有朋友的个人资料图片。
3. 在chrome浏览器上打开该链接,浏览器将进入一个假冒的 YouTube 网页, 要求您直接在页面上的 安装chrome 扩展工具。
4. 安装 Chrome 扩展工具后, 会将恶意链接传播给受害者的在线好友, 并与受害者的个人
资料图片相结合。
在这些步骤中,有一些有趣的东西,所以我们来认真看看。
技术细节
Facebook消息
消息本身将由获取消息的用户的名字、单词 "视频" 和随机选择的这些 emojis 的一个名称组成:
同时还有URL短地址的一个链接
谷歌文档共享 PDF 预览
用户点击链接会被重定向到一个地址为docs.google.com的网页。此链接是通过使用共享PDF的预览链接制作的,这一可能性比较大,因为这是通过外部链接在合法的Google域上获取大型受控内容区域的最快方式。
PDF本身是使用PHP中的TCPDF 6.2.13创建的,然后使用Google Cloud Services上传到GoogleDocs。点击就会转到一个正在预览的PDF文件的详细信息页面。
生成的链接的共享设置,其中包含一个有趣的细节:
“任何人都可以编辑”。这个结构意味着任何拥有这个链接的人都可以编辑。看看这个链接是如何传播的,这个攻击重复发送相同的链接到受害者的朋友。但任何一个好友改变链接访问权限,就会阻止攻击蔓延到受害者的其它朋友。
另外一个有趣的细节是创建文档的用户。收集了一系列的案例后,我们可以看清一些模式:
分析来自不同受害者的四个链接,虽然它们是在不同的Google Cloud项目中创建的,但是其中三个共享相同的IAM 用户名(ID-34234)
攻击的时候,来自PDF预览的链接没有一个 被Google 列入黑名单
重定向部分
在Google Docs的链接被点击之后,用户会经历一系列重定向,最有可能是为了获取浏览器的数字证书。以下我们将重点分析Chrome浏览器。
对于其他的浏览器(出现了广告, 并且下载了广告软件)请阅读下面的登陆页面。
虚假的YouTube上带有Chrome拓展安装包
当在电脑上使用Chrome浏览器,你就会被定向到一个虚假的YouTube页面。我们注意到在攻击中用到的 几个不同的域名。
这个网页会询问你是否要安装Chrome拓展工具。因为你可以直接在网页上安装一个Chrome拓展工具,受害者需要做的动作就是点击“添加拓展工具”。 在这一点之后, 攻击会进一步蔓延Chrome扩展,然而却不需要受害者其他的操作。
Chrome Extension
在这过程用到了多种的Chrome 扩展工具。所有的拓展都工具是新创建的,代码是从名称相似的扩展名中复制来的。这些扩展程序的Java脚本代码主要是使用background.js和manifest.json的修改版。
通过修改manifest,以控制tabs和所有的URL,并启用对background脚本的支持:
我们发现的所有Chrome扩展程序中的后台脚本都是混淆的,但基础的脚本如下图所示:
混淆的后台脚本
这个脚本有些有趣的东西
首先,这个拓展工具只有从Chrome Webstore上安装,background.js才能获取外部URL;使用本地文件安装这个拓展工具并不会引起攻击。
抓取的URL将被添加另一个脚本的引用。这个脚本将使用URL.createObjectURL发送到一个Javascript的Blob对象,然后运行background.js。
这个来自blob的新脚本也将会被混淆编码。看起来就像这样:
下面就是这些功能的主要内容:
1.添加监听工具,监测每一个成功加载的新网页。
2.当网页加载成功,会向另一个URL发送一个新的请求。如果收到的相应中含有内容,将被发回标签页面,同时使用executeScript进行加载。该文件之后将在发出请求的标签页面上运行Javascript,从而及时实现XSS注入。
获取所有的脚本
当在查找并试着确定被注入文件的过程中,我注意到攻击者的C&C服务器并不是总有代码返回。我的猜想是他们可以控制是否传播病毒,而且手动或采取特殊手段实施攻击。
为了避免坐以待毙,我自己也根据他们的拓展工具写了一段相同功能的伪拓展工具,但我只是把它保留在本地,而不是激活代码。
一段时间后,我注意到我获取到大量点击。点击者的终端均立即发回了回应码(back code):
返回的代码经过任何混淆处理,可以清楚地看到具体的功能。这是专门为Facebook而编写的。
该脚本执行了以下操作:
• 监测运行的域中是否包含facebook.com
• 提取CSRF凭证以访问Facebook,将其名为“fb_dtsg”。
• 检查是否已经获取访问凭证(是用来完成Facebook API的身份验证)。如果还没有,它就会发送请求来用CSRF凭证来获取访问令牌
• 将访问令牌(access token)和用户ID发送给攻击者的外部站点。
• 确保平台的功能已经启用(禁用平台的kill-switch):
• 创建一个合法的访问令牌。事实证明Facebook已经弃用他们的FQL API,而这个API过去一直负责与Facebook API通信;
• 但是攻击者发现,如果你使用一款名叫“Pages Manager for iOS”的APP来创建访问令牌,FQL AP仍然是可以用的
现在,让目光转移到最有趣的部分--脚本都做了哪些操作
对攻击者点赞Facebook页面的剖析
脚本将根据硬编码内容为一个Facebook页面点赞。这个可能是攻击者通过查看页面上点赞的数量,来记录受感染用户的数量,
在该攻击的某一阶段中,我们发现页面中的点赞数量激增,从8900:
在短短数小时之中,跃升到近32000:
很明显,他们使用C&C服务器上的脚本获取器控制了何时激活脚本,因为在攻击过程中,该网页点赞数量的增长速度呈现出巨大差异。
他们在攻击的过程中也不短更换网页,最可能是因为他们原来的网页被Facebook封掉
获取你的好友
既然攻击者现在有FQL-enabled 访问令牌,他们就可以使用弃用的API来获取受害者的好友目录,并按上线日期进行划分,将在线的朋友提取出来。
他们通过一次选取50名好友将其打乱,只有当这些好友处于空闲或在线状态时,才开始发动攻击。
接着,他们将通过另一域名生成链接,专门用于接收用户ID信息。这一链接将在Google Docs上创建PDF文件,记录目前受害者的档案资料,再由一个短地址将其发回。
在获取到链接后,攻击者会向好友随机发送一条信息,但是在相同的好友中链接会重复使用。
有趣的细节
感染代码的一些部分从未运行,或是以前攻击遗留下来的
其中一部分就是在合适条件下向每名好友发送消息的定位功能,在实际攻击中其被换成了随机的emoji表情:
login.php
攻击者所使用的域中包含了一些文件,使我们猜测类似login.php在内的PHP文件应该存储其中。该文件将同时释放出一个Facebook登录脚本,以及一个硬编码电子邮箱地址:
版本
我们注意到注入到Facebook的脚本中使用了许多版本。攻击的最后,脚本只会在Facebook网页中点赞,也不会传播。同时,用来收集访问令牌的域也从脚本中移除。
登录界面
就如先前提过的,脚本也会识别你用什么浏览器。脚本的Chrome部分只在受感染用户的Chrome浏览器上有效。如果你使用其他的浏览器,病毒代码就会执行其他指令。
有趣的是,攻击者用的脚本可以支持大部分操作系统;我们并没有收集到任何针对Linux系统的样本。
我们收集到的所有样本均为恶意广告程序,在受感染用户登录最后的登录界面,他们讲被重定向到数个包含邮件或广告的跟踪域。这也说明了攻击者想要通过点击量或分发恶意邮件或广告进行谋利。
Safari
MD5 (AdobeFlashPlayerInstaller.dmg) = d8bf71b7b524077d2469d9a2524d6d79
MD5 (FlashPlayer.dmg) = cfc58f532b16395e873840b03f173733
MD5 (MPlay.dmg) = 05163f148a01eb28f252de9ce1bd6978
Theseare all fake Adobe Flash updates, but the victim ends up at different websites every time, it seems that they are rotating a set of domains for this.
这些都是虚假的Adobe Flash更新,但受感染用户每次都会关闭不同的网站。因此,攻击者似乎轮流使用了一组域名来解决这个问题。
Mozilla Firefox
MD5 (VideoPlayerSetup_2368681540.exe) = 93df484b00f1a81aeb9ccfdcf2dce481
MD5 (VideoPlayerSetup_3106177604.exe) = de4f41ede202f85c370476b731fb36eb
我的设备受到感染了,我该怎么做?
Google Chrome的安全小组已经禁用了所有的恶意拓展工具,但是当攻击者盗取了你的Facebook个人资料,他们同时也盗取了你Facebook账号的访问令牌。虽然这个令牌可能有时效,但是这个令牌所给予的权限是很大的,因为这个令牌主要是用于“Facebook for Android”-app。有了访问令牌,攻击者可以再次获取你的个人资料,不论你是否更改了密码、注销Facebook账户或是关闭了Facebook上的的平台设置:
我们目前正在与Facebook就这个问题进行探讨。但目前看来,受害者似乎并没有一个简单的方法废除被攻击者偷走的访问令牌。现在只能祈祷攻击者不要在令牌过期之前做任何事情。
我们强烈推荐你应该更新一下你的反病毒软件,因为这个恶意的域和脚本是已经模块化了。
总结
攻击活动主要依赖现实的社交互动,动态用户内容和合法域名作为中间步骤。感染的核心传播机制是安装Chrome的拓展工具。当你允许扩展工具控制浏览器活动时请格外注意。同时,也要弄清楚目前你的浏览器上运行了哪些扩展程序。如果你使用的是Chrome浏览器,可以在URL中输入chrome://extensions/,以获取正在运行的扩展程序列表。
本文由看雪翻译小组 南极小虾 编译,来源detectifylabs@Frans Rosén and David Jacoby 转载请注明来自看雪社区