【技术分享】深入分析商业间谍FIN7黑客组织使用的权限维持技术

小龙 2017-5-26 HACK 0 0

 

http://p0.qhimg.com/t01292ad4540807882d.jpg

前言


今年年初,Mandiant(美国麦迪安网络安全公司)发现了多起网络攻击事件,我们认为这些攻击事件为FIN7黑客组织所为,这是一个经济利益驱使的黑客组织,该组织的恶意攻击行为最早可追溯到2015年。在各种不同的环境中,FIN7利用CARBANAK后门,该组织在以前的攻击场景中经常使用该后门。

该黑客组织发起的攻击事件的独特之处在于如何安装CARBANAK后门进行权限维持。Mandiant(美国麦迪安网络安全公司)分析发现该组织利用shim数据库在不同的系统环境下实现权限维持。shim将恶意的内存补丁注入到服务控制管理器(“services.exe”)进程中,然后产生一个CARBANAK后门进程。

Mandiant(美国麦迪安网络安全公司)分析指出,FIN7还使用这种技术来安装payment card采集工具用于权限维持。这是FIN7黑客组织以前的方法,为了注入恶意进程维持权限会先安装一个恶意的Windows服务。

Shim功能概要(解决古老的程序兼容问题)


引用Microsoft的官方说明,程序兼容Shim(application compatibility shim)是一个可以通过hook透明拦截API的小型函数库,可以篡改传输函数的参数值,可以处理一些自己的操作,也可以执行其他的操作(例如存储在当前系统中的其他位置的代码)。

现如今,Shim的存在主要解决的问题是处理一些古老应用程序的兼容性问题(译者注:部分古老的应用程序采用一些过时或已被弃用的API,都过Shim可以hook这些API替换为较流行的函数,进而解决程序的兼容性问题)。可以看到,Shim是一个合法的功能,出于一个善意的目的,去解决系统迭代产生的问题,由于技术的两面性,其功能有可能被滥用执行一些恶意的操作。Mandiant(美国麦迪安网络安全公司)的安全顾问曾经在BruCon和BlackHat讨论过Shim数据库被滥用可能产生的安全问题。

Shim数据库注册表


在当前操作系统上注册shim数据库有多种方式,其中一种方法就是使用系统内置的“sdbinst.exe”命令行工具。图1展示的就是使用“sdbinst.exe”命令行工具注册shim时创建的两个注册表键。

http://p7.qhimg.com/t01c3ac31559d84eb0f.png

图1:Shim数据库注册表键

一旦shim数据库在系统上成功注册,shim数据库文件(后缀名为“.sdb”)将被复制到"C:\Windows\AppPatch\Custom"(32位shim)目录下(64位shim将被复制到"C:\Windows\AppPatch\Custom\Custom64"目录下)。

恶意Shim数据库安装


在操作系统上安装和注册恶意shim数据库,FIN7使用自定义经过Base64编码的PowerShell脚本,该脚本的功能是运行“sdbinst.exe”命令行工具注册一个经过修改插入恶意代码的shim数据库,图2为经过还原的FIN7 PowerShell脚本中解码的部分截图,列出了执行的命令及参数。

http://p1.qhimg.com/t014332135ca3f84bab.png

图2:FIN7 PowerShell脚本安装自定义Shim数据库文件的部分截图

FIN7黑客组织使用“sdbinst.exe”命令行工具在目标操作系统上创建和注册不同命名规则的shim数据库文件。但有一个共同点是,都会创建一个后缀名为“.tmp”的Shim数据库文件(如图3所示)。

http://p6.qhimg.com/t01b8b2550e30021074.png

图3:恶意Shim数据库文件示例

当前的恶意shim数据库文件再操作系统上注册后,一个后缀名为“.sdb”,文件名为随机GUID值的shim数据库文件(恶意文件)将在其64位的默认目录("C:\Windows\AppPatch\Custom\Custom64")下创建,如图4所示。该shim数据库文件具有与最初在“C:\Windows\Temp”目录下创建的文件具有相同的MD5 hash值。

http://p8.qhimg.com/t01f2b8fd36c344293c.png

图4:注册后的shim数据库文件

除此之外,与之相关的注册表键也将在shim数据库注册表中创建。图5展示了与此shim安装相关的注册表键值关系。

http://p6.qhimg.com/t0111e2e8a00e079473.png

图5:注册表键值关系

用于shim数据库注册表的数据库描述(DatabaseDescription)“Microsoft KB2832077”是很有意思的,因为这个KB编号不是一个Microsoft官方发布的更新补丁编号。如图6所示,该描述出现在受影响的操作系统中的Windows控制面板的已安装程序列表中。

http://p9.qhimg.com/t0191dd4a97ae0ea389.png

图6:作为已安装应用程序的Shim数据库

恶意Shim数据库细节分析


经过研究分析,Mandiant(美国麦迪安网络安全公司)分析出FIN7黑客组织向全版本操作系统(32位、64位)中的“services.exe”中注入自定义的Shim数据库(将原生Shim数据库文件植入CARBANAK后门payload)。当操作系统启动“services.exe”进程执行时,CARBANAK后门payload将会执行。shim数据库文件包含第一阶段加载的shellcode,其余的shellcode payload存储在注册表键中。图7列出了FIN7黑客组织利用的解析shim数据库文件。

http://p1.qhimg.com/t01a6d6e0c85c3a4492.png

图7:解析shim数据库

对于第一阶段加载的程序,FIN7黑客组织改写了services.exe进程中相对虚拟地址 (RVA)“0x0001407c”对应“ScRegisterTCPEndpoint” 函数的代码,执行带有恶意shellcode的shim数据库。新的“ScRegisterTCPEndpoint”函数(shellcode)包含了对“\REGISTRY\MACHINE\SOFTWARE\Microsoft\DRM”路径的引用。该路径下的内容为存贮在操作系统中其余的恶意shellcode和CARBANAK DLL(FIN7黑客组织使用的后门程序)payload。

图8展示了在恢复的shim数据库文件中解析补丁结构的部分截图

http://p7.qhimg.com/t0128de5fbeb184c38c.png

图8:从shim数据库文件中解析补丁结构

存储在注册表“HKLM\SOFTWARE\Microsoft\DRM”中的shellcode可以利用ntdll中的API函数“RtlDecompressBuffer”进行解压缩出payload。该程序在执行CARBANAK DLL(FIN7黑客组织使用的后门程序)payload的入口函数之前会休眠4分钟。一旦payload加载进内存,就会创建一个包含CARBANAK DLL名为“svchost.exe”的新进程。

总结一下完整的攻击过程


图9是一个完整的行为流程图,利用shim数据库向64位的“services.exe”进程中注入shellcode最终实现权限维持。

http://p4.qhimg.com/t01d81e225eabc41f4e.png

图9:Shim数据库代码注入过程

如何检测电脑是否被该恶意代码感染?


Mandiant(美国麦迪安网络安全公司)推荐了以下几种方式检测操作系统是否受到这种恶意Shim数据库的感染。

1.监控默认shim数据库下新创建的shim数据库文件:“C:\Windows\AppPatch\Custom”(32位),“C:\Windows\AppPatch\Custom\Custom64”(64位)

2.监控以下注册表键的创建或修改事件:“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Custom”和“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\InstalledSDB”

3.监控进程执行事件和恶意使用“sdbinst.exe”命令行工具执行的参数的异常行为。


转载请注明来自华盟网,本文标题:《【技术分享】深入分析商业间谍FIN7黑客组织使用的权限维持技术》

喜欢 (0) 发布评论