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)。此恶意软件没有加密,也没有被混淆,显示的文件名都是很直白的。
图3 BrowserHax显示的二进制资源
dropper和潜在payload的执行流程
创建并填充文件夹后,恶意软件运行主二进制文件“virus.exe”(图4),等待五秒钟后执行删除恶意软件所有痕迹的批处理脚本。
图4 BrowserHax的流程
接下来恶意软件弹出带有错误消息的对话框(图5)。在IDA中可以很明显看出,此对话框的目标只是欺骗用户,旨在让用户认为执行中存在错误,单实际上这是程序的正确流程。(图4)。
图5.提示错误
以隐私为目标——payload分析
该恶意软件目前在VT上的检测率为零(图6)。
图6 .Virus.exe的VT分数
Chrome是当今世界上最常见的浏览器。它不仅可以存储您的所有密码,还可以存储您的信用卡数据。此外,没有管理员权限的普通用户也可以访问Chrome凭据文件。这意味着恶意软件不需要任何提权机制即可访问Chrome凭据。
此恶意软件遵循流程如下:它首先收集计算机的相关信息;然后检查cURL库是否已成功加载;再获取当前会话的用户名,然后阅读Chrome文件并获取密码。
Google Chrome的凭据存储在名为Login Data(无扩展名)的SQLite DB文件中,该文件通常位于以下文件夹中:
C:\Users\\AppData\Local\Google\Chrome\User Data\Default\
当Google Chrome运行时,它会锁定DB文件,以便在此过程的运行时间内无人可访问。为了解决这个问题,恶意软件会首先杀死所有的chrome进程(图7)。
图7.关闭Chrome进程
在杀死Chrome进程之后,打开DB文件并执行SQL查询来读取其中保存的密钥。通过下图所示的SQLite查询能看出(图8),恶意软件目标是logins表,其中包含origin_url、用户名和密码等字段;之后它将所有数据保存到堆中分配的结构中。
图8.从Chrome DB获取URL、用户名和密码
获得后,它只需通过cURL(图9)将数据发送到自己的Google Form。
这里解释下什么是cURL以及攻击者为什么要使用它。
图9运行中的cURL命令
cURL代表客户端URL。cURL是一个非常简单和强大的命令行工具,使用URL语法进行数据传输。它支持许多协议,包括HTTP和HTTPS。cURL也是交叉平台,使用起来非常简单。cURL的作者还提供了一个C语言库,其中包含将其集成到任何应用程序所需的功能,而不需要在被攻击的一方上获得额外的资源。此外,使用cURL的恶意软件类型的数量非常少,因此对攻击者来说,cURL就成了一个很好的工具,还能避免触发AV检测。
图10. curl_easy_setopt方法中的cURL对象初始化和函数指针定义
Google Form一探究竟
Google Forms是一个著名的基于web的免费应用程序,经常被公司和学生用作调查工具,收集数据并将其存储在电子表格中。它还提供用户友好的Web界面。除了Google Forms提供的网络界面外,还可以通过cURL提交表单。
此样本包含一个硬编码的Google Forms URL(图11)。表单简单但清晰(图10):它只包含一个数据字段。此数据字段设置为段落,可以包含大量字符——默认情况下最多为1,000,000,000,000,000,000,这足以支持受害者的所有Chrome数据。
图11.硬编码的Google Forms 的URL
图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。
图13在调用之前设置函数指针并在堆栈中设置参数
图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)。
图15.通过Yara规则捕获的样本
图16.类似样本的关系
事实证明,图16中的样本使用完全相同的Google Forms,dropper看起来与我们在本文中分析的非常相似。dropper的资源包括所有相同的库和virus.exe二进制文件。它还向我们提供了它如何诱使用户执行恶意软件的信息(图17)——它假装是Microsoft的Minecraft安装程序或CAB文件提取程序,还包含了文件属性中的Microsoft签名,但这实际上不是一个有效的签名,数字签名验证证明了这一点。
图17.dropper信息
面对新威胁,做好防御准备
此威胁另一特性是非持久性,除了盗窃Chrome凭证之外,不会损坏受害者的计算机。而使用cURL库和Google Forms也使得它很难被捕获。滥用合法工具再一次验证了在抵御AV产品上的有效性。
对端点上进行防御是防止此类攻击的最佳方法。例如CyberArk Endpoint Privilege Manager等解决方案可以保护驻留在内存,注册表或文件中的端点凭据存储。
IoC
·恶意活动
taskkill /f /im chrome.exe
·SHA-256
[Dropper]
[恶意软件和主要payload]
领取专属 10元无门槛券
私享最新 技术干货