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

admin 2023年2月16日20:45:18评论21 views字数 5364阅读17分52秒阅读模式

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

特别说明及声明

  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.10 服务




服务是一个在后台运行的程序,没有任何用户界面,它提供操作系统的核心功能,如事件记录、打印、错误报告等。拥有管理员权限的攻击者可以通过将恶意程序安装为服务或修改现有的服务而在系统上持续存在。


对于攻击者来说,使用服务的好处是,它可以被设置为在操作系统启动时自动启动,而且它大多以SYSTEM这样的特权账户运行;这使得攻击者可以提升权限。攻击者可以将恶意程序实现为EXE、DLL或内核驱动,并作为服务运行。


Windows支持各种服务类型,下面概述了恶意程序使用的一些常见服务类型。

• Win32OwnProcess。服务的代码以可执行文件的形式实现,它作为一个单独的进程运行。

• Win32ShareProcess。服务的代码以DLL的形式实现,它从一个共享主机进程(svchost.exe)中运行。

• 内核驱动服务。这种类型的服务在一个驱动程序(.sys)中实现,它被用来在内核空间执行代码。


Windows在注册表的

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices键下存储已安装的服务列表及其配置。每个服务都有自己的子键,由指定服务如何、何时以及是否在EXE、DLL或内核驱动中实现的值组成。


例如,Windows安装程序服务的名称是msiserver,在下面的截图中,

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices下有一个与服务名称相同的子键。


ImagePath值指定这个服务的代码在msiexec.exe中实现,Type值为0x10(16)告诉我们它是Win32OwnProcess,Start值0x3代表SERVICE_DEMAND_START,这意味着这个服务需要手动启动。

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


要确定与常量值相关的符号名称,大家可以参考MSDN的CreateService() API文档:

https://docs.microsoft.com/zh-cn/windows/win32/api/winsvc/nf-winsvc-createservicea?redirectedfrom=MSDN

*左右滑动查看更多


或者可以通过提供服务名称使用sc工具查询服务配置,如下所示。这将显示在注册表子键中发现的类似信息。

C:>sc qc "msiserver"[SC] QueryServiceConfig SUCCESSSERVICE_NAME: msiserverTYPE : 10 WIN32_OWN_PROCESSSTART_TYPE : 3 DEMAND_STARTERROR_CONTROL : 1 NORMALBINARY_PATH_NAME : C:Windowssystem32msiexec.exe /V LOAD_ORDER_GROUP :TAG : 0DISPLAY_NAME : Windows InstallerDEPENDENCIES : rpcssSERVICE_START_NAME : LocalSystem

*左右滑动查看更多


现在让我们看一下Win32ShareProcess服务的例子。Dnsclient服务的服务名称是Dnscache,服务的代码是在DLL中实现的。当一个服务被实现为DLL(服务DLL)时,ImagePath注册表值通常会包含svchost.exe的路径(因为那是加载服务DLL的进程)。


要确定与服务相关的DLL,你将不得不查看ServiceDLL值,它存在于HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices\Parameters子键下。


下面的截图显示了与Dnsclient服务相关的DLL(dnsrslvr.dll);这个DLL被通用主机进程svchost.exe加载。

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


攻击者可以通过许多方式创建服务。下面概述了一些常见的方法。


• sc工具

恶意软件可以调用cmd.exe,并可能运行sc命令,如sc create和sc start(或net start),分别创建和启动服务。在下面的例子中,恶意软件执行sc命令(通过cmd.exe)来创建和启动一个名为update的服务。

 [CreateProcess] update.exe:3948 > "%WinDir%System32cmd.exe /c sc create update binPath= C:malwareupdate.exe start= auto && sc start update "

*左右滑动查看更多


• 批量脚本

恶意软件可以投放一个批处理脚本,并执行前面提到的命令来创建和启动服务。在下面的例子中,恶意软件(Trojan:Win32/Skeeyah)投放了一个批处理脚本(SACI_W732.bat)并执行批处理脚本(通过cmd.exe),这反过来又创建并启动了一个名为Saci的服务。

 [CreateProcess] W732.exe:2836 > "%WinDir%system32cmd.exe /c %LocalAppData%Temp6DF8.tmpSACI_W732.bat "[CreateProcess] cmd.exe:2832 > "sc create Saci binPath= %WinDir%System32Saci.exe type= own start= auto" [CreateProcess] cmd.exe:2832 > "sc start Saci"

*左右滑动查看更多


• Windows API

