几个月前enSilo的终端防护平台阻止过在Windows正常进程里运行Payload的恶意行为。 深入挖掘后发现攻击者利用DLL搜索顺序加载恶意DLL。 受控环境里的有些样本和FireEye最近发布的FIN7组织新工具和技术(特别是BOOSTWRITE)报告里的样本描述吻合。 与BOOSTWRITE的样本比较,发现样本里的代码库是通用的还都带有Carbanak后门。
被利用的程序
Windows操作系统使用一种通用方法来查找需要加载到程序中的DLL。 攻击者很可能是利用这个特性让程序加载恶意DLL,这个技术被称为DLL搜索顺序劫持(或二进制植入)。
被利用的应用程序是FaceFodUninstaller.exe,从Windows 10 RS4(1803)这个版本开始就被安装在原版系统里的“%WINDR%System32WinBioPlugIns”文件夹内。 依赖“%WINDR%System32”目录里的文件winbio.dll,通常在父目录(“%WINDR%System32”)中可以找到。
图1:FaceFodUninstaller.exe导入表
这个可执行文件从一个名为“FODCleanupTask”的内置计划任务启动,这样驻留在机器上痕迹最少降低了被发现的可能性。这说明FIN7集团之后还会尝试用这种新的技术手段做攻击。
图2:Windows计划任务里的内置任务
BIOLOAD
加载的恶意样本文件名为WinBio.dll(注意大写字符)被攻击者放在跟FaceFodUninstaller.exe同目录内(“ WinBioPlugIns”),利用Windows默认DLL搜索顺序加载。原文件在%WINDIR%*里,这说明安装这个恶意文件,攻击者需要在受控机器上提权成administrator或SYSTEM帐户。
图3:受感染机器的WinBioPlugIns文件夹
与BOOSTWRITE相似,这个Loader也是用C++开发的。只导出一个函数,即facefodunstaller.exe导入的函数。
样本在2019年3月和7月编译以64位操作系统为目标。BOOSTWRITE在2019年5月编译(并且有签名)以32位计算机为目标。根据FIN7组织以前的报告,样本没伪造过二进制文件的编译时间戳。
当DLL启动时会检查进程命令行参数的数量决定下一步操作。当可执行文件是任务计划程序启动的没有命令行参数,恶意软件的工作方式如下:
- 在%TEMP%~bio<epoch_time>处创建日志文件。日志是不加密的文本。
- 一个32位随机大写字母的命令行参数子进程启动再次启动自身。
- 通过使用COM对象访问计划任务程序来建立持久化。 恶意软件会确保自身任务已经开启,并在Windows启动30秒后添加触发器启动任务,不等待空闲状态运行。
调用WinBioGetEnrolledFactors时,恶意软件加载原始winbio.dll并调用原始函数。
运行的进程在内存中加载和执行Payload DLL。先在%TEMP%~wrk<epoch_time>这个路径创建一个日志文件。然后基于环境变量用这种方式创建互斥体,让当前系统只运行一个实例:
BIOLOAD中还嵌入了加密的Payload DLL。与BOOSTWRITE相反,BIOLOAD不支持多个Payload。而且使用简单的XOR解密而不是用ChaCha密码来解密Payload,也没有访问远程服务器获取密钥。BIOLOAD是根据每台被感染的机器名量身定做的,因为需要依赖机器名来正确地解密密钥。
长度为16个字节的密钥嵌入在Loader程序中, 使用计算机名称的CRC32校验和作为种子,密钥的一部分会被密钥上的MurmurHash3结果覆盖。 用相关上下文丢失时无法运行的方式阻止沙箱检测,阻止研究人员分析Payload。
图4:MurmurHash3函数反汇编的开始
PE加载程序的实现与BOOSTWRITE中的实现相同。 日志文件名的格式也相似。
Carbanak后门
如上所述,Loader携带的Payload是Carbanak后门。 根据时间戳推断,从BIOLOAD提取的样本是后门更新过的版本,PE文件时间戳日期为2019年1月和4月。
值得注意的一个附加功能是,后门还会检查机器上除了Kaspersky,AVG和TrendMicro外,还有没有其他不同的反病毒(AnitVirus )软件, 但是跟先前检测手段不同,检查结果对后门的操作没有影响。
最后的想法
这是FaceFodUninstaller.exe被APT组织用为主机进程加载Payload的第一个公开案例。
跟FIN7最新工具有关的通用代码以及相同的技术和后门,可以把这个新Loader程序归到网络犯罪组里。 时间戳以及样本功能可以看出来BIOLOAD是BOOSTWRITE的早先版本。
由于Loader程序是为每台目标计算机专门编译的,并且需要管理权限才能部署,因此可以认为FIN7小组收集过目标网络有关的信息。
解决方案
恶意软件使用常规但隐秘且有效的方法在合法进程的上下文中执行Payload。
应该采取防护措施来检测这种恶意行为。 最近收购的FortiEDR –集成到FortiGate防火墙,FortiSIEM和FortiSandbox中的端点检测和响应解决方案–可以检测并阻止这种行为,可以帮助事件响应者快速缓解和响应此类威胁。
FortiClient能检测并阻止的IOC,病毒家族分别为W64/Inject.B!tr.spy和W64/Carbanak.A2EB!tr。
此外作为网络威胁联盟成员,威胁情报会与联盟其他成员实时共享,提供更好的保护帮助客户。
IOCs
WinBio.dll (scrubbed key and payload) SHA256
7bdae0dfc37cb5561a89a0b337b180ac6a139250bd5247292f470830bd96dda7
c1c68454e82d79e75fefad33e5acbb496bbc3f5056dfa26aaf1f142cee1af372
Carbanak SHA256
77a6fbd4799a8468004f49f5929352336f131ad83c92484b052a2eb120ebaf9a
42d3cf75497a724e9a9323855e0051971816915fc7eb9f0426b5a23115a3bdcb