九维团队-青队(处置)| 恶意样本分析之恶意软件的功能和持久化(五)
特别说明及声明
本文原文为K A, Monnappa. 2018年发表的《Learning Malware Analysis》,本文的相关内容均为笔者对相关内容的翻译及实践记录,仅供各位学术交流使用。另出于易读性考虑,对部分字句有所删改。
如各位需要引用,请做原文引用,格式如下所示:
[序号]K A, Monnappa. LearningMalware Analysis[M]. 2018.06. Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK.因文章整体内容较长,完整内容将会在本公众号拆分为多篇内容分别发出。本文为该系列的第五篇,往期内容请参见:
2
恶意软件的持久性方法
通常情况下,对手希望他们的恶意程序留在被攻击的计算机上,甚至在Windows重新启动时也是如此。这是需要通过各种持久性方法实现的;这种持久性允许攻击者留在被攻击的系统上,而不需要重新感染它。有许多方法可以在每次Windows启动时运行恶意代码。
在本节中,我们将了解对手使用的一些持久性方法。本节所涉及的一些持久性技术允许攻击者以高权限执行恶意代码(权限升级)。
2.1 运行注册表键
攻击者用来在重启后自动执行的最常见的持久性机制之一是通过在运行注册表键上添加一个条目来实现。被添加到运行注册表键的程序在系统启动时被执行。
下面是一个最常见的运行注册表键的列表。除了这里提到的那些之外,恶意软件还可以将自己添加到各种自动启动位置。了解各种自动启动位置的最好方法是使用Sysinternals的AutoRuns工具。
浏览网站:
https://docs.microsoft.com/en-us/sysinternals/ downloads/autoruns
*左右滑动查看更多
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
*左右滑动查看更多
在下面的例子中,执行时,恶意软件(bas.exe)首先在Windows目录中投放一个可执行文件(LSPRN.EXE),然后在运行注册表键中添加以下条目,以便每次系统启动时恶意程序可以启动。
从注册表项可以看出,恶意软件正试图使其二进制文件看起来像一个与打印机有关的应用程序。
[RegSetValue] bas.exe:2192 > HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run\Printe rSecurityLayer = C:\Windows\LSPRN.EXE
*左右滑动查看更多
为了检测使用这种持久性方法的恶意软件,我们可以监测与已知程序无关的运行注册表键的变化,还可以使用Sysinternal的AutoRuns工具来检查自动启动位置的可疑条目。
2.2 预定的任务
攻击者使用的另一种持久性方法是安排一个任务,让他们在指定时间或在系统启动时执行他们的恶意程序。诸如schtasks和at之类的Windows工具通常被攻击者用来安排程序或脚本在所需的日期和时间执行。
通过使用这些工具,攻击者可以在本地计算机或远程计算机上创建任务,只要用于创建任务的账户是管理员组的一部分。在下面的例子中,恶意软件(sub.exe)首先在%AllUsersProfile%中创建一个名为service.exe的文件。
在%AllUsersProfile%\WindowsTask\目录下创建一个名为service.exe的文件,然后调用cmd.exe,该文件又使用schtasks Windows工具来创建一个持久的计划任务。
[CreateFile] ssub.exe:3652 > %AllUsersProfile%\WindowsTask\service.exe [CreateProcess] ssub.exe:3652 > "%WinDir%\System32\cmd.exe /C schtasks /create /tn MyApp /tr %AllUsersProfile%\WindowsTask\service.exe /sc ONSTART /f"
[CreateProcess] cmd.exe:3632 > "schtasks /create /tn MyApp /tr
%AllUsersProfile%\WindowsTask\service.exe /sc ONSTART /f
*左右滑动查看更多
为了检测这种类型的持久性,可以使用Sysinternals Autoruns或任务调度器工具来列出当前安排的任务。应该考虑监控那些与合法程序无关的任务的变化。还可以监控传递给系统工具(如cmd.exe)的命令行参数,这些工具可能被用来创建任务。
任务也可能是使用管理工具创建的(如 PowerShell 和 Windows Management Instrumentation),所以适当的日志和监控应该有助于检测这种技术。
2.3 启动文件夹
攻击者可以通过在启动文件夹中添加其恶意二进制文件来实现持久性。当操作系统启动时,启动文件夹会被查找,驻留在该文件夹中的文件会被执行。Windows操作系统维护两种类型的启动文件夹。(a) 用户范围和(b) 系统范围,如下所示。
驻留在用户启动文件夹中的程序只对特定用户执行,而驻留在系统文件夹中的程序则在任何用户登录系统时执行。要使用全系统的启动文件夹实现持久性,需要管理员权限。
C:\%AppData%\Microsoft\Windows\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
*左右滑动查看更多
在下面的例子中,恶意软件(Backdoor.Nitol)首先在%AppData%目录中投放了一个文件。然后,它创建了一个快捷方式(.lnk),指向所投放的文件,然后将该快捷方式添加到启动文件夹中。这样,当系统启动时,被丢弃的文件会通过快捷方式(.lnk)文件执行。
[CreateFile] bllb.exe:3364 > %AppData%\Abcdef Hijklmno Qrs\Abcdef Hijklmno Qrs.exe
[CreateFile] bllb.exe:3364 > %AppData%\Microsoft\Windows\Start Menu\Programs\Startup\Abcdef Hijklmno Qrs.exe.lnk
*左右滑动查看更多
为了检测这种类型的攻击,你可以监测在启动文件夹中添加的条目和做出的更改。
2.4 Winlogon注册表项
攻击者可以通过修改Winlogon进程使用的注册表项来实现持久性。Winlogon进程负责处理交互式用户登录和注销。一旦用户被验证,winlogon.exe进程就会启动userinit.exe,它运行登录脚本并重新建立网络连接。userinit.exe然后启动explorer.exe,它是用户的默认外壳。
winlogon.exe进程启动userinit.exe是由于以下的注册表值。这个条目指定了当用户登录时,哪些程序需要由Winlogon执行。
默认情况下,这个值被设置为userinit.exe的路径(C:\Windows\system32\userinit.exe)。攻击者可以改变或添加另一个包含恶意可执行文件路径的值,然后将由winlogon.exe进程(当用户登录时)启动。
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
*左右滑动查看更多
以同样的方式,userinit.exe查询以下注册表值来启动默认的用户外壳。默认情况下,这个值被设置为explorer.exe。攻击者可以改变或添加另一个包含恶意可执行程序名称的条目,然后由userinit.exe启动。
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
*左右滑动查看更多
在下面的例子中,Brontok蠕虫通过用其恶意的可执行文件修改下列Winlogon注册表值来实现持久性。
为了检测这种类型的持久性机制,可以使用Sysinternals Autoruns工具。如前所述,还可以监测注册表中的可疑条目(与合法程序无关)。
(未完待续)
— 往期回顾 —
关于安恒信息安全服务团队安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。