攻击样本均为Excel扩展插件xll类型,此类型文件携带Excel图标,双击时由Excel进程加载执行。
xll文件执行后,将会释放xlsx诱饵文档并打开。所捕获xll样本释放诱饵文档相同,内容为发票申请相关。
xll文件是Microsoft Office Excel产品的一种扩展插件,其本质是pe-dll文件,带有excel-xll专属图标,文件默认打开加载方式为Excel进程加载。
Excel加载xll后,会根据定义的xll接口调用xll文件的导出函数。其中两个接口函数很突出:xlAutoOpen和xlAutoClose。一旦加载项被激活或停用,这些函数就会分别被调用。这些函数可用于加载恶意代码,类似于经典VBA宏中的Auto_Open和Auto_Close方法。xll文件的一个缺点是它们只能由Excel以正确的位数加载。例如,64 位 XLL 只能由 64 位版本的Excel加载。32 位版本也是如此。因此,恶意软件作者必须依赖安装在受害者机器上的 Excel 版本。与VBA宏一样,Excel将警告用户执行加载项引起的安全问题。在这方面,与VBA宏相比,它对恶意软件没有优势。
攻击者鱼叉邮件投递的xll载荷由Excel进程默认加载,xll!xlAutoOpen内存装在执行第一段shellcode(x86_xll_loader),然后挂起64为位系统进程wermgr.exe,通过天堂之门技术在32位Excel进程中内存执行x64shellcode(x64_Injecter),x64_shellcode进一步将最终的核心载荷(x64_coreloader)注入wermgr.exe,然后恢复挂起进程执行。x64_coreloader收集用户及主机信息C&C上线,请求执行C&C下发的功能插件,可支持ps1\vbs\js\exe\dll\shellcode等多种类型载荷加载,可支持不落地内存执行。整体执行流程如下图所示:
文件名称 | August 10, 2022.xll |
MD5 | 1e12ac069c1898ffe271ebdfcbd689c1 |
SHA1 | 5c7b4da950b0f1845b38ef1aa11ca41b4731c766 |
SHA256 | b08e713196b712c42da2df9da7836d270306065fbf6d4720f25d80e4104daf38 |
文件类型 | Win32 DLL |
文件大小 | 472.00 KB (483328 bytes) |
编译时间 | 2022-07-27 18:41:01 UTC |
C&C | https://essentialsmassageanddayspa.com |
功能说明 | JssLoader,可加载\下载执行譬如js、vbs、ps1、exe、dll、shellcode等多种类型的攻击payload,可针对outlook邮箱实现邮件窃取、规则修改。 |
按照上述执行流程拆解成如下的x86_xll_loader、x64_Injecter、x64_coreloader以及后续的攻击插件四个阶段展开分析。
xll文件恶意代码调用入口。
shellcode加载执行。
调用GetNativeSystemInfo,判断是否为x64系统。
使用Wow64DisableWow64FsRedirection关闭64位系统下32位文件子系统的重定向,获取x64目标进程wermgr.exe。
挂起创建。
heaven's gate引导执行x64 shellcode。
上述代码将引导执行位于0x00000000004d0000处的64位代码指令,dump该段shellcode使用ida进行x64反编译,heaven's gate跳段过程使用ecx传递一个0x20字节的参数。
分析该0x20字节参数,其结构如下:
typedef struct _diystruct {
int64_t* lppayload;// 用于进程注入的下一阶段shellcode地址Injectshell
int64_t payloadsize;// Injectshell大小
int64_t hDstProcess;// 目标进程wermgr.exe进程句柄
int64_t hDstThread;// 目标进程wermgr.exe主线程句柄
}diystruct,*lpdiystruct;
(2)x64_Injecter
用于下阶段注入的shellcode通过lpdiystruct->lppayload参数传入0x00000000004d0000开始的x64加载shellcode。
dump分析0x00000000004d0000处的shellcode,其逻辑如下,将lpdiystruct->lppayload拷贝至wermgr.exe空间,然后修改劫持wermgr.exe->AddressOfEntryPoint执行注入的shellcode。
通过硬编码写入wermgr.exe->AddressOfEntryPoint,劫持wermgr.exe执行堆中ret_addr处的注入代码。
继续分析注入wermgr.exe的shellcode。注入shellcode先加载所需dll模块及其导出函数地址。
C&C交互之前,先解密uri参数及C&C地址。解密的参数用于标识中马主机身份,形如/?id=userdomain+username&type=a,其中userdomain为主机所属域名称,username为用户名称。
其中频繁使用的字符串解密函数如下,该函数通过传入一个索引值,在全局的字符串数组中获取索引位置的字符串,然后通过自定义base64算法进行解码(base64_list="+zPCJkVSH2Y6GKMUQ7mqaIT3nfwoxN0rv/9guXsDbLdil8h5OWAtBy1jFEeRZ4cp")。
可通过附录DiyBase64Decode.py进行base64解码。收集主机及用户信息,封装成Json格式,然后进行base64编码,用于C&C上线。
进行C&C上线,User Agent :curl/7.78.0,essentialsmassageanddayspa.com:443。若企业建设了微步OneDNS,所有域名通信前都会经过OneDNS过滤一次威胁情报,C&C反连将会被及时拦截,有效阻断了控制主机命令下发,防止了危害真实发生。
使用MAPI获取用户outlook邮件。
Malwarebytes在对该样本分析中提到,该木马还可提供邮件规则修改功能,代码实现与GitHubXRules项目(https://github.com/FSecureLABS/XRulez)存在相似之处。通过修改邮件规则可实现针对特定邮件的定向处理或执行恶意文件,攻击者理论上可通过outlook客户端实现持久化驻留。疑似outlook规则添加代码如下:
JssLoader是FIN7经常使用的一款集信息收集、多类型插件下载/加载功能于一体的中期渗透插件,样本分析过程中提及的形如“id=WALKERPCWALKERPC&type=a”的uri参数以及用户和主机信息收集功能实现中用到的json格式中的名称元素字符串等与历史事件完全一致,都可以作为归因至FIN7的强关联证据,此部分不展开描述。
基于上述分析,我们尝试从样本及网络资产角度进行拓线分析:
Xll类型的jssloader较历史样本的改进之处在于,核心代码经过多层shellcode封装,通过字符串加密以及动态API获取淡化攻击指纹。可从两个代码实现提取样本指纹:自定义base64算法+字符串提取,信息收集部分json特征+API调用特征。
从样本侧C&C上线特征来看,形如“https://essentialsmassageanddayspa[.]com/?id=userdomain+username&type=a”的格式较为固定,其中userdomain为主机所属域名称,username为用户名称。微步内部数据平台拓线结果如下。
公众号内回复“F7”,可获取附录 IOC。