【技术分享】深入分析:黑客如何利用Facebook Messenger跨平台攻击活动
作者:admin | 时间:2017-9-9 00:52:54 | 分类:黑客技术 隐藏侧边栏展开侧边栏
前言
我们经常会使用 Facebook Messenger 与朋友分享有趣的影片或资讯链接,不过最近你要提高警惕了,因为黑客可能正通过这些链接传播恶意软件。日前,卡巴斯基实验室和Detectify实验室的研究人员发现,黑客正利用 Facebook Messenger 进行跨平台攻击活动, 即以目标用户好友身份发送经过处理的视频链接。一旦点击链接,则会根据用户浏览器与操作系统将其重新定向至虚假网站,并诱导用户下载恶意扩展程序,从而自动下载恶意广告软件至用户电脑设备。目前,卡巴斯基实验室针对此威胁进行评估。来自Detectify实验室的Frans Rosé也在对此进行分析研究。因此,卡巴斯基研究员David Jacoby和Detectify的研究员Frans Rosé决定共同撰写此次事件的研究报告。
传播机制
Frans Rosé花费了相当长的时间对JavaScript进行分析,并试图弄清楚恶意软件的传播方式。从表面上看,这貌似是一个简单的工作,但实际情况并非如此。这项工作涉及多个步骤,其中就包括确定Javascript的有效载荷。此外,由于是由脚本决定何时发起网络攻击,因此要实时关注攻击者何时发起攻击。
利用Chrome传播的恶意软件不仅仅是传播恶意的网络链接,还会收集和统计受害者的信息。我们尝试将此次恶意软件传播过程进行分解,总结下来主要分为以下几个步骤:
1、受害者从朋友那里收到Facebook Messenger的链接。
2、一旦对方点入就会导引到一个Google Doc网页,其中现实的是一个朋友头像照片的虚假的视频播放器。
3、点击这个链接并使用Chrome浏览器进行观看,就会被复位向至虚假的YouTube网站,同时该网站会诱导受害者从 Google 应用商店下载恶意 Chrome 扩展程序(实际上它是一个Downloader)。
4、一旦安装了这个恶意的Chrome 扩展程序,受害者就会向其线上的朋友继续发送恶意链接。
Chrome 恶意扩展程序传播步骤值得我们深入研究——
Facebook的消息框
消息框中的信息包括用户的姓氏、“视频”(Video)一词和随机的emoji表情:
以及使用URL缩短工具创建的链接。
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文档。点击就会转到一个正在预览的PDF文件的详细信息页面。
生成的链接的共享设置,其中包含一个有趣的细节:
上图中显示“任何人都可以编辑”(Anyone can edit”),这就意味着任何拥有链接的人都可以对其进行编辑。让我们来看看这个链接是如何传播开来的——攻击对所有受害者facebook好友都发送了相同的链接。但任何一个好友改变链接访问权限,就会阻止攻击蔓延到受害者的其它朋友。
另一个有趣的细节是创建文档的用户。对大量的个案进行研究就会发现其中的规律:
上图所示是发送给四个不同受害者的链接,但其中的三个链接都使用了一个相同的IAM用户名(ID-34234),即便这三个链接使用的是不同的Google Cloud项目创建的。
在黑客发起攻击时,这些发送给受害者的pdf预览页面的URL都不在Google的黑名单之列。
重新定向
在点击Google文档链接后,用户将被重新定向,最有可能出现的是指纹识别浏览器。以下我们将重点分析Chrome浏览器。
Chrome扩展程序重新定向被重新定向至虚假的YouTube网页
使用Chrome浏览器的用户将被重新定向至虚假的YouTube网页。我们注意到在攻击时使用了几个不同的域。
被重新定向的页面还会要求您安装Chrome扩展程序。由于用户可以直接在页面上安装Chrome扩展程序,因此受害者唯一可以执行的操作就是单击“添加扩展名”。一旦受害者点击了“添加扩展名”,黑客的攻击行动就成功了。
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而编写的。
该脚本将执行以下操作:
查看运行的域中是否包含Facebook.com。
提取CSRF凭证以访问Facebook,将其名为“fb_dtsg”。
查看是否已经获取访问凭证(获得访问权限是为了完成Facebook API的身份验证)。
将访问令牌(access token)和用户ID发送给攻击者的外部站点。
确保平台功能已启用(禁用kill-switch):
创建一个访问令牌。目前Facebook已经弃用了FQL API,Facebook此前一直使用FQL API: