Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

针对TrickBot银行木马新模块pwgrab的深入分析

0
0

针对TrickBot银行木马新模块pwgrab的深入分析
从时间上来讲, TrickBot 恶意软件家族已经存在许多年了,其恶意目的主要集中在窃取受害者的网银信息上面。在最近由 FortiGuard Labs 捕获的众多恶意软件样本中,我们发现了一个新的 TrickBot 变种,它携带有一个新的模块 ――pwgrab ,试图从多款浏览器及应用程序中窃取凭证、自动填充数据和历史记录等。我对这个 pwgrab 模块进行了深入的分析,并将在本文中解释它如何在受害者的系统上工作。 通过打开excel文件下载TrickBot

新的 TrickBot 变种通过内嵌恶意宏 VBS 代码的 Excel 文件(最初的文件名为 “Sep_report.xls” )进行传播,代码会在受害者在 Microsoft Excel 中打开该文件时执行。我们是在 2018 年 10 月 19 日捕获到这个样本的,图 1 展示的是在 Microsoft Excel 中打开的 “Sep_report.xls” ,它要求受害者通过单击 “ 启用内容( Enable Content ) ” 按钮来启用宏。


针对TrickBot银行木马新模块pwgrab的深入分析
图 1. 在 Microsoft Excel 中打开的 Sep_report.xls

想要查看 VBA 代码并不容易,因为它受到密码保护。为了分析代码,我手动修改了受保护的 flag ,以便能够绕过密码保护。

VBA 代码以 “Workbook_Open” 函数开始,该函数会在打开 Excel 文件时自动调用。然后,它将从文字处理控件(经过编码处理的 Powershell 代码)读取数据。在图 2 中,你可以看到解码后的 Powershell 代码的一部分。


针对TrickBot银行木马新模块pwgrab的深入分析
图 2. 解码的 Powershell 代码

最后,执行 Powershell 代码,从 “hxxp://excel-office.com/secure.excel” 下载文件,并将其以文件名 “pointer.exe” 保存到本地临时文件夹中,然后运行它。在这里,你可能已经猜到,这个文件 “pointer.exe” 实际上就是 TrickBot 。

Task Schduler启动TrickBot加载pwgrab32 当 “pointer.exe” 首次运行时,它会创建 “ % AppData % VsCard” 文件夹作为其主文件夹,然后将 “pointer.exe” 复制到其中,并将其重命名为 “pointes.exe” 。在我们捕获的样本中,它还更改了其模块文件夹,新的文件夹是 “%AppData%VsCardData” ,而不是之前的 “%AppData%[ 随机文件夹名称 ]Modules” 。下面的图 3 展示的就是新文件夹的屏幕截图。
针对TrickBot银行木马新模块pwgrab的深入分析
图 3. 新模块文件夹 “Data” 的屏幕截图

与之前的版本一样,它将自身安装到系统 “Task Scheduler” 中,这样它就可以通过 “Task Scheduler” 来实现自动运行。

在 “pointes.exe” 运行一段时间之后,它会将带有字符串“ pwgrab32 ”的命令 “5” 请求发送到 C & C 服务器,用于下载 32 位的新模块(即 “pwgrab32” ,或字符串“ pwgrab64 ”,用于下载 64 位的新模块)。这就像下载其他模块文件一样,例如 “systeminfo32” 和 “injectdll32” 。

想要了解更多有关于命令 “5” 的数据包格式和用途,你可以参考我 过去发布 的 文章 。对于旧版本而言,通过命令 “5” 下载的所有文件都是采用 AES 算法加密的,而最近的版本在 AES 加密数据的基础上增加了一个 XOR 加密。因此,为了获得原始的 pwgrab32 模块,我们必须进行双层解密。 pwgrab32 模块是在 2018 年 10 月 16 日生成的,基于 Borland Delphi 3.0 开发。图 4 展示的是在 PE 工具中分析的 pwgrab32 模块。
针对TrickBot银行木马新模块pwgrab的深入分析

图 4. 在 CFF Explorer 中分析的解密后的 pwgrab32

通过对 “pointes.exe” 的分析,我发现它使用了一些反分析技术,使得第三方对它得分析变得更加困难。比如,它加密了所有的字符串信息,用于防止静态分析以及在运行期间动态加载 API 。

其实从 “pwgrab32” 这个文件命名,我们就大概可以猜出它会从受害者的系统中窃取密码信息。接下来,就让我们来继续看看它将如何做到这一点。

在下载并解密 “pwgrab32” 之后, “pointes.exe” 将继续加载 “pwgrab32” 。就像加载其他模块一样,它会通过调用 API“CreateProcessAsUserW” 来创建一个挂起的 “svchost.exe” 进程。然后,它通过调用 API“WriteProcessMemory” ,将 “pointes.exe” 内存中的一段代码注入到此 svchost.exe 进程内存中。通过调用 API“ZwQueryInformationProcess” , “pointes.exe” 可以获得 “svchost.exe” 的 ProcessBasicInformation ,从中可以在其 PE 结构中找到 “svchost.exe” 的 OEP ( 常见程序 入口点 )。此外,它还会通过修改 OEP 中的代码来执行复制的代码段。然后,它将调用 “ResumeThread” 来恢复 “svchost.exe” 的运行。图 5 展示的是查找 “svchost.exe” 的 OEP 的代码段。


针对TrickBot银行木马新模块pwgrab的深入分析
图 5. 查找 svchost.exe OEP 接下来, API“WriteProcessMemory” 、

Viewing all articles
Browse latest Browse all 12749