恶意软件可以使用Windows API,如CreateService()和StartService()来创建和启动服务。当你在后台运行sc工具在后台运行时,它使用这些API调用来创建和启动服务。考虑一下下面这个NetTraveler恶意软件的例子。执行时,它首先释放一个dll。

 [CreateFile] d3a.exe:2904 > %WinDir%System32FastUserSwitchingCompatibilityex.dll

*左右滑动查看更多


然后,它使用OpenScManager()API打开一个服务控制管理器的句柄,并通过调用CreateService()API创建一个Win32ShareProcess类型的服务。第二个参数指定了服务的名称,在本例中是FastUserSwitchingCompatiblity。

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


在调用CreateService()后,服务被创建,以下注册表键被添加到服务配置信息中。

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


然后,它在上一步创建的注册表键下创建一个参数子键。

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


之后,它丢弃并执行一个批处理脚本,设置注册表值(ServiceDll),将DLL与创建的服务联系起来。批处理脚本的内容在这里显示。

@echo off@reg add"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesFastUserSwitchingCompatibilityParameters" /v ServiceDll /t REG_EXPAND_SZ /dC:Windowssystem32FastUserSwitchingCompatibilityex.dll

*左右滑动查看更多


由于创建了Win32ShareProcess服务,当系统启动时,服务控制管理器(services.exe)会启动svchost.exe进程,该进程又会加载恶意的ServiceDLL:

FastUserSwitchingCompatibilityex.dll。

注:PowerShell和WMI:也可以使用管理工具创建服务PowerShell:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-service?view=powershell-5.1Window Management Instrumentation(WMI)高级接口:https://msdn. microsoft.com/en-us/library/aa394418(v=vs.85.aspx:https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-service?redirectedfrom=MSDN

*左右滑动查看更多


攻击者可以修改(劫持)现有的服务,而不是创建一个新的服务。通常情况下,攻击者会劫持一个未使用或禁用的服务。这使得检测变得稍微困难,因为如果你试图找到非标准或未被识别的服务,你将错过这种类型的攻击。


参考BlackEnergy恶意软件投放器的例子,它劫持了现有的服务以在系统上持续存在。在执行时,BlackEnergy用恶意的aliide.sys驱动替换了驻留在system32drivers目录下的名为aliide.sys的合法驱动(与名为aliide的服务相关)。


替换驱动程序后,它修改了与aliide服务相关的注册表项,并将其设置为自动启动(当系统启动时,该服务自动启动),如以下事件所示。

[CreateFile] big.exe:4004 > %WinDir%System32driversaliide.sys [RegSetValue] services.exe:504 > HKLMSystemCurrentControlSetservicesaliideStart = 2

*左右滑动查看更多


下面的截图显示了修改前后aliide服务的服务配置。

关于BlackEnergy3 big dropper的详细分析,可阅读作者的博文:https://cysinfo.com/blackout-memory-analysis-of-blackenergy-big-ropper/
*左右滑动查看更多

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


为了检测此类攻击,请监测与合法程序无关的服务注册表项的变化。寻找与服务相关的二进制路径的修改,以及服务启动类型的变化(从手动到自动)。你还应该考虑监控和记录sc、PowerShell和WMI等工具的使用情况,这些工具可用于与服务互动。Sysinternals AutoRuns工具也可以用来检查服务的使用情况,以实现持久性。


只要微软Office应用程序启动,敌方就可以持续并执行DLL中的恶意代码。

更多细节,请参见http://www.hexacorn.com/blog/2014/04/16/beyond-good-ol-run-key-part-10/ https://unit42.paloaltonetworks.com/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/。
关于各种持久化方法的进一步细节,以及了解攻击者的战术和技术,请参考MITRE的ATT&CK维基:https://attack.mitre.org/wiki/persistence

*左右滑动查看更多




小结




恶意软件使用各种API调用与系统进行交互,在本系列的文章中,我们了解到恶意二进制文件是如何使用API调用来实现各种功能的,同样还介绍了攻击者使用的不同的持久性技术,这些技术使它们即使在系统重启后也能驻留在受害者的系统中(其中一些技术允许恶意二进制软件以高权限执行代码)。


在后续的文章中,我们还将会更新更多内容,帮助大家了解防范攻击者使用不同的代码注入技术,以及如何在合法进程的上下文中执行恶意代码等内容,敬请关注。


(完)



—  往期回顾  —

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

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

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

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



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

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

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


原文始发于微信公众号(安恒信息安全服务):九维团队-青队(处置)| 恶意样本分析之恶意软件的功能和持久化(八)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月16日20:45:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   九维团队-青队(处置)| 恶意样本分析之恶意软件的功能和持久化(八)http://cn-sec.com/archives/1284272.html

发表评论

匿名网友 填写信息