其他分享
首页 > 其他分享> > 瞄准Chrome凭据的新威胁已现身

瞄准Chrome凭据的新威胁已现身

作者:互联网

 Change 嘶吼专业版

图片

CyberArk最近捕获了一个有趣的恶意软件样本。它与常规的盗窃凭证恶意软件,如Pony或Loki的不同之处在于,它只针对最常见的浏览器——谷歌Chrome。

该恶意样本没有被混淆,但却能够逃避大多数反病毒软件(AV)的检测,这是由于它所使用的一种不常见的逃避技术。

图片隐藏在资源里——Dropper分析

图片

图1.Dropper的VirusTotal评分

在我们开始之前,让我们先讨论一下负责程序植入和执行payload来收集凭据的dropper。当我们发现这个恶意软件时,VirusTotal (VT)的得分只有11/71(图1),现在它的得分是33/71,仍然较低。

事实上,这个dropper真的很基础。它首先在当前路径中创建一个\ temp文件夹作为dropper的父文件夹,在此文件夹中再创建一个名为“death.bat”的批处理脚本,目的是后续将\ temp删除。之后dropper将其他六个文件放入此文件夹中(图2),这六个文件分别是五个DLL文件和一个二进制文件“virus.exe”。从文件名中我们可以看出,此二进制文件似乎需要使用cURL库(和libcurl)。而使用cURL的恶意软件类型并不多,这点是值得注意的。

图片

图2.文件植入

文件夹的总大小约为6MB,并且没有发生下载行为,这与dropper的文件大小是非常相似的。实际上,文件夹中的所有文件都保存在文件资源中(图3)。此恶意软件没有加密,也没有被混淆,显示的文件名都是很直白的。

image.png图3 BrowserHax显示的二进制资源

image.pngdropper和潜在payload的执行流程

创建并填充文件夹后,恶意软件运行主二进制文件“virus.exe”(图4),等待五秒钟后执行删除恶意软件所有痕迹的批处理脚本。

image.png图4 BrowserHax的流程

接下来恶意软件弹出带有错误消息的对话框(图5)。在IDA中可以很明显看出,此对话框的目标只是欺骗用户,旨在让用户认为执行中存在错误,单实际上这是程序的正确流程。(图4)。image.png

图5.提示错误

image.png以隐私为目标——payload分析

该恶意软件目前在VT上的检测率为零(图6)。image.png

图6 .Virus.exe的VT分数

Chrome是当今世界上最常见的浏览器。它不仅可以存储您的所有密码,还可以存储您的信用卡数据。此外,没有管理员权限的普通用户也可以访问Chrome凭据文件。这意味着恶意软件不需要任何提权机制即可访问Chrome凭据。

此恶意软件遵循流程如下:它首先收集计算机的相关信息;然后检查cURL库是否已成功加载;再获取当前会话的用户名,然后阅读Chrome文件并获取密码。

Google Chrome的凭据存储在名为Login Data(无扩展名)的SQLite DB文件中,该文件通常位于以下文件夹中:

C:\Users\<USERNAME>\AppData\Local\Google\Chrome\User Data\Default\

当Google Chrome运行时,它会锁定DB文件,以便在此过程的运行时间内无人可访问。为了解决这个问题,恶意软件会首先杀死所有的chrome进程(图7)。

image.png

图7.关闭Chrome进程

在杀死Chrome进程之后,打开DB文件并执行SQL查询来读取其中保存的密钥。通过下图所示的SQLite查询能看出(图8),恶意软件目标是logins表,其中包含origin_url、用户名和密码等字段;之后它将所有数据保存到堆中分配的结构中。

image.png

图8.从Chrome DB获取URL、用户名和密码

获得后,它只需通过cURL(图9)将数据发送到自己的Google Form。

这里解释下什么是cURL以及***者为什么要使用它。image.png

图9运行中的cURL命令

cURL代表客户端URL。cURL是一个非常简单和强大的命令行工具,使用URL语法进行数据传输。它支持许多协议,包括HTTP和HTTPS。cURL也是交叉平台,使用起来非常简单。cURL的作者还提供了一个C语言库,其中包含将其集成到任何应用程序所需的功能,而不需要在被***的一方上获得额外的资源。此外,使用cURL的恶意软件类型的数量非常少,因此对***者来说,cURL就成了一个很好的工具,还能避免触发AV检测。image.png

图10. curl_easy_setopt方法中的cURL对象初始化和函数指针定义

image.pngGoogle Form一探究竟

Google Forms是一个著名的基于web的免费应用程序,经常被公司和学生用作调查工具,收集数据并将其存储在电子表格中。它还提供用户友好的Web界面。除了Google Forms提供的网络界面外,还可以通过cURL提交表单。

此样本包含一个硬编码的Google Forms URL(图11)。表单简单但清晰(图10):它只包含一个数据字段。此数据字段设置为段落,可以包含大量字符——默认情况下最多为1,000,000,000,000,000,000,这足以支持受害者的所有Chrome数据。

image.png

图11.硬编码的Google Forms 的URL

image.png

图12.***者的Google表单

