查看原文
其他

九维团队-青队(处置)| 恶意样本分析之恶意软件的功能和持久化(六)

pwnda 安恒信息安全服务 2022-09-06

特别说明及声明

  1. 本文原文为K A, Monnappa. 2018年发表的《Learning Malware Analysis》,本文的相关内容均为笔者对相关内容的翻译及实践记录,仅供各位学术交流使用。另出于易读性考虑,对部分字句有所删改。


  2. 如各位需要引用,请做原文引用,格式如下所示:
    [序号]K A, Monnappa. LearningMalware Analysis[M]. 2018.06. Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK.

  3. 因文章整体内容较长,完整内容将会在本公众号拆分为多篇内容分别发出。本文为该系列的第六篇,往期内容请参见:

    恶意样本分析之恶意软件的功能和持久化(一)

    恶意样本分析之恶意软件的功能和持久化(二)

    恶意样本分析之恶意软件的功能和持久化(三)

    恶意样本分析之恶意软件的功能和持久化(四)

    恶意样本分析之恶意软件的功能和持久化(五)




2.5 IFEO 图像文件执行选项

(Image File Execution Options)



图像文件执行选项(IFEO)允许人们在调试器下直接启动一个可执行文件。它使开发者可以选择调试他们的软件,以调查可执行文件启动代码中的问题。开发者可以在以下注册表键下用其可执行文件的名称创建一个子键,并将调试器的值设置为调试器的路径。

Key: "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<executable name>" Value: Debugger : REG_SZ : <full-path to the debugger>

*左右滑动查看更多


进攻者利用这个注册表键来启动他们的恶意程序。为了演示这种技术,通过添加以下注册表项,将notepad.exe的调试器设置为计算器(calc.exe)进程。


现在,当你启动记事本时,它将被一个计算器程序启动(尽管它不是一个调试器)。这种行为可以在下面的屏幕截图中看到。


下面是一个恶意软件样本的例子(TrojanSpy:Win32/Small.M),它将其恶意程序iexplor.exe配置为Internet的调试器explorer, (iexplore.exe)。这是通过添加以下注册表值实现的。


在这种情况下,攻击者选择了一个看起来与合法的internet explorer可执行文件名相似的文件名。由于以下注册表项的存在,每当合法的internet explorer(iexplore.exe)被执行时,它就会被恶意程序iexplor.exe启动,从而执行恶意代码。

[RegSetValue] LSASSMGR.EXE:960 > HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\iexplore.exe\Debugger = C:\Program Files\Internet Explorer\iexplor.exe

*左右滑动查看更多


为了检测这种类型的持久性技术,你可以检查图像文件执行选项注册表项,看是否有与合法程序无关的修改。




2.6 无障碍项目



Windows操作系统提供了各种无障碍功能,如屏幕键盘、叙述者、放大镜、语音识别等。这些功能主要是为有特殊需要的人设计的。这些无障碍程序甚至无需登录系统就可以启动。


例如,许多这些辅助功能程序可以通过按下Windows+U组合键来访问,从而启动C:\Windows\System32\utilman.exe,或者你可以通过按五次shift键来启用粘性键,这将启动程序C:\Windows\System32\sethc.exe。


攻击者可以改变这些无障碍程序(如sethc.exe和utilman.exe)的启动方式,以执行他们选择的程序,或者他们可以使用cmd.exe来提升权限(权限升级)。攻击者利用粘性密钥(sethc.exe)功能,通过远程桌面(RDP)获得未经认证的访问


在Hikit Rootkit的案例中,合法的sethc.exe程序被替换成cmd.exe。Hikit Rootkit案例参考链接:

https://strontic.github.io/xcyclopedia/library/sethc.exe-8BA3A9702A3F1799431CAD6A290223A6.html

*左右滑动查看更多


这使得攻击者只需按五次shift键,就可以通过RDP以系统权限访问命令提示符。虽然在旧版本的Windows中,可以用另一个程序替换无障碍程序,但新版本的Windows执行了各种限制,如被替换的二进制文件必须位于%systemdir%,需要对x64系统进行数字签名,并且必须受Windows文件或资源保护(WFP/WRP)保护。


