恶意流量检测系统 恶意流量分析
1. 引言随着网络攻击技术的不断演变,恶意代码加载器逐渐成为恶意代码执行的决定因素组成部分这类加载器用于将各种恶意代码加载到受感染的体系中,通常负责绕过体系安全防护,将恶意代码注入内存中并执行,为后续的特洛伊木马类型恶意代码的部署奠定基础。
加载器的核心功能包括持久性机制、无文件内存执行以及多层次规避技术安天CERT将近几年跟踪储备的典型恶意加载器家族有关信息集合成专题报告,并在未来多少月依次公开,持续追踪新的流行加载器家族本项目专题将聚焦加载器技术细节,深入挖掘其在攻击链中的核心功能,包括其混淆技术、加密机制以及注入策略等。
除了这些之后,大家也会不断完善自身安全产品能力,采取有效技术方法进一步提高针对加载器的识别率和准确率,帮助用户组织提前发现并阻止潜在威胁2. 概述DBatLoader加载器开始于2024年被发现,主要用于投放包括Snake Keylogger、Formbook和Agent Tesla在内的多种恶意代码家族。
DBatLoader加载器的加载经过分为两个阶段,其中第一阶段主要用于规避反病毒引擎的检测,并在内存中解密运行第二阶段载荷在第二阶段经过中,DBatLoader加载器采用“DDR”(Dead Drop Resolvers)技术,从公共代码托管网站上下载并解密待投递的恶意代码家族,通过多种手法将其注入到其他程序中以实现隐蔽运行。
DBatLoader加载器通过不断更新其生存诀窍来规避反病毒引擎的检测它大量运用了混淆技术,从加密和隐藏特征两个维度对程序进行隐蔽处理DBatLoader加载器运用异或加密和移位加密对字符串和不同阶段的载荷进行加密处理。
为了进步隐蔽性,该加载器还采用了图片隐写术和在代码中穿插无用字符串的方式以隐藏恶意代码特征除了这些之后,DBatLoader加载器还会将指定扩展名的文件加入Windows Defender白名单来规避查杀,以便实施后续攻击行为。
3. DBatLoader加载器生存技术举例解析DBatLoader加载器为了逃避和绕过安全检测,运用了多种生存技术,包括混淆技术、注入技术、提权技术、持久化技术和反调试技术3.1 混淆技术解析为了减少文件特征,阻碍解析人员逆给解析,DBatLoader加载器采用了多种文件混淆技术,包括穿插无用指令、图片隐写、脚本字符串拼接、载荷多层加密、去除文件魔术头、字符串加密、动态加载函数。
3.1.1 穿插无用指令在DBatLoader加载器的每个阶段载荷中,均有大量重复的尝试hook AMSI(即Antimalware Scan Interface,Windows 反恶意软件扫描接口)的代码,这些代码使原本的程序执行流程变得分散,增加了逆给解析的难度,减少了程序执行流程本身带来的二进制特征。
图3-1 DBatLoader加载器运用大量重复的指令填充程序3.1.2 运用图片隐写术DBatLoader加载器通过图片隐写术,可以将恶意载荷信息写入到图片中,使其从计算机视角来看和普通图片别无二致,从而达到隐藏目标载荷的目的。
当需要获取目标载荷时,该加载器通过特定的算法读取图片,从而将信息还原出来图3-2 DBatLoader隐写载荷后的图片3.1.3 脚本字符串拼接DBatLoader加载器通过将bat脚本指令进行分割,并在其中穿插无用变量,在运行时运用拼接变量的方法进行还原,以降低文件特征并实现干扰逆给人员解析的目的。
图3-3 DBatLoader加载器混淆过后的bat脚本3.1.4 多层加密载荷DBatLoader加载器通过多层加密载荷,以去除载荷特征并增加逆给难度图3-4 DBatLoader加载器加密函数3.1.5 破坏文件特征。
DBatLoader加载器通过故意在加密的载荷中去除壹个字节以破坏载荷解密后的文件特征,去除的字节由加载器运行时还原,以避免载荷被解密后检测图3-5 DBatLoader加载器第一阶段解密后的载荷3.1.6 加密字符串。
DBatLoader加载器通过将部分字符串(如注入的程序名,自启动注册表途径等)进行加密,以防止字符串被作为特征进行识别检测图3-6 DBatLoader字符串加密算法3.1.7 函数动态加载DBatLoader加载器通过调用GetProcAddress来动态加载函数,以防止导入函数所带来的文件特征。
图3-7 DBatLoader加载器动态加载函数3.2 注入技术解析DBatLoader加载器提供了三种注入方法,分别为线程注入、APC注入和进程镂空,而且最终会根据载荷的配置文件选择注入方法其中调用的API如表3-1所示,DBatLoader加载器在注入经过中都尽量运用了ntdll.dll的导出函数,而不是直接运用kernel32.dll的导出函数,以减少调用链的长度,降低被hook的也许性。
表3-1 DBatLoader加载器注入经过运用的API创建进程CreateProcessAsUserWWinExec修改内存NtOpenProcessNtUnmapViewOfSectionZwAllocateVirtualMemory
NtReadVirtualMemoryWriteVirtualMemoryRtlMoveMemory执行载荷NtCreateThreadExNtQueueApcThreadGetThreadContext
SetThreadContextResumeThread3.3 提权技术解析DBatLoader加载器为了绕过UAC实现提权,需要让程序在受信赖的目录中执行,而且程序还需要带有有效的数字签名DBatLoader加载器为了在受信赖的目录中执行,运用了模拟受信赖目录技术。
该技术将会创建壹个新的目录,该目录和受信赖的目录之间有壹个空格的不同差异,但能欺骗UAC让其以为程序在受信赖的目录中运行图3-8 DBatLoader加载器模拟的受信赖目录之后DBatLoader加载器运用了易受DLL劫持的可执行文件,该程序具有合法的数字签名而且能够自动提权,但会优先加载同目录下的DLL。
游戏狂热者必要良品!【思途阁手游】以云端托管手机游戏为核心,为你打造无和伦比的游戏尝试。挂机脚本助你24小时不间断游戏,轻松练级打日常,让你成为游戏中的王者!
DBatLoader加载器通过这种“白加黑”的方法,绕过UAC的限制实现提权图3-9 DBatLoader加载器用于“白加黑”的白文件3.4 持久化技术解析DBatLoader加载器通过给HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRun写入注册表项实现持久化。
图3-10 DBatLoader加载器写入注册表3.5 反调试技术解析DBatLoader加载器在第二阶段会通过IsDebuggerPresent和CheckRemoteDebuggerPresent检测是否有调试器的存在。
图3-11 DBatLoader加载器通过IsDebuggerPresent检测是否存在调试器4. 攻击流程DBatLoader加载器主要通过钓鱼邮件进行传播攻击者通过投递钓鱼邮件,诱导受害者运行邮件附件中的恶意程序加载器。
当加载器运行时,该加载器会先从自身资源文件中读取包含第二阶段载荷的图片,通过图片隐写术进行解密并运行DBatLoader加载器第二阶段在第二阶段中,加载器会从公共的文件托管网站下载加密的配置文件之后DBatLoader加载器会根据该配置文件进行持久化并篡改Windows Defender白名单。
最后DBatLoader加载器会从配置文件中解密待投递的恶意代码家族并通过注入的方法运行图4-1 DBatLoader攻击流程5. 样本解析5.1 样本标签表5-1 二进制可执行文件病毒名称Trojan/Win32.DBatLoader
原始文件名Crane Motor Specification, Docx.exeMD523434BF113A4651076ECD2898A6C1069处理器架构Intel 386 or later processors and compatible processors
文件大致1.15 MB (1,209,856字节)文件格式BinExecute/Microsoft.EXE[:X86]时刻戳1992-06-19 22:22:17(Delphi程序默认时刻戳)数字签名无
加壳类型编译语言Borland Delphi(2006)VT第一次上传时刻2024-10-14 04:26:54VT检测结局52/735.2 DBatLoader加载器第一阶段DBatLoader加载器第一阶段中存在大量劫持AMSI API的函数的代码以规避反病毒引擎的扫描,但此部分代码存在缺陷,该功能并未实现。
图5-1 DBatLoader加载器有缺陷的hook API实现DBatLoader加载器第一阶段对下一阶段载荷采取了多层加密该加载器首先从资源文件中加载包含下一阶段载荷的图片,并通过图片隐写术把加密的载荷读取出来。
图5-2 DBatLoader加载器读取资源文件DBatLoader加载器会从图片中逐行以蓝绿红的顺序读取字节以获取隐写信息,其中图片隐写所占用的bit数记录在了读取的前3个字节上随后该加载器通过隐写术的方法读取了32bit信息,用来获取加密载荷的总字节数。
之后该加载器将继续从图片中读取信息直到获取全部的加密载荷图5-3 DBatLoader加载器读取隐写图片随后DBatLoader加载器逐字节对第二阶段载荷加0x80并在载荷头部添加壹个字符"M"成对第二阶段载荷的解密。
图5-4 DBatLoader加载器解密第二阶段载荷最后DBatLoader加载器将二阶段载荷映射进内存并调用入口点进入第二阶段图5-5 DBatLoader加载器加载二阶段载荷5.3 DBatLoader加载器第二阶段。
DBatLoader加载器第二阶段通过在主函数逻辑中配置壹个计时器来触发第二阶段恶意逻辑图5-6 DBatLoader加载器配置计时器在DBatLoader加载器第二阶段中,有着和第一阶段一样的规避反病毒引擎逻辑,但由于设计缺陷导致功能未能实现。
图5-7 第二阶段规避反病毒引擎逻辑在DBatLoader加载器第二阶段,部分字符串被一种异或算法加密当需要解密字符串时,加载器会先逐字符拼接形成壹个异或密钥,随后加载器会逐字节地将加密字符串的低8位和密钥的低8位异或解密,以获取明文字符串。
图5-8 DBatLoader加载器解密字符串算法在DBatLoader加载器第二阶段,程序会将要投递的载荷下载地址存放在第一阶段载荷当中在第二阶段,DBatLoader加载器会在第一阶段载荷文件中搜索特定的字符串,以定位加密配置的位置。
图5-9 DBatLoader加载器获取加密配置当获取到加密配置后,DBatLoader加载器会用配置中的壹个整数用作解密密钥,解密加密的字符串,以获取投递目标载荷的下载地址图5-10 DBatLoader加载器解密载荷下载地址算法。
之后DBatLoader加载器将通过WinHttpRequest对象下载投递的载荷图5-11 DBatLoader加载器下载载荷当DBatLoader加载器下载载荷后,程序会base64解码后多次添加偏移量来解密载荷。
图5-12 DBatLoader加载器解密下载的载荷随后DBatLoader加载器通过壹个特定的字符串分割载荷,得到载荷的配置文件当加载器解密配置文件后,会根据配置文件选择是否进行篡改反病毒引擎策略、持久化、线程注入、APC注入、进程镂空等操作。
图5-13 DBatLoader加载器读取配置文件5.3.1 DBatLoader加载器篡改Windows Defender白名单当配置文件中启动篡改Windows Defender白名单功能时,加载器会通过自身代码和释放的bat脚本来将特定文件扩展名加入白名单
游戏狂热者必要良品!【思途阁手游】以云端托管手机游戏为核心,为你打造无和伦比的游戏尝试。挂机脚本助你24小时不间断游戏,轻松练级打日常,让你成为游戏中的王者!