因此,Google Form(图12)充当了服务器角色,用于收集和存储数据。Google Form中的数据可以通过post请求提交。

自发现Google Form的这种恶意使用方式后,我们已经通知了Google。这种对合法在线服务的滥用已经不是第一次出现了,之前也出现过使用pastebin甚至Twitter作为其基础架构的恶意软件。 

让我们看看使用cURL的数据发送流程。在通过curl_global_init和curl_easy_init初始化cURL对象之后,需要先配置对象,然后才能使用curl_easy_setopt执行一系列操作。为了加强分析,它在curl_easy_setopt函数(图14)上使用一个函数指针(图13),并在整个函数中使用,以便正确配置对象。此函数的一个参数是cURL对象的选项——CURLOPT——***者可对其设置。可以在此处找到带有相应十进制代码的完整选项列表。

例如在本例中,设置的第一个选项可以通过堆栈0x2712 = 10015中的代码来识别,该代码对应于CURLOPT_URL。此选项允许您设置发送请求的URL。显然,在这种情况下,它被设置为Google Form的URL。image.png

图13在调用之前设置函数指针并在堆栈中设置参数

image.png

图14设置cURL对象的其他选项并执行请求

标识为0x271F = 10015,下一个选项集为CURLOPT_POSTFIELDS,它包含将通过POST请求发送到之前定义的URL的数据。如前所示,包含的是从Google Chrome中提取的所有数据。

然后将CURLOPT_WRITEFUNCTION设置为一个简单的乘法函数——精确计算size * nmemb,其中size始终设置为1,nmemb是数据大小——这是库所要求的。

最后将CURLOPT_SSL_VERIFYPEER设置为0,这意味着它不会验证对等证书的真实性,这很可能是为了防止在奇怪的数字签名配置情况下请求被阻止。再之后执行对curl_easy_perform的调用,调用将请求发送到预期的URL。这就是完整的传递过程。

那这个恶意软件是已知的还是全新的呢?

您可能已经猜到,有很多针对Chrome凭据的恶意软件。因此,我们不能仅根据其目标来识别恶意软件家族。

我们的恶意软件,即名为“virus”的payload,不会更改任何注册表,也不包含奇怪的字符串。恶意软件运行速度非常快,完成任务只需不到五秒钟(图4)。它不会在磁盘上创建任何文件,而是会在安全的Google Forms上发送所有数据。指向其家族的唯一指示是它的行为:加载libcurl、读取SQLite数据库、窃取Chrome凭证,并使用cURL将此数据发送回Google Forms。这些行为中没有哪个能明确对应上已知的恶意软件家族。

让我们看看Yara规则能否提供更多有价值的数据。基于目前的分析,突出了以下五个指标:

1. 使用名为libcurl的cURL库

2. 杀死Chrome进程:taskkill / f / im chrome.exe

3. 使用Google Forms

4. 使用SQLite

5. 读取存储在Login Data中的Chrome凭据

rule browserhax_rule

{

    meta:

        author = "David Cohen"

        company = "CyberArk"

        date = "28-07-2019"

    strings:

        $lib_curl = "libcurl" nocase

        $taskkill = "taskkill /f /im chrome.exe" nocase

        $doc_form = "https://docs.google.com/forms/" nocase

        $sqllite = "sqlite" nocase

        $cred_file = "Login Data" nocase

    condition:

        all of ($*)

}

使用Yara规则查找其他样本的方法没有提供它所属家族的信息。相反,我们发现了其他非常相似的样本,也是未检测到的样本(图15)。

image.png

图15.通过Yara规则捕获的样本

image.png

图16.类似样本的关系

事实证明,图16中的样本使用完全相同的Google Forms,dropper看起来与我们在本文中分析的非常相似。dropper的资源包括所有相同的库和virus.exe二进制文件。它还向我们提供了它如何诱使用户执行恶意软件的信息(图17)——它假装是Microsoft的Minecraft安装程序或CAB文件提取程序,还包含了文件属性中的Microsoft签名,但这实际上不是一个有效的签名,数字签名验证证明了这一点。

image.png

图17.dropper信息

image.png面对新威胁,做好防御准备

此威胁另一特性是非持久性,除了盗窃Chrome凭证之外,不会损坏受害者的计算机。而使用cURL库和Google Forms也使得它很难被捕获。滥用合法工具再一次验证了在抵御AV产品上的有效性。

对端点上进行防御是防止此类***的最佳方法。例如CyberArk Endpoint Privilege Manager等解决方案可以保护驻留在内存,注册表或文件中的端点凭据存储。

image.pngIoC

· 恶意活动

taskkill /f /im chrome.exe

· SHA-256

2774a1a4155a9bb874eebad7f24b94571285d9ebf064cb64f64b3aa02f2494d5 – browserhax.exe

[Dropper]

939511e83f40e3ba73c019b6722a5a02a220e4f5947409115a69fa07e71ce9ba – virus.exe

[恶意软件和主要payload]

image.png

标签:文件,Google,Chrome,恶意软件,凭据,URL,现身,cURL
来源: https://blog.51cto.com/u_15127538/2701923