Trickbot 的恶意模块介绍
2021-10-28 12:27:36 Author: www.4hou.com(查看原文) 阅读量:26 收藏

sl-abstract-block-module-structure-1200x600.jpg

Trickbot(又名 TrickLoader 或 Trickster)是基于Dyre 银行木马开发的,该木马在 2014 年至 2016 年期间活跃,并执行浏览器中间人攻击以窃取银行凭证。 Trickbot 于 2016 年 10 月首次被发现。 就像 Dyre 一样,其主要功能最初是窃取网上银行数据。然而,随着时间的推移,它发生了变化。目前,Trickbot 更加专注于通过本地网络进行渗透和传播,为其他恶意软件(例如 Ryuk 勒索软件)提供对受感染系统的访问权限。

多年来,Trickbot 已增加了数十个辅助模块,这些模块窃取凭据和敏感信息,使用窃取的凭据和漏洞将其传播到本地网络,提供远程访问、代理网络流量、执行暴力攻击和下载其他恶意软件。在本文中,我们会简要介绍 Trickbot 模块。尽管某些模块的 PE 标头中显示的日期已经很旧,但这些模块仍然可供下载,并且可以被攻击者使用。

技术分析

如何获取 Trickbot 模块进行分析

可以使用简单的 GET 请求(如 https://< CC_IP >:< CC_PORT >/< gtag >/< bot_ID >/5/< module_name >/)从 Trickbot 的 C2 之一下载模块。请记住,模块名称区分大小写,尽管我们在本文中描述了 32 位模块,但在大多数情况下,可以通过将模块名称中的“32”替换为“64”来下载 64 位版本。在大多数情况下,成功下载不需要 < gtag > 和 < bot_ID > 的有效值。以下是下载 pwgrab64 模块的 URL 示例:

https[:]//87.97.178[.]92:447/asdasdasd/asdasdasd_asdasdasd.asdasdasd/5/pwgrab64/

下载的模块是加密的,可以用下面的 Python 脚本解密。

1.png

带有模块解密例程的 Python 脚本

下表包含模块列表,并简化了模块描述搜索。请记住,这些模块是在 5 月底收到的,它们的功能和名称在发布时可能会有所不同。

2.1.png

2.2.png

adll32

新的 Trickbot 模块 ADLL 使用 ntdsutil 和 reg 工具转储 Active Directory 数据库文件(ntds.dit 和 ntds.jfm)和注册表配置单元。例如,它利用“从媒体安装 (IFM)”ntdsutil 命令将 Active Directory 数据库和各种注册表配置单元转储到 %Temp% 文件夹。然后这些文件被压缩并返回给攻击者。

3.png

使用ntdsutil工具收集信息的一部分adl32功能

4.png

adll32函数部分使用reg工具收集信息

该模块使用带有以下命令行参数的 ntdsutil 和 reg 工具:

◼ntdsutil “ac in ntds” “ifm” “cr fu %TEMP%\

◼reg save HKLM\SAM %TEMP%\

◼reg save HKLM\SECURITY %TEMP%\

◼reg save HKLM\SYSTEM %TEMP%\

这些命令将转储 Active Directory 数据库以及 SAM、SECURITY 和 SYSTEM 配置单元。攻击者可以解密这些文件并转储用户名、密码哈希、计算机名称、组和其他数据。然后可以使用这些数据在网络上进一步传播。

aexecDLL32

这个模块是一个简单的下载器。它通过硬编码 URL 下载有效载荷(例如,另一个 Trickbot 模块或第三方恶意软件)并执行它。

5.png

aexecDll32下载例程的一部分

anubisDll32

这是一个浏览器中间人模块,它包含 IcedID 主模块的完整实现。它可以拦截受害设备上的网络流量。该模块还包含嵌入式二进制 Anubis VNC(也称为 HDESK Bot),这是一种基于 VNC(虚拟网络计算)协议的自定义 RAT,IcedID 使用该协议进行远程控制。

bcClientDll32

这是一个具有 SOCKS5 协议自定义实现的反向代理模块,它用于绕过通过受感染主机的流量。

bvncDLL32

这个模块是一个隐藏VNC的实现,这是一个基于VNC(虚拟网络计算)协议的自定义远程管理工具。隐藏意味着对VNC的这种修改创建了一个对用户隐藏的额外桌面,允许攻击者以与通过RDP连接相同的方式使用被破坏的系统,而不会引起用户的注意。Web会话和保存在浏览器中的用户密码在hVNC会话中可用。攻击者可以在远程系统上自由运行web浏览器,在有活动用户会话时访问任何web服务。

cookieDLL32

该模块从 Web 浏览器窃取 cookie 数据,它针对 Chrome、Firefox、Internet Explorer 和 Microsoft Edge 的存储数据库。

domainDll32

该模块也称为 DomainGrabber,它通过访问 SYSVOL 文件夹收集有关受感染系统的域控制器信息。该模块的第一个修改是查询 groups.xml、services.xml、scheduledtasks.xml、datasources.xml、printers.xml 和 drive.xml 文件。该模块的当前修改仅查询组策略(groups.xml)。

6.png

在 DomainGrabber 模块中收集组策略的例程

tdpwgrab32

这个模块是一个密码窃取模块,它可以窃取存储在注册表、不同应用程序的数据库、配置和“珍贵文件”中的凭据,即私钥、SSL 证书和加密钱包数据文件。它还能够从网络浏览器中获取自动填充信息。该模块能够从以下应用程序窃取数据:Git、TeamViewer、OpenSSH、OpenVPN、KeePass、Outlook、FileZilla、Internet Explorer、Mozilla Firefox、Google Chrome、Microsoft Edge、RDP、WinSCP、VNC、UltraVNC、RealVNC、TigerVNC、PuTTY、AnyConnect。请注意,较新的模块版本也可能针对其他应用程序。

fscanDll32

这是一个基于开源软件项目 cURL 的 FTP(文件传输协议)和 SFTP(SSH 文件传输协议)文件扫描器。该模块接收用于匹配文件和FTP/SSH资源的规则列表,枚举目标资源上的文件并向C2报告。

7.png

SFTP 读取例程的一部分

importDll32

该模块从 Web 浏览器窃取数据,包括浏览器配置、cookie、历史记录、标题、访问计数、HTML5 本地存储。目标浏览器包括 Internet Explorer、Mozilla Firefox、Google Chrome 和 Microsoft Edge,该模块还收集有关已安装浏览器插件和组件的信息。

8.png

浏览器信息抓取例程的片段

injectDll32

该模块用于拦截浏览器中与银行网站相关的活动,它使用网络注入来窃取财务信息。支持两种类型的攻击:“静态”和“动态”。静态攻击将用户请求重定向到恶意网络钓鱼页面,而动态攻击通过恶意代理服务器传递所有流量,从而可以通过在返回的页面中注入额外的恶意脚本,从输入表单中获取信息并修改银行网站响应。

9.png

“静态”和“动态”配置示例

为了拦截流量,旧版本的模块(2019 年之前活跃)用于将自身注入众多浏览器进程并挂钩负责 SSL 密码例程和网站证书验证的网络 API 函数:HttpSendRequest、InternetReadFile for Internet Explorer、PR_Read、 PR_Write 用于 Mozilla Firefox,SSL_read,SSL_write 用于 Google Chrome。

但是,在 2019 年初发布了更新的模块。开发人员弃用了对不同浏览器中的多个函数的拦截,而专注于连接几个基本的 Microsoft Windows 网络函数:ws2_32::connect() 函数和 WSA 扩展函数 mswsock::ConnectEx()。为了对 SSL 连接进行攻击,该模块会生成一个自签名证书,并将其插入到证书存储中。不同的内部浏览器 API 用于在不同的浏览器中安装自签名证书。函数 crypt32::CertGetCertificateChain() 和 crypt32::CertVerifyCertificateChainPolicy() 也被挂钩以绕过证书验证。

EMBEDDED MODULE PE timestamp:2020-09-17 InternalName:

该子模块将自身注入浏览器进程(Internet Explorer、Mozilla Firefox、Google Chrome、Microsoft Edge)并拦截网络 API,以便通过基于修改后的 SOCKS 协议的本地代理重定向浏览器流量。它还拦截负责证书链验证的 API,以欺骗检查结果。

mailsearcher32

该模块枚举所有磁盘和文件夹,并在文件中搜索电子邮件模式。它忽略具有选定扩展名的文件:.avi、.mov、.mkv、.mpeg、.mpeg4、.mp4、.mp3、.wav'、.ogg、.jpeg、.jpg、.png、.bmp、.gif、 .tiff、.ico。此外,它会解压扩展名为 .xlsx、.docx 和 .zip 的文件,并在提取的文件中执行相同的电子邮件模式搜索。每次磁盘扫描结束时,模块都会将找到的地址列表发送回 C2 服务器。

masrvdll32

该模块是基于 Masscan 软件项目源代码的网络扫描仪,该模块向 C2 请求 IP 地址范围,扫描此范围内的所有 IP 以查找打开的端口,并将找到的地址和端口列表发送回 C2 服务器。

mlcDLL32

该模块实现了 Gophe spambot 的主要功能。 Gophe spambot 被用来传播 Dyre 恶意软件。作为 Dyre 的迭代产品,Trickbot 也继承了 Gophe 的源代码也就不足为奇了。它可以从 Outlook 抓取电子邮件并使用 MAPI 通过 Outlook 发送垃圾邮件。它还通过从 Outlook 已发送邮件文件夹中删除电子邮件来消除垃圾邮件的痕迹。该模块也由 Trickbot 作为独立的可执行文件传播,称为 TrickBooster。

networkDll32

该模块从本地系统获取有关网络的信息,它使用以下 ADSI(Active Directory 服务接口)属性方法来收集信息:

◼ComputerName;

◼SiteName;

◼DomainShortName;

◼DomainDNSName;

◼ForestDNSName;

◼DomainController;

它检索本地计算机林中所有目录树的 DNS 名称,它还获取完整的进程列表和系统信息快照(OS Architecture/ProductType/Version/Build/InstalationDate/LastBootUpTime/SerialNumber/User/Organization/TotalPhysicalMemory)。

该模块执行并收集所选命令的结果:

◼“ipconfig /all”

◼“net config workstation”

◼“net view /all”

◼“net view /all /domain”

◼“nltest /domain_trusts”

◼“nltest /domain_trusts /all_trusts”

NewBCtestnDll32

该模块是一个反向代理模块,具有 SOCKS5 协议的自定义实现。它用于绕过受感染主机的流量。该模块可以使用谷歌的 STUN 服务器通过 STUN 协议确定外网 IP 地址。它还可以通过从代理 C2 接收命令行来创建新进程。它无法下载二进制文件以供执行,但通过在命令行中使用 Base64 编码脚本启动 powershell.exe 来创建新进程的能力将此模块转换为后门。

OutlookDLL32

这个模块是用 Delphi 编写的,这并不常见。该模块尝试从存储在系统注册表中的 Outlook 配置文件中检索凭据。

owaDLL32

该模块从 C2 接收域、登录名和密码的列表,并尝试在选定域上查找 OWA 服务。为此,它通过向列表中的域添加子域(‘webmail.’、‘mail.’、‘outlook.’)来创建一个 URL,并将 URL 路径设置为‘/owa’。之后,它会向精心制作的 URL 发出 POST 请求,并检查特定于 OWA 服务的字符串、标签或标头的响应。然后,该模块向 C2 报告它找到的 OWA URL。它还可以使用从 C2 收到的登录名和密码对 OWA URL 执行暴力攻击。

10.png

owaDll32 模块中的 C2 报告例程的一部分

permaDll32

该模块包含加密的嵌入式模块 RwDrv.sys,它安装 RwDrv.sys 驱动程序以获得对硬件的低级别访问。它识别硬件平台,检查 UEFI/BIOS 写入保护,并反馈给C2。它不能将任何植入 UEFI 或任何 shellcode 写入物理内存。但是,可以使用此功能轻松更新模块的代码。

EMBEDDED SYS MODULE timestamp:2013-03-25 InternalName:RwDrv.sys

这是来自 RWEverything 实用程序中的一个驱动程序,这个实用程序可以访问计算机硬件。

psfin32

使用Active Directory服务接口(ADSI),该模块对组织单位名称、站点名称、组帐户名称、个人帐户名称、计算机主机名称进行轻量级目录访问协议(LDAP)和GlobalCatalog (GC)查询,并选择掩码‘*POS*’, ‘*REG*’, ‘*CASH*’, ‘*LANE*’, ‘*STORE*’, ‘*RETAIL*’, ‘*BOH*’, ‘*ALOHA*’, ‘*MICROS*’, ‘*TERM*’。

11.png

psfin32 模块中的 C2 报告例程的一部分

12.png

使用 ADSI 的 GlobalCatalog (GC) 查询

rdpscanDll32

该模块从 C2 接收域、IP、登录名和密码列表,对目标列表执行 RDP 连接检查,并向 C2 报告目标的在线状态。它可以使用收到的登录名和密码对目标系统执行暴力攻击。它还具有通过改变 IP、域名和登录名来暴力破解凭证的能力,例如,通过替换、交换或删除字母、数字、点、从小写到大写或反之亦然、执行字符串反转等。

shadDll32

这是 anubisDll32 模块的第一个实现,它不包括 Anubis VNC 嵌入式二进制文件。

shareDll32

该模块用于在网络上传播 Trickbot,它从 URL http[:]//172[.]245.6.107/images/control.png 下载 Trickbot 并将其保存为 tempodile21.rec。然后它枚举网络资源并尝试将下载的 Trickbot 作为 nats21.exe 复制到选定的共享 C$ 或 ADMIN$。然后,它在以下路径中的受感染系统上创建并启动远程服务:

◼%SystemDrive%\nats21.exe

◼%SystemRoot%\system32\nats21.exe

以下服务名称用于隐藏 nats21.exe:

◼SystemServiceHnet;

◼HnetSystemService;

◼TechnoHnetService;

◼AdvancedHnexTechnic;

◼ServiceTechnoSysHnex;

◼HnexDesktop;

◼sharesinDll32

该模块具有与 shareDll32 相同的功能。但是,该模块释放的 Trickbot 二进制文件名为 nicossc.exe,它用来获取 Trickbot 的 URL 是 http[:]//185[.]142.99.26/image/sdocuprint.pdf。服务名称也不同:

◼CseServiceControl

◼ControlServiceCse

◼BoxCseService

◼TechCseService

◼AdvanceCseService

◼ServiceCseControl

◼CseServiceTech

◼TechCseServiceControl

sqlscanDll32

该模块尝试实现 SQLi 漏洞扫描器,它接收目标域列表,并尝试通过查询 Entrust Web 界面 https[:]//ctsearch.entrust[.]com/api/v1/certificates?fields=subjectDN&domain=

squDll32

该模块收集 SQL 服务器的地址,它枚举 HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL 中的注册表值以获取 SQL 服务器实例。它还在端口 1433 和 1434 上发出广播 UDP 请求,从通常运行在这些端口上的SQL server Browser服务获取SQL server实例。收集 SQL 服务器实例后,它会删除子模块 mailCollector 并将收集的目标传递给它。

EMBEDDED EXE MODULE timestamp:2020-04-23 InternalName:

该子模块使用 ADODBI 接口与 SQL 服务器进行通信、枚举数据库并进行搜索查询以提取电子邮件地址。使用的查询模板如下:

select COUNT(*) from [%s] where [%s] like ‘%%@%%.%%’

select [%s] as MAIL from [%s] where [%s] like ‘%%@%%.%%’

squlDll32

这是squDll32的旧版本,它使用 SQLDMO.dll 来枚举可用的 SQL 服务器实例。

tabDll32

该模块通过 EternalRomance 漏洞传播 Trickbot。它通过修改 HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest 注册表项中的 UseLogonCredential 值来启用 WDigest 身份验证。此修改强制将凭据保存在 lsass.exe 内存(本地安全机构子系统服务)中。然后,tabDll32 模块在 explorer.exe 中注入嵌入式模块 screenLocker 并使用锁屏锁定工作站,迫使用户再次登录。它等待下一次用户登录并利用 Mimikatz 功能从 LSASS 内存中抓取凭据。被盗的凭据被发送回 C2。之后,tabDll32 从硬编码的 URL 下载有效载荷——通常是 Trickbot 加载器(下载器),启动多达 256 个线程,并使用 EternalRomance 漏洞在网络上快速传播下载的有效载荷。另一个嵌入式模块 ssExecutor_x86 用于在被利用的系统上为下载的有效载荷设置持久性。该模块还包含 shareDll32 模块的主要代码,并使用它在网络上传播。

模块 ssExecutor_x86 将有效载荷复制到 C:\WINDOWS\SYSTEM32\ 和 C:\WINDOWS\SYSTEM32\TASKS 文件夹中,并执行有效载荷。它枚举注册表中的用户配置文件,将有效载荷复制到 C:\Users\

tabDll32模块也以独立可执行文件的形式存在,别名为“spreader”。

systeminfo32

该模块收集系统的基本信息。它使用WQL来获取操作系统名称、架构、版本、CPU和RAM信息。它还收集本地计算机上的用户帐户名称,并通过枚举 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 和 HKLM\SYSTEM\CurrentControlSet\Services 注册表项来收集有关已安装软件和服务的信息。

vpnDLL32

该模块使用RAS (Remote Access Service) API来建立VPN (Virtual Private Network)连接,目标 VPN 服务器和连接凭据由 C2 的命令和配置文件提供。

13.png

设置 RAS(远程访问服务)条目

14.png

vpnDll32 模块建立 VPN 连接

webiDll32

该模块用于拦截浏览器中与银行网站相关的活动,它利用网络注入窃取财务信息。除了典型的静态和动态注入外,该修改还支持Zeus格式的web注入,并可以在客户端修改页面。

15.png

Trickbot 网络注入 Zeus 格式的配置文件

wormDll32

该模块利用 EternalBlue 漏洞传播 Trickbot。它使用网络管理 API 和 Active Directory 服务接口枚举计算机。它使用 EternalBlue 漏洞在 LSASS 进程内存中注入 shellcode。注入的 shellcode 从硬编码的 URL 下载 Trickbot 并执行它。

其他模块说明

16.1.png

16.2.png

Trickbot 攻击的地理分布

17.png

本文翻译自:https://securelist.com/trickbot-module-descriptions/104603/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/pLkp
如有侵权请联系:admin#unsafe.sh