KillSuit
KillSuit (KiSu)是一个不寻常的插件,一旦部署在受害设备上,它的整个任务就是运行其他插件,为持久性和规避提供框架。一些DanderSpritz 插件可以单独运行,也可以通过 KillSuit 调用。它的设计使得在受害者端运行的每个 KillSuit 实例都可以托管一个工具(例如下面的 MistyVeal);因此,很容易发生受害者设备上安装了多个 KillSuit 实例,每个实例都托管不同的post-exploitation工具。每个 KillSuit 实例的数据,包括其所有模块,都在注册表项中保持加密。这是 KillSuit 独有的功能,通常不是 DanderSpritz 插件的功能。
DoubleFeature 记录了大量与 KillSuit 相关的数据。实际上,DoubleFeature 内部也有一些死代码,允许删除、升级和推送模块更新到运行的 KillSuit 实例中。虽然“KillSuit”是在 DoubleFeature 内部和攻击者实际调用的外层 DanderSpritz CLI 中使用的名称,但实际上内部使用的 Plugin 文件夹名称是 DecibalMinute(简称 DeMi)。 Python UI 逻辑主要可以在 3 个脚本中找到,不出所料,它们位于在插件的 pyscripts 目录中。
“Mcl_Cmd_DiBa_Tasking.py”:处理 KiSu 安装、卸载和升级。作为参数,此脚本接受要使用的持久性机制的类型;有 4 种类型的持久性,命名为 “Default”, “Launcher”, “SoTi” 和“JuVi”。我们将在下面进一步详细说明它们的内部工作原理。在底层,Python UI通过RPC调用(RPC_INFO_INSTALL)实现这一点。
“Mcl_Cmd_KisuComms_Tasking.py”:用于与受害者端正在运行的KillSuit实例建立连接,并提供动态加载和卸载模块/驱动程序的功能。
“_KiSu_BH_enable.py”:KillSuit 的一个内部驱动程序称为“BroughtHotShot”,简称 BH。此脚本不会启用它,但会检查它是否已被启用(通过 DanderSpritz 命令可用 -command kisu_install -isloaded 和可用 -command kisu_install -load)。如果要启用驱动程序,则需要执行 KiSu_BH_enable.py on,禁用则是 KiSu_BH_enable.py off。
“Mcl_Cmd_KiSuFullList_Tasking.py”:生成目标设备上当前 KiSu 安装的列表。在后台,这是通过调用 kisu_list DanderSpritz 命令完成的,然后对于每个返回的安装,通过 DanderSpritz 命令 kisu_config -instance id -checksum 来获取它的配置。此配置包含各种技术细节,例如 KillSuit 版本、安装的注册表项和值、内核和用户模块的加载程序、用于保存托管插件模块的加密虚拟文件系统的目录、已被安装的合法驱动程序通过将托管插件注入其中,以及在受害者上启动 KillSuit 时内部使用的标志而受害。
每个 KillSuit 实例都有一个内部记录,其中包含该实例中托管的工具的“ID”,每个工具的 ID 都是相同的。我们发现 DoubleFeature 内部引用了以下可能的实例:
PC (PeddleCheap) – 0x7A43E1FA :提供一个交互式shell和一些长期持久性的功能。本身也可用作post-exploitation工具,并且可以在受感染的主机上安装其他 KillSuit 实例。
UR (UnitedRake) : 0x91FD378(同上);
STLA (StrangeLand) / GROK – 0x1A0F5582,这些都是键盘记录器,他们的加密日志存储在名称格式为 tm154*.da 的文件中;
SNUN (SnuffleUnicorn) – 0x23A4732A;
WRWA (WraithWrath) – 0x502BB710;
SLSH (SleepySheriff) – 0x32A7032D;
WORA (WoozyRamble) – 0x68A40E49;
TTSU (TiltTsunami) - 0x8F1D6511;
SOKN (SoberKnave) - 0x8F1D6510:该工具具有通过未使用/禁用的WiFi卡进行数据溢出的功能,它被用于气隙系统(air gapped)目标。
MAGR (MagicGrain) - 0x437e528e8;
DODA (DoubleDare) - 0x1C9D4A8A;
SAAN (SavageAngel) – 0x9D801C63;
MOAN (MorbidAngel) – 0x9D801C62;
DEWH (DementiaWheel) –0xAE37690B:黑客工具也称为“Fanny”;
CHMU (ChinMusic) – 0x39B2DA17;
MAMO (MagicMonkey) – 0x2D473AB3;
MABE (MagicBean) - 0x8675309 :用于中间人的 WiFi
DiveBar
DiveBar(DiBa)是DoubleFeature对负责持久化方法(例如“KSLA”(KillSuit loader)、“SolarTime”、“JustVisiting”和“DoctorOcopus”)部分的命名。
我们上面提到的不同持久化方法有:
KSLA (Launcher) :只需在受害系统上安装一个新的驱动程序并将其用于持久性。这种情况一直持续到微软引入驱动程序签名强制执行(DSE),它不允许未签名的驱动程序运行。Windows Vista及以后版本不支持此方法。
JustVisiting (JuVi):为了绕过 DSE,这种持久性机制滥用了签名驱动程序 ElbyCDIO.sys 中的一个已知漏洞,该漏洞是 RedFox 软件“CloneCD”的一部分。在系统启动时加载和利用易受攻击的驱动程序。以这种方式获得的提升权限会用于将 DiveBar 的持久化驱动程序添加到 LSAExtensionConfig/interfaces,此方法仅适用于Windows 8操作系统。
SolarTime (SoTi):一种高级的持久性机制,通过修改一个受害者系统的 VBR 来工作。仅与具有 FVEBOOT 和特定引导扇区格式的 NTFS 文件系统兼容。 SoTi 将引导扇区的哈希与下面列出的“已知良好”哈希列表进行比较。
如上所述,KillSuit 在受害者注册表中保存了一个叫做“模块存储”的内容。根据注册表的合法目的,恶意软件使用注册表来存储简单的配置数据;但随着时间的流逝,越来越多的恶意软件开始使用注册表来存储任意数据。这样,注册表就会包含模块存储的整个虚拟文件系统,该模块存储是通过连接两个硬编码字典中伪随机选择的两个单词生成的。第一个单词的可能值列示如下:
第二个单词的可能值:
卡巴斯基报道过的“GrayFish”的架构和KillSuit一样:
GrayFish 的架构
图中资源与DiveBar资源一一对应:
102 – fvexpy.sys – F7F382A0C610177431B27B93C4C87AC1;
103 – mpdkg32.dll – 0182DBF3E594581A87992F80C762C099;
104 – BroughtHotShot driver – drmkflt.sys – 9C6D1ED1F5E22BF609BCF5CA6E587DEC / D3DF8781249F2C404C4935CA9FFB1155;
107 – New VBR (for SolarTime);
110 – mpdkg64.dll – F01525C9EF763C49E28CEC6C2F6F6C60;
114 – Elby loader – fhsvcapi.dll – 6156E50571571B233019C4EBB472899D;
115 – Elby driver – AAA8999A169E39FB8B48AE49CD6AC30A;
DiveBar并不局限于滥用 ElbyCDIO.sys,它还会搜索受害者设备上已经存在的易受攻击的良性驱动程序,以用作托管插件代码的“启动器”。在内部,这种被 DiveBar 选择来启动 KillSuit 实例的良性驱动程序被称为“thunk”。对于每个 KillSuit 实例,DoubleFeature 都会报告用于加载其内核模式模块的 thunk 漏洞利用 dll,简称 KML(内核模块启动器)。
FlewAvenue
FlewAvenue(FlAv)是一个IPv4驱动程序,为其他工具提供隐蔽的网络访问。它提供了不同的网络功能,如DNS查询和 ICMP 回显(“ping”)。
FlewAvenue 的指标如下:
“ntevt.sys”——此工具驱动程序的名称
DuneMessiah
DoubleFeature 诊断仅提供有关此工具的非常少的信息。对于此工具,DoubleFeature 报告了受害设备上的实例在内部使用的伪随机生成的“事件名称”,以及一些注册的 KillSuit 实例。
CritterFrenzy
DoubleFeature 也仅报告有关此插件的最少信息,从DoubleFeature收集到的关于这个工具的信息来看,它似乎是KillSuit的另一个实例,可能是过去使用过,ID为333。
CritterFrenzy 指标如下:
“MPDKH32”——此工具的名称
MistyVeal
MistyVeal (MV) 是一种“验证器”植入程序,这意味着它用于验证目标系统确实是真正的受害者,而不是检测环境。它作为 Internet Explorer 浏览器助手对象实现(这些通常用于扩展 IE 功能;例如,Adobe 的 IE 的 Acrobat 插件就是一个浏览器助手对象)。 MistyVeal 也是Equation Group 最初的“Double Fantasy”植入程序的一部分,它是UnitedRake 的前身“netdlr.sys”——该工具驱动程序的名称
MistyVeal指标如下所示:
{B812789D-6FDF-97AB-834B-9F4376B2C8E1} ——用于GUID和版本的MV CLSID
DiceDealer
DiceDealer (DD) 是 DiveBar 执行的所有安装和卸载所产生的日志数据的解析工具(这与UnitedRake有关,因为通常使用DiveBar来安装它)。如果你想手动解析 DiceDealer 日志文件,最简单的方法是将日志文件复制到 DiceDealerReader 工具所在的同一目录中。读取器依赖于该目录中的几个文件,如果它们不存在,将无法解析日志。
PeddleCheap
PeddleCheap ****(PC) 是最先在受害设备上运行的工具之一,可用于引导一次完整的 DanderSpritz 安装。 PeddleCheap 包含的功能非常少,允许攻击者连接到受害设备并远程安装和配置允许进一步post-exploitation功能的植入程序,包括一个完整安装 DanderSpritz 框架。PeddleCheap 通常通过多种方法注入到 lsass.exe中,包括 DOUBLEPULSAR 后门。
PeddleCheap 用户界面
PeddleCheap 指标如下:
{A682FEC0-333F-B16A-4EE6-24CC2BAF1185}——用于GUID和版本的PC CLSID
DoubleFeature 的 Rootkit 控制流程
DoubleFeature (hidsvc.sys) 使用的rootkit 在加载时执行以下操作:
1.它创建了一个未命名的设备对象,但注册了 IRP 调度功能。
2.它分派 IOCTL 请求。
3.它专门从事 Windows 内核代码的运行时修复。
4.它为用户模式模块运行内核 API。
Rootkit 在加载到内存之前由用户模式 DLL 修复,这样做是为了插入用户模式进程的 PID,以便 rootkit 知道要隐藏哪个进程。然后,rootkit 通过 KeAttachProcess 附加到这个相同用户模式进程中。
Rootkit 使用 HalAllocateCommonBuffer 或 MmIsAddressValid 查找 API 函数的动态地址(这些函数的地址是之前通过调用 MmGetSystemRoutineAddress 获得的)。它使用加密的堆栈字符串,这些字符串在需要使用的基础上解密,并在使用后再次立即加密,类似于我们之前描述的 DoubleFeature 用户模式组件中使用的方法。
为了避免被检测到,rootkit 还会尽可能隐秘地创建自己的驱动程序对象。首先,rootkit 不是直接创建对象,而是先创建 Device\\NULL 的句柄,然后通过插入自己的名称为 driver\\msvss 的设备对象来劫持其 FileHandle。最后,它使用此 FileObject 发送 IRP_MJ_Create 请求以获得新创建的驱动程序对象的句柄。其次,rootkit 调用 ObMakeTemporaryObject 并从其父对象管理器目录中删除对象的名称,有效地将其与操作系统内部用于跟踪加载的驱动程序的结构断开链接。由于 Windows 操作系统处理驱动程序的方式,这会导致驱动程序在后台运行,而诊断工具和研究人员将无法找到驱动程序。
新设备的 IRP_MJ_DEVICE_CONTROL 处理程序函数包含可以从用户模式DLL 发送的不同 IoControl 代码(例如 0x8589240c 用于截断文件,0x85892408 用于在内核模式下执行 API 调用并将输出发送回用户模式进程)。
本文翻译自:https://research.checkpoint.com/2021/a-deep-dive-into-doublefeature-equation-groups-post-exploitation-dashboard/如若转载,请注明原文地址