Gh0st RAT是由中国C. Rufus安全团队开发的远程控制恶意软件。由于源代码是公开的,恶意软件开发人员正在参考它开发各种变种,并且直到最近它才不断被用于攻击。尽管源代码是公开的,但 Gh0st RAT 主要由中国攻击者使用。在之前的博客中,我们还披露了一个针对数据库服务器(MS-SQL、MySQL 服务器)分发 Gh0stCringe RAT(Gh0st RAT 的变种)的案例。
各种 Gh0st RAT 变体也经常用于针对 MS-SQL 服务器的攻击。AhnLab 安全紧急响应中心 (ASEC) 监控针对管理不当的 MS-SQL 服务器的攻击,并通过 ASEC 报告披露季度统计数据。统计数据将恶意软件分为后门、木马、HackTool 和 CoinMiner 等主要类别,并处理每个类别中攻击中使用的特定恶意软件。根据2023年第二季度的统计,占29.0%的Gh0st RAT变种被确认为仅次于Remcos RAT的第二高攻击案例。
图 1. MS-SQL 服务器攻击中使用的后门恶意软件统计数据(2023 年第 2 季度)
ASEC 最近证实,Gh0st RAT 正在分发,该 RAT 安装了一个针对管理不当的 MS-SQL 服务器的隐藏 rootkit。Hidden是一个在GitHub上发布的开源rootkit,支持文件和注册表隐藏功能以及进程保护功能,包括它本身。攻击者可能会滥用这些功能来向用户隐藏恶意软件感染或阻止他们删除恶意软件。
在本博客中,安装隐藏 rootkit 的 Gh0st RAT 变体被归类为 HiddenGh0st。HiddenGh0st 至少在 2022 年左右开始被识别,直到最近才开始传播。在攻击者添加的功能中,推测中国用户是攻击的主要目标,因为其中包括窃取主要由中国用户使用的QQ信息的功能。
图 2. MS-SQL 服务器进程创建的 HiddenGh0st
1.HiddenGh0st分析
1.1. 初始设置
HiddenGh0st 以打包状态分发以绕过文件诊断。将DATA段中加密的实际PE解密后,在内存中执行,此时,还传输了大小为0x848的配置数据。
图 3. 设置执行解密的 shellcode 时传输的数据
传输的配置数据如下,支持各种设置,不仅包括C&C地址,还包括安装方式、安装路径/文件名、是否激活rootkit。
Table 1.初始设置数据
在配置数据中,有很多是被禁用的,一个代表性的例子就是下载器线程中使用的URL地址。如果攻击者设置了下载 URL 地址,那么在执行 HiddeGh0st 时也会执行从外部安装额外恶意代码的过程。
此外,在禁用的配置数据中,有一项设置激活了获取受感染系统的公共IP地址的功能。如果激活,将从“http://www.taobao.com/help/getip.php”地址获取公共IP地址,并将其包含在要传递到C&C服务器的数据中。
1.2. 安装过程
1.2.1. 安装模式 #1 – 服务
如果配置数据中指定的安装模式为服务,则首先将当前恶意软件安装的时间存储在HKLMSYSTEMSelect键的MarkTime值中。然后,恶意软件通过引用配置数据来复制自身,并向服务注册自身。由于在注册服务时指定了“-auto”参数,因此作为服务运行的恶意代码将通过“-auto”参数执行。
图 4. 存储安装时间的 MarkTime 值
作为参考,配置数据中还需要添加一定大小的虚拟数据,如果配置值为0x0008,则在恶意软件的后面添加大小为0x00800000的虚拟数据。完成到目前为止的过程后,运行该服务并使用以下命令删除原始文件。作为参考,当作为服务运行时,它会使用参数“-acsi”再次运行自身。一旦完成到此为止的过程,主例程就继续进行。
> C:Windowssystem32cmd.exe /c ping -n 2 127.0.0.1 > nul & del [恶意软件路径] > nul
1.2.2. 安装模式#2 – 启动文件夹
如果在运行恶意代码时传输的配置数据中将安装方法设置为启动文件夹,则通过复制到启动文件夹而不是注册服务来维持持久性。首先,将安装时间存储在 HKLMSYSTEMSelect 键的 MarkTime 值中是相同的。然后,当前执行的恶意代码将被复制到启动文件夹,并使用 DefineDosDeviceA() API 创建指向复制目标路径的符号链接,并在复制过程中使用。字符串“.agmkis2”用作符号链接的名称。
图 5. 使用符号链接复制文件
之后,对复制的恶意代码赋予隐藏属性,并根据设置添加虚拟数据。一旦完成到此为止的过程,复制的恶意代码就会被执行,并且原始恶意代码将被自删除。
1.3. 受感染系统信息传递
与一般的 Gh0st RAT 类似,HiddenGh0st 在与 C&C 服务器建立通信后收集并传输有关受感染系统的基本信息。
表2. 传输到C&C服务器的信息列表
通过获取当前运行的进程名称并检查是否包含以下关键字来获取已安装的安全产品信息。
“360tray.exe”、“360sd.exe”、“kxetray.exe”、“KSafeTray.exe”、“QQPCRTP.exe”、“HipsTray.exe”、“BaiduSd.exe”、“baiduSafeTray.exe”、“KvMonXP” .exe”、“RavMonD.exe”、“QUHLPSVC.EXE”、“QuickHeal”、“mssecess.exe”、“cfp.exe”、“SPIDer.exe”、“DR.WEB”、“acs.exe”、 “Outpost”、“V3Svc.exe”、“AYAgent.aye”、“avgwdsvc.exe”、“AVG”、“f-secure.exe”、“F-Secure”、“avp.exe”、“Mcshield.exe” ”、“NOD32”、“knsdtray.exe”、“TMBMSRV.exe”、“avcenter.exe”、“ashDisp.exe”、“rtvscan.exe”、“remupd.exe”、“vsserv.exe”、“BitDefender” ”、“PSafeSysTray.exe”、“ad-watch.exe”、“K7TSecurity.exe”、“UnThreat.exe”、“UnThreat”
HiddenGh0st 传输到 C&C 服务器的其他数据包括当前运行的 QQ 信使的 QQ 号码。由于QQ Messenger的主要用户主要是会说中文的用户,因此推测攻击者的主要目标是中国用户。
图6. QQ聊天中获取QQ号码的例程
HiddenGh0st将这样得到的大小为0x3BC的数据进行压缩,然后将大小为0x0F的数据添加到前面。附加数据包括签名字符串“hx”、待发送数据的大小、原始数据的大小等信息。顾名思义,最初的 Gh0st RAT 使用签名字符串“Gh0st”与 C&C 服务器进行通信。不过,Gh0st RAT 有多种变种,其源代码是公开的,过去 Gh0stCringe RAT 也使用“xy”作为签名字符串。
表 3. 传输的数据(加密前)
数据经过加密处理后最终发送至C&C服务器。
图 7. 数据包加密例程
图 8. 与 C&C 服务器的通信数据包
1.4. 执行命令
由于攻击者基于现有的 Gh0st RAT 构建了 HiddenGh0st,因此支持现有 Gh0st RAT 支持的基本命令,如 FileManager、ScreenManager、KeyboardManager、SystemManager 和 ShellManager。当然,HiddenGh0st 支持的命令还有很多。以下是从C&C服务器接收后可以执行的命令列表,由于只概括了大类,所以每条命令实际执行的功能要大得多。其中,作为线程运行并不断向C&C服务器传输数据的命令使用C&C服务器的80端口。
表 4. HiddenGh0st 支持的命令列表
HiddenGh0st 提供了多种功能,因此除了原始 Gh0st RAT 或基本 RAT 恶意软件支持的功能外,它还具有许多功能。
在初始执行时作为参数接收的配置数据中编码了两个字符串。一个是“1.0”字符串,推测是恶意软件的版本信息,另一个是“Default”字符串,推测是恶意软件的标识符,因为感染信息时会一起传输。系统随后传输到C&C服务器。当攻击者激活键盘记录命令时,收集到的键盘记录数据存储在%SystemDirectory%路径下,此时使用的名称为“6gkIBfkS+qY=.key”,即解密“Default”字符串之前的字符串作为文件名。
图 9. 键盘记录数据的保存位置
HiddenGh0st 能够通过安装 Mimikatsu 从受感染的系统中窃取帐户信息。除了远程 shell 之外,原始 Gh0st RAT 中负责远程 shell 功能的 ShellManager 类还包含一个名为“GetMP.exe”的命令,该命令安装 Mimikatsu,然后执行以下命令。恶意软件将通过此过程收集的受感染系统的帐户信息传输到 C&C 服务器。
> GetMP privilege::debug sekurlsa::logonpasswords exitrn
图 10. Mimikatsu 执行例程
在新添加的命令中,有很多与使用RDP进行远程控制相关的功能。您可以在受感染的系统上激活远程桌面或互联网共享功能,或者更改远程桌面的端口号,还有一个功能是使用以下命令激活来宾帐户并将其注册到管理员组中。
> net user guest /active:yes && net user guest 123456 && net localgroup administrators guest /add
图 11. 启用远程桌面和更改端口号的例程
此外,它还包括过去的RAT恶意软件支持的功能,例如删除Internet Explorer缓存、打开或关闭CD-ROM、隐藏任务栏以及更改鼠标左键和右键的命令。
> cmd.exe /c RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255
虽然具体用途尚未确认,但命令中存在设置以下注册表项值的功能。如果通过攻击者的命令设置值“5750b8de793d50a8f9eaa777adbf58d4”,则该值会与 HiddenGh0st 传递给 C&C 服务器的基本信息一起传输。
HKLMSYSTEMCurrentControlSetServicesBITS / 5750b8de793d50a8f9eaa777adbf58d4
HKLMSYSTEMSetup / Host
图 12. 写入从攻击者处接收到的数据的注册表项
2.HiddenGh0st的Rootkit分析
Hidden是在GitHub上发布的开源rootkit驱动,它使用最新操作系统提供的迷你过滤驱动和内核回调函数来隐藏文件和注册表并保护进程。由于这些功能,攻击者有时会出于恶意目的使用隐藏驱动程序来隐藏恶意代码并防止恶意进程被终止。PurpleFox 是一种真正的挖矿恶意软件,它也定制了 Hidden 并在攻击中使用它来隐藏恶意软件并阻止处理。[5]
HiddenGh0st在执行过程中安装其中包含的Hidden rootkit,并用它来隐藏和保护负责后门功能的恶意软件。在这里,我们首先分析Hidden rootkit的基本功能,然后总结HiddenGh0st使用Hidden的过程。
2.1. 隐藏的rootkit分析
2.1.1. 默认行为
Hidden首先读取安装注册表中注册的Config。注册表值是加载 Rootkit 驱动器时自动读取并应用的配置数据。例如,创建以下注册表值来传达四个命令。
图 13. 设置数据(包括命令)
读取初始设置数据后,进程监视器、微型过滤器和注册表过滤器将执行初始化过程。在每次初始化过程之后,根据读取的配置数据执行保护和隐藏功能。最后,您可以通过参考上面注册表中设置的“Hid_StealthMode”值来继续使用Stealth Mode,该值负责隐藏驱动程序本身。隐身模式隐藏隐藏文件和注册表项,使服务无法停止。相反,您可以禁用驱动程序,然后使用名为 HiddenCLI.exe 的工具发送命令来恢复它。
表 5. Hidden 引用的注册表命令
作为参考,HiddenCLI.exe 在将命令传递到隐藏驱动程序时使用以下 IOCTL。
表 6. Hidden 用于传递命令的 IOCTL 编号列表。
2.1.2. 文件隐藏
Hidden 使用文件系统微型过滤器驱动程序来隐藏文件。文件系统过滤驱动程序是Windows提供的内核模式组件,提供对文件系统请求的监视和修改等控制。文件系统请求包括打开、读取和修改文件和目录。迷你过滤驱动程序是一个可以使用Windows的过滤管理器来控制文件系统的模型,并且可以用于监视和控制与文件相关的活动,而无需使用如上所述的内核模式挂钩方法。
在 Hidden 中受监视的 I/O 操作是 IRP_MJ_CREATE 和 IRP_MJ_DIRECTORY_CONTROL。IRP_MJ_CREATE 在打开文件或设备对象的句柄时发生,并且 Hidden 为该请求注册一个预操作回调。IRP_MJ_DIRECTORY_CONTROL 在搜索目录时发生,并注册预操作和后操作的回调。
在监视 IRP_MJ_CREATE 时,如果要打开句柄的文件或目录的名称位于要隐藏的目标列表中,则通过返回 STATUS_NO_SUCH_FILE 来阻止访问。在目录查找的情况下,IRP_MJ_DIRECTORY_CONTROL 受到监视,如果它包含在隐藏目标列表中,则隐藏目标文件和目录将从作为请求结果接收到的信息中删除,从而使用户无法识别它们。
图 14. 在隐藏目标的情况下返回 STATUS_NO_SUCH_FILE
注册微型过滤器驱动程序时,过滤器管理器将每个微型过滤器驱动程序加载到唯一的 Altitude 中。如果微过滤器驱动程序包含重复值,则无法加载它,并且 Microsoft 维护对驱动程序文件的这种高级控制。作为参考,Hidden 不是正式签名和注册的驱动程序,但 370030 在开源中使用率很高。(与名为 passThrough.sys 的 Microsoft 示例微型过滤器驱动程序的高度相同的值)
图 15. 可在 Hidden.inf 文件中检查的海拔高度
2.1.3. 进程保护和隐藏
Hidden提供了进程保护功能,并使用ObRegisterCallbacks()函数来进行此操作。此函数注册一个回调例程,用于接收有关进程和线程对象上的特定前置操作和后置操作的通知。换句话说,为每个对象创建和复制句柄等操作注册回调例程,并以这样的方式提供控制:每当执行相关操作时,首先调用注册的回调例程。ObRegisterCallbacks()函数需要像迷你过滤器驱动一样指定Altitude,其特点是指定1000。
如果查看调用 ObRegisterCallbacks() 函数时指定的 OB_OPERATION_REGISTRATION 结构,可以看到回调函数(ProcessPreCallback、ThreadPreCallback)是为与创建和复制进程和线程句柄相关的(OB_OPERATION_HANDLE_CREATE | OB_OPERATION_HANDLE_DUPLICATE)预操作注册的。在该回调函数中,将获取受保护进程句柄时设置的访问权限修改为最小权限,如下所示,防止读/写内存、终止进程等操作。
图 16. 权限更改例程
作为参考,Hidden支持的命令中,还有排除特定进程被隐藏的功能,并管理一个单独的进程表来管理这些异常进程。该表是通过使用 PsSetCreateProcessNotifyRoutineEx() 函数监视进程的创建和终止来实现的。
虽然它不包含在 HiddenGh0st 使用的 rootkit 中,但源代码支持使用 DKOM(直接内核对象操作)进行进程隐藏。Windows 内核使用称为“EPROCESS”的结构来管理进程。EPROCESS以双向链表结构连接到不同的进程,rootkit接收要隐藏的进程的PID作为参数,访问该进程的EPROCESS来检查Flink和Blink连接的进程。接下来,连接到你的前后端进程互相连接起来,你的Flink和Blink都指向你自己,这样就不会被包含在EPROCESS的双向链表中了。
图17. Hidden源码支持的进程隐藏功能
2.1.4. 注册表隐形
Hidden 提供了隐藏注册表项和值的函数,并使用 CmRegisterCallbackEx() 函数来执行此操作。该函数注册一个注册表回调例程,并以这样的方式提供控制:每当执行与注册表相关的操作时,首先调用注册的回调例程。CmRegisterCallbackEx() 函数也必须像迷你过滤器驱动程序一样指定 Altitude,并且在 Hidden 中指定随机值 320000。
Hidden在回调函数内部监听10个注册表操作如下。每个函数返回STATUS_ACCESS_DENIED和STATUS_NOT_FOUND等值取决于作为每个操作目标的注册表项和值是否受到隐藏命令的保护以及调用主体是否是异常进程,导致查询时出错. 使修改变得不可能。
图 18. 受监控的注册管理机构操作列表
2.2. HiddenGh0st 的隐藏 Rootkit
HiddenGh0st 在“%SystemDirectory%driversQAssist.sys”路径的 DATA 部分中创建一个 Rootkit 文件,并根据 x86 和 x64 架构安装每个 Rootkit。然后,将创建的 rootkit 注册为 QAssist 服务,并使用 NtLoadDriver() 函数加载驱动程序。
图 19. 将高度设置为 370030 的例程
HicdenGh0st 创建的隐藏 rootkit 与原始源代码之间有两个区别。一是读取“Hid_StealthMode”并设置隐身模式的例程已修改为在加载驱动程序时默认启用隐身功能,即使没有设置相应的值。另一个是进程隐藏功能或“Hid_HideImages”设置被禁用。作为参考,这与上传到 GitHub 的隐藏二进制文件相同,因为开发人员上传构建的二进制文件后添加了进程隐藏功能。
HiddenGh0st的数据集是IgnoredImages,由于它作为服务运行,因此服务进程被指定为异常进程。
图 20. 注册的 QAsis rootkit 服务
默认设置仅为 Hid_IgnoredImages,但从现在开始,可以使用 IOCTL 命令指定隐藏和异常的目标。首先,将注册表中注册的HiddenGh0st恶意软件文件和HiddenGh0st服务添加到隐藏目标。并将HiddenGh0st进程和系统进程“lsass.exe”、“lsm.exe”和“audiodg.exe”添加到异常进程中。
图 21. 将 LSASS 进程注册为异常进程的命令
三、结论
针对 MS-SQL 服务器的典型攻击包括针对不正确管理帐户信息的系统的暴力破解和字典攻击。管理员应该通过使用难以猜测的帐户密码并定期更改它们来保护数据库服务器免受暴力破解和字典攻击。
您还应该小心,通过将 V3 更新到最新版本来提前防止恶意软件感染。此外,必须使用安全产品来控制来自外部攻击者的访问,例如对外部开放且可访问的数据库服务器的防火墙。如果不首先采取上述措施,可能会因攻击者和恶意代码而导致持续感染。
文件诊断
– Malware/Win32.RL_Generic.R356012 (2020.11.22.01)
– Trojan/Win.Generic.C4446276 (2021.04.30.03)
– Malware/Gen.Generic.C3228648 (2019.05.09.04)
行为诊断
– Malware/MDP.Behavior.M29
– DefenseEvasion/MDP.Event.M1423
IOC
MD5
– 69cafef1e25734dea3ade462fead3cc9 : HiddenGh0st
– 0d92b5f7a0f338472d59c5f2208475a3 : Hidden x86 Rootkit (QAssist.sys)
– 4e34c068e764ad0ff0cb58bc4f143197 : Hidden x64 Rootkit (QAssist.sys)
C&C
– leifenghackyuankong.e3.luyouxia[.]net:14688
转载来源:https://asec.ahnlab.com/ko/57028/
图片来源网络侵权可联系删除