这些限制使得攻击者很难替换合法程序(如sethc.exe)。为了避免替换文件,敌方利用了图像文件执行选项(在上一节中涉及)。下面的注册表项将cmd.exe设置为sethc.exe的调试器;现在,攻击者可以使用RDP登录并按五次Shift键以获得对系统级命令行的访问。


使用这个外壳,攻击者甚至可以在认证之前执行任何任意的命令。以同样的方式,一个恶意的后门程序可以通过设置为sethc.exe或utilman.exe的debugger来执行。

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /t REG_SZ /v Debugger /d "C:\windows\system32\cmd.exe" /f

*左右滑动查看更多


在下面的例子中,当恶意软件样本(mets.exe)被执行时,它会运行以下命令,修改防火墙规则/注册表以允许RDP连接,然后添加一个注册表值,将任务管理器(taskmgr.exe)设为sethc.exe的调试器,这允许对手通过RDP访问taskmgr.exe(具有系统权限)。


使用这种技术,对手可以通过RDP杀死一个进程或启动/停止一个服务,甚至不需要登录到系统中。

[CreateProcess] mets.exe:564 > "cmd /c netsh firewall add portopening tcp 3389 all & reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f & REG ADD HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe /v Debugger /t REG_SZ /d %windir%\system32\taskmgr.exe /f"

*左右滑动查看更多


这种类型的攻击略微难以发现,因为攻击者要么用合法程序替换无障碍程序,要么利用合法程序。当然,如果你怀疑无障碍程序(sethc.exe)已被合法文件(如 cmd.exe 或 taskmgr.exe)取代,那么你可以将被取代的无障碍程序的哈希值与合法文件(cmd.exe 或 taskmgr.exe)的哈希值进行比较,以寻找匹配。哈希值匹配表明原始的 sethc.exe 文件被替换。你还可以检查图像文件执行选项的注册表项,看是否有任何可疑的修改。




2.7 启用的应用程序的DLLs(AppInit_DLLs)



Windows中的AppInit_DLLs功能提供了一种将自定义DLLs加载到每个交互式应用程序的地址空间的方法。一旦DLL被加载到任何进程的地址空间,它就可以在该进程的上下文中运行,并可以钩住已知的API来实现一个替代功能。


攻击者可以通过在以下注册表键中设置AppInit_DLLs值来实现其恶意DLL的持久性。这个值通常包含空格或以逗号分隔的DLLs列表。这里指定的所有DLLs都被加载到每个加载User32.dll的进程中。


由于User32.dll几乎被所有进程加载,这种技术使攻击者能够将他们的恶意DLL加载到大多数进程中,并在加载进程的上下文中执行恶意代码。除了设置AppInit_DLLs值,攻击者还可以通过将LoadAppInit_DLLs注册表值设置为1来启用AppInit_DLLs功能。在启用安全启动的Windows 8和更高版本中,AppInit_DLLs功能被禁用。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows

*左右滑动查看更多


以下截图显示了由T9000后门添加的AppInit DLL条目。

https://researchcenter.paloaltonetworks.com/2016/02/t9000-advanced-modular-backdoor-uses-complex-anti-analysis-techniques/

*左右滑动查看更多



由于添加了前面的注册表项,当任何新进程(加载User32.dll)启动时,都会将恶意DLL(ResN32.dll)加载到其地址空间。下面的截图显示了重启系统后加载恶意DLL(ResN32.dll)的操作系统的进程。由于这些进程大多以高完整性级别运行,它允许对手以高权限执行恶意代码。


为了检测这种技术,你可以寻找在AppInit_DLLs注册表的可疑条目,这些条目与环境中的合法程序无关。你还可以寻找任何由于加载恶意DLL而表现出异常行为的进程。


(未完待续)




—  往期回顾  —



关于安恒信息安全服务团队安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存