FireEye红队工具失窃事件跟进分析
2020-12-14 15:33:49 Author: www.4hou.com(查看原文) 阅读量:239 收藏

1.概述

火眼公司(FireEye)红队工具失窃事件曝光后,安天CERT迅速跟进,发布《FireEye红队工具失窃事件分析和思考》[1](点击查看),报告中以威胁框架视角对失窃的工具进行了功能点评,回顾了历史上多起网络军火失窃和扩散事件,并对本次事件做出谨慎地分析猜测。随着针对该事件的深入分析,安天CERT重新梳理了本次失窃工具对应的ATT&CK能力映射图谱,并对相应的能力进行评估与研判。

安天CERT利用FireEye的开源虚拟机测试套件CommandoVM线索与公开的规则对样本库进行扫描筛选,梳理了一些疑似FireEye的失窃工具并结合情报对工具进行初步分类:基于开源项目的工具、基于内置Windows二进制文件的工具(利用白文件实现免查杀功能的工具)、FireEye红队自研工具以及目前未确认的部分工具。其中自研工具包括侦查工具、持久化工具、内存转储工具、恶意宏模板工具以及利用D语言、Golang、C#等语言编写的后门程序。安天CERT对其中FireEye的部分自研工具进行了分析并评估可能产生的影响,同时针对部分相关规则使用了小规模白名单集合测试其误报率和规则质量。

2.从威胁框架视角对红队工具的能力评估

安天CERT从威胁框架视角对本次泄露的红队工具进行了相应能力评估,这些能力更多的代表其基础能力和模仿其他APT组织的能力,并不代表对FireEye全部红队能力的评估。

威胁框架是认知威胁的重要方法,安天CERT通过对其失窃工具的战术、技术分解,发现从初始访问到命令与控制阶段除收集外的全方位、无死角地覆盖威胁框架的各个阶段。安天CERT重新梳理本次被窃工具对应的ATT&CK能力映射图谱,可以看出本批工具可以实现的战术动作覆盖了ATT&CK威胁框架12个战术阶段中的10个,可以实现118个技术动作。

· 失窃的红队工具包含极少的载荷,其主要目的是模仿潜在的攻击者并使用工具对企业进行攻击,用来评估企业的检测和响应能力以及系统的安全状况,而非直接进行恶意操作,因此在收集、渗出和影响阶段极少有所动作,通常这三个阶段的战术动作主要由恶意载荷完成。

· 在初始访问阶段,红队工具具备水坑攻击、鱼叉钓鱼攻击、第三方应用程序和外部服务的动作。入侵供应链、利用受信关系和有效账户通常在实际攻击中使用的方法和资源,一般不使用工具本身参与,所以红队工具未覆盖这三项战术动作也很正常;

· 在执行阶段,通常由工具、漏洞利用、其他载荷等方式完成,红队工具在执行阶段覆盖的战术动作占一半以上,说明了该批工具在执行阶段利用的技术点较多;

· 在持久化阶段,大多也由载荷自身完成,所以该批红队工具在持久化阶段只占一成多的战术动作点;

· 在防御规避阶段,红队工具覆盖了三分之一的战术动作点,像绕过UAC、混淆和反混淆等方式都是为了躲避或绕过安全防御机制,说明其非常注重战术隐蔽;

· 在提权阶段,红队工具的覆盖率接近四成,但却包含了漏洞相关的所有动作,而利用漏洞提权是使用较多且极为有效的方式,说明其提权阶段同样具备较强的能力;

· 在凭证访问阶段,红队工具有三成的覆盖,其中包含获取文件、注册表和转储凭证,而操纵账户、输入捕捉、欺骗用户输入、网络嗅探和收集私钥等动作并不覆盖;

· 在发现阶段,红队工具除浏览器书签动作外,其他战术动作全覆盖,浏览器书签可能会被用于研究使用者经常访问的网站,这种资源通常被用于水坑攻击,但在已经入侵的系统中,浏览器书签已无大用,所以红队工具不具备发现浏览器书签可以理解。除此之外,所有的硬件、软件、用户、服务、共享、进程等信息全部是发现的目标,发现这些的目的是为了提高下一阶段横向移动的成功率;

· 在横向移动阶段,红队工具未使用易于发现的可移动介质复制和污染共享内容的战术动作,更多的是使用远程服务、认证和漏洞等方式进行横向移动;

· 在命令与控制阶段,红队工具覆盖了将近一半的战术动作,多为使用协议、端口、服务和远程访问工具进行通信,通信过程覆盖了编码和混淆数据,以逃避安全软件检测和发现。

结合以上这些特点可以看出,红队工具在多个阶段利用开源框架、无文件攻击、多种语言、白文件等多种技术和战术进行隐蔽性动作操作。

图 2-1 红队工具对应的ATT&CK映射图谱

3.FireEye红队工具的功能梳理归类

2019年3月28日,FireEye发布了一个包含超过140个开源Windows渗透工具包,该工具集名为“CommandoVM”[2]。FireEye推出的CommandoVM套件面向Windows平台构建,属于此前发布的FLARE VM套件的全新迭代版本,CommandoVM专攻逆向工程和恶意软件分析,功能也更加全面。其工具集包含:命令与控制工具集、开发语言工具集、规避检测工具集、信息收集工具集、网络工具集、密码攻击工具集和漏洞分析工具集等13类工具集。安天CERT利用FireEye的开源虚拟机测试套件CommandoVM与公开的规则线索匹配到了大量工具。

针对失窃红队工具进行初步分类为以下4类:

1、基于开源项目的21款工具,包含ADPassHunt、Beacon、Beltalowda等。在这其中,安天CERT利用FireEye提供的规则线索通过分析识别出多个CommandoVM中的工具,通过研判特征规则中提供的工具信息发现了4款可能是FireEye失窃的工具对应的公开发布版本,分别为SharpHound、Rubeus|Fluffy、Seatbelt、SharpSploit,其中3个源码生成的渗透工具程序可被FireEye提供的YARA规则命中,另一个为同家族老版本渗透工具。

2、基于内置的Windows二进制文件的5款工具,包含DueDLLigence、MSBuildMe、NetshShellCodeRunner等;

3、FireEye红队自研工具24款,包含Dshell、Excavator、GetDomainPasswordPolicy等;其中包括侦查工具、持久化工具、内存转储工具、恶意宏模板工具以及利用D语言、Golang等编写的后门程序;

4、目前未确认的工具,包含AllTheThings、CoreHound、Justask等。

具体工具功能清单详见附录。

4.从自研工具深度分析角度评估可能产生的影响

安天CERT对国外研究人员公布出的针对规则碰撞的哈希文件[3]进行了二次梳理,并针对部分自研工具进行了深入分析,以评估可能产生的影响。

图4-1研究人员公布的规则对应的哈希

在红队失窃的四类工具中,开源工具与内置Windows二进制文件的工具,属于开源技术,基于安全厂商的技术积累可有效防范;但自研工具与暂时未确认的工具部分,由于其未知的风险不能有效评估,一旦失窃被大规模利用,会将专属高级攻击能力转化为普遍的攻击能力,从而造成大面积攻击事件,导致安全产品未能及时更新产品出现攻防失衡。

4.1 PGF——后门生成工具

PGF是FireEye红队一个利用各种“白利用”技术执行的后门生成工具。该工具实现对载荷进行加密,并注入到系统进程中解密执行,捕获的载荷为标准的CobaltStrike远控程序。

利用白文件实现免查杀功能的技术被称之为“LOLBins”(Living-Off-the-Land Binaries),这个概念最初在2013年DerbyCon黑客大会由Christopher Campbell和Matt Graeber创造,最终由Philip Goh提出。

表 4-1样本标签

image.png

该样本是一个C#语言编写的进程注入器,目的是在目标机器执行相关载荷,其注入的恶意代码部分可以随意修改替换,注入代码通过base64加密存在样本中,在样本执行时解密还原使用。

图4-2加密的注入代码

本例样本注入代码为CobaltStrike生成的DLL远控功能载荷,样本利用Windows系统进程SearchProtocolHost.exe,对其进行注入并执行。

图4-3创建进程并注入解密的代码(DLL)

解密后的代码为典型CobaltStrike生成的针对Windows系统的载荷。

图4-4 CobaltStrike载荷

4.2 ResumePlease——Microsoft Office宏恶意软件模板

ResumePlease是一个Microsoft Office宏恶意软件模板,实质上为一段VBA恶意代码,主要功能是提取Excel表格中保存的数据转为可执行程序,释放到指定目录中并运行。因此,该工具的使用必须与具备恶意载荷的Excel表格相结合,才能完成一个恶意文档的制作,进而攻击者可利用该恶意文档实现对目标的鱼叉式钓鱼攻击。

表 4-2样本标签

image.png

当文档被打开时,执行下面的函数:

图4-5文档打开时执行的相关函数

writeOutHeader的功能是读取Excel中保存的数据,生成恶意程序DisplayMon.exe。

图4-6 writeOutHeader函数代码

writeOutFooter的功能是读取Excel中保存的数据,生成文件DismCore.dll。

图4-7 writeOutFooter

DoStuff的功能是通过WMI服务运行恶意程序DisplayMon.exe,再进一步调用DLL文件执行。

图4-8 DoStuff

5.从FireEye提供的检测规则的误报情况看规则质量

为遏制事件可能发生的次生影响,FireEye提供了包括HASH列表、漏洞编号和YARA等格式的扩展规则,用于服务其全球客户。安天CERT对部分相关规则进行了小规模白名单集合误报率测试,发现了一些问题。

表 5-1误报样本详情

image.png

经安天分析人员判定,针对规则“APT_Backdoor_Win_DShell_2”和“APT_Backdoor_Win_GoRat_Memory”匹配的大部分样本,不属于DShell后门和GoRat(意为Go语言编写的远程控制工具)。

其中名为“APT_Backdoor_Win_DShell_2”的规则,用于检测DShell后门,但在测试结果中发现该规则匹配到D语言的编译工具和库管理文件。目前来看该规则提取自D语言编译工具rdmd,规则提取不够严谨,安天分析人员在一个百万级的白名单集合测试中,其规则命中的多个文件经人工分析大部分为正常文件。所以该条规则如果不结合场景信息使用,可能会导致误判正常文件的情况。

图 5-1 “APT_Backdoor_Win_DShell_2” 规则

名为“APT_Backdoor_Win_GoRat_Memory”规则,其原意应该是检测运行于Windows平台的GoRat样本,但在测试结果中,该规则误报了一个Android平台下的视频播放器程序。由于该规则对各字符串的匹配条件采用“or”(“或”)的方式,匹配其中的部分字符串即报警,导致该条规则误报率很高。

图 5-2 “APT_Backdoor_Win_GoRat_Memory”规则

从规则匹配的样本在VT中的检测结果看,主流的安全厂商在应对此次FireEye失窃事件时,并未盲目采用FireEye提供的检测规则。

目前,安天全线产品包含安天智甲终端防御系统(IEP)、安天探海威胁检测系统(PTD)、安天追影威胁分析系统(PTA)均能有效检出相关工具。安天威胁情报客户,亦可以通过安天威胁情报综合分析平台(ATID)查询相关工具的关联信息。安天CERT会持续跟进该事件最新情况与动态,持续公开针对泄露工具的分析与评估。

6.附录:工具功能说明

红队工具合计60款,清单信息如下表所示:

表6-1 FireEye红队失窃工具功能清单

工具分类

工具名称

工具介绍

基于开源项目的工具

ADPassHunt

ADPassHunt是一个凭据窃取工具,用于捕获Active Directory(AD)凭据,并通过执行组件来寻找Group Policy Preferences (GPP)、Autoruns和AD对象中的密码。该工具的YARA规则中包含两个体现工具功能的字符串:Get-GPPPasswords 和Get-GPPAutologons 。Get-GPPPassword 是一个PowerShell脚本,用于检索通过GPP推送的帐户的明文密码和其他信息。Get-GPPAutologons 是另一个PowerShell脚本,可从GPP推送的自动登录条目中检索密码。这些脚本是PowerSploit中的功能,PowerSploit是结合了PowerShell模块和脚本的进攻型安全框架,可用于帮助渗透测试人员在所有阶段的评估。

Beacon

该Beacon工具基于CobaltStrike Beacon。Beacon是攻击者用于实现多个目标而使用的CobaltStrike有效载荷,例如实现持久性、执行、权限提升、凭据转储、横向移动和通过HTTP、HTTPS、DNS、SMB和TCP协议进行的命令和控制(C2)通信等功能。Beacon工具利用内置的Windows二进制文件(例如msbuild.exe、Microsoft.Workflow.Compiler.exe和regsvr32.exe)来执行任意有效载荷,以及使用searchindexer.exe进行进程注入以逃避防御。Beacon工具对这些二进制文件进行重命名,试图通过伪装逃避基于名称的检测规则。

Beltalowda

Beltalowda工具基于开源工具SeatBelt。Seatbelt是一个由C#编写的从攻击和防御角度的主机安全检查的工具,检查对象主要有系统日志、防病毒软件、主机网络安全、用户密码设置、系统服务等。

Dtrim

Dtrim工具是SharpSploit工具的一个修改版本。SharpSploit是一款由C#编写的内网渗透工具。与PowerSploit(由多个渗透测试PowerShell脚本组成的渗透框架)类似,SharpSploit主要的内网渗透模块涵盖凭证、枚举、规避、执行、横向移动、持久化、权限提升等功能。通过技术分析SharpShloit主要技术都是移植了安全社区的相关工具,几乎没有原创技术功能。

EWS-RT

EWS-RT工具基于开源PowerShell工具RT-EWS ,该工具利用EWS(Exchange Web Services)API的几个cmdlet,在Microsoft Exchange服务器(包括Office365和Windows Server)上执行特定的枚举和利用任务。

Fluffy

Fluffy工具是Rubeus的修改版本。Rubeus是用于原始Kerberos交互和滥用的开源C#工具集,该工具可以进行Kerberoasting攻击并提取Kerberos票据、使用用户hash请求ticket-granting-tickets (TGTs)、从现有的 TGT 获取服务票据、S4U 约束委派滥用。

G2JS

G2JS(GadgetToJScript)是一个用于生成.NET序列化的开源小工具,当使用来自JS、VBS和VBA脚本中的BinaryFormatter进行反序列化时,可以触发.NET程序集加载和执行。G2JS主要用于在红队进行初始访问、横向移动、持久性的期间自动执行Microsoft Windows Script Host (WSH)脚本武器化。

ImpacketObf

ImpacketObf(ImpacketObfuscation )是混淆的Impacket实用程序集合。该工具使用Python编写,用于处理网络协议。基于Python实现了smbexec与wmiexec的工具,并对通信进行了混淆。

ImpacketOBF(SMBExec)

该工具是一个基于Impacket的 smbexec .py工具,并对通信进行了混淆。它不可用于webshell环境,可在rdp等有交互环境下登录使用或socks代理环境下使用。对方主机需要开启 c$ 共享,依赖于445端口。该工具可以列举目标系统中的重要信息、管理员用户、当前登录目标系统的用户名、密码、域、 UAC 的状态、网络目录、远程登录目标主机的用户。除此之外它还可以搜索敏感文件、在目标系统中执行命令、获取权限、开启和关闭远程主机的UAC、执行PowerShell脚本。

ImpacketOBF(WMIExec)

该工具是一个基于Impacket的wmiexec.py工具,并对通信进行了混淆。该工具主要在从Linux向Windows进行横向渗透时使用,十分强大,可通过socks代理进入内网。当攻击者使用wmiexec .py进行攻击时,Windows系统默认不会在日志中记录这些操作,这意味着可以做到攻击无日志,同时攻击工具无需写入到磁盘,具有极高的隐蔽性。

InveighZero

InveighZero是一种开源的欺骗和中间人(MitM)攻击工具,旨在帮助红队和渗透测试人员。该工具可以欺骗LMNR、NBNS、mDNS、DNS和DHCPv6协议,它还有基于TCP侦听器的HTTP捕获和代理身份验证捕获的功能。

KeeFarce

KeeFarce是一个可从内存中提取KeePass 2.x密码数据库信息的开源工具。它使用DLL注入利用正在运行的KeePass进程执行代码。

NetAssemblyInject

该工具将C#.NET程序集注入到任意Windows进程中。它基于开源工具NET-Assembly-Inject-Remote。该工具包含一个shellcode加载器,可用于引导和执行CobaltStrike或msf生成的shellcode。

NoAmci

NoAmci是一个使用DInvoke修补AMSI.dll并绕过AMSI(Windows反恶意软件扫描接口)检测的开源工具。它还可以压缩.Net tradecraft进行编码加密,以使程序集小于1MB,然后将其嵌入为修补amsi.dll内存后要加载的资源。

PuppyHound

PuppyHound是开源工具SharpHound的修改版本,它是BloodHound项目的C#数据收集器。SharpHound是一个由C#编写的内网信息收集工具。信息收集对象包括系统组成员、域环境、本地管理员、分布式COM用户、会话、特权会话、ACL、容器等。SharpHound工具在内网大规模信息收集后。对后续的横向渗透提供了多维度的信息支持。

Rubeus

Rubeus是一个在流量和主机级别上操控Kerberos(一种网络认证协议)各种组件的工具,主要应用于域渗透领域。该工具能够对Kerberos协议中的凭证进行请求获取、回复、伪造和保持,同时利用系统中各种用户标识提取对应凭证,从而实现域账户认证成功,进一步渗透域控下相关主机或域控服务器。

SafetyKatz

SafetyKatz是Mimikatz和.NET PE加载程序的结合。它创建LSASS的小型转储,并使用PELoader加载自定义版本的Mimikatz以进行凭据转储,这避免了PowerShell日志记录,也避免了MimiKatz。

SharpUtils

用C#语言编写的红队实用程序的开源集合,辅助.NET武器化开发的第三方库。

SharpZeroLogon

基于Zerologon漏洞(CVE-2020-1472 )的开源漏洞利用。它利用Netlogon中的加密漏洞绕过身份验证。域控制器的NTLM散列将被更改为31d6cfe0d16ae931b73c59d7e0c089c0,这是一个空密码。

TitoSpecial

基于开源工具AndrewSpecial,可以窃取凭据,从LSASS内存中转储凭据并绕过“Cylance”。

TrimBishop

TrimBishop基于开源工具“Rural Bishop”。RuralBishop创建一个远程挂起的线程(起始地址设置为ntdll!RtlExitUserThread),并在该线程上排队APC。调用NtAlertResumeThread后,将执行shellcode。

基于内置Windows二进制文件的工具

DueDLLigence

DueDLLigence是FireEye 发布的shellcode运行器框架。红队将其用于应用程序白名单绕过和DLL侧加载。它利用内置的Windows二进制文件Control.exe(Windows控制面板)、Rasautou.exe(远程访问拨号器),以及msiexec.exe文件(Microsoft安装程序可执行文件)绕过应用程序。

MSBuildMe

这个红队工具是基于MSBuild(Microsoft Build Engine)的用于构建应用程序的平台。它用于编译和执行代码并绕过应用程序白名单(AWL)。

NetshShellCodeRunner

该工具基于Netsh.exe,用于处理网络接口设置的Windows工具,被红队和攻击者用来执行DLL文件。

Uncategorized

Uncategorized是一组利用内置Windows二进制文件dism.exe、searchprotocolhost.exe和werfault.exe进行进程注入的工具集合。

Weaponize

该工具使用Windows内置的二进制文件TSTheme.exe(TSTheme服务器模块)。

Fireeye红队自研工具

Dshell

Dshell是一款用D编程语言编写的后门程序。根据DShell使用的Windows函数,可推测它使用进程注入技术将其以Base64格式编码的有效载荷注入到合法进程中。

Excavator

Excavator是一款转储技术工具,可以直接或通过其服务转储进程。依据目前掌握信息,FireEye红队可以使用它从本地安全验证子系统(Local Security Authority Subsystem Service,LSASS)内存中转储凭据,以实现获取帐户登录名和密码信息(凭据)。

GetDomainPasswordPolicy

GetDomainPasswordPolicy是一款侦查工具,可用于获取活动目录(Active Directory)域的密码策略。

GPOHunt

GPOHunt是一款检索工具,可用于检索组策略(Group Policy)配置。

KeePersist

KeePersist是一款用于建立持久性的工具。

LNKSmasher

LNKSmasher是一款可生成恶意.LNK文件的工具,可以在LNK文件中嵌入任意有效载荷。LNK是一种用于指向可执行文件的快捷方式文件的文件格式。

LuaLoader

LuaLoader是一款可以加载用Lua语言编写的任意代码的工具。

Matryoshka

Matryoshka是一款用Rust编程语言编写的工具。该工具是一个多阶段工具,在下载第一阶段的有效载荷后,它会通过其加载程序运行第二阶段的恶意软件并安装实际的有效载荷,并使用进程镂空技术进行防御规避。

MemComp

内存编译器(MemComp)是一款用于内存编译的工具。

MOFComp

MOF编译器(MOFComp)是一款内置的Windows工具。该工具分析包含托管对象格式(Managed Object Format,MOF)语句的文件,并将文件中定义的类和类实例添加到WMI (Windows Management Instrumentation)存储库。

PGF

PGF是一套利用多个LOLBIN的后门开发框架,例如:Netsh、InstallUtil、Regasm、RunDLL32、Control和Cstmp.exe。

PXELoot

PXELoot是一款用于发现和利用Windows部署服务(Windows Deployment Services,WDS)中的错误配置的工具。

RedFlare

RedFlare是一套木马开发框架,包括生成器、控制器、下载器和键盘记录器,可以为Windows和Linux系统生成木马。

RedFlare(GoRAT)

RedFlare(GoRAT)是一款使用Golang编程语言编写的远程访问木马(Remote Access Trojan,RAT)。

ResumePlease

ResumePlease是一个Microsoft Office宏恶意软件模板,其中包含恶意VBA(Visual Basic for Application)代码。VBA是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程序功能;也可说是一种应用程序视觉化的Basic Script。

SharPersist

SharPersist是一款用C#编写的Windows持久化工具包。该工具通过多种方法提供持久性,例如,修改注册表运行键,将有效载荷添加到启动文件夹以及在每次启动运行时添加新的计划任务等。

SharPivot

SharPivot是一个.NET控制台应用程序。该程序利用分布式组件对象模型(Distributed Component Object Model,DCOM)在远程目标上执行命令以进行横向移动。

SharpSchTask

SharpSchTask是一款用C#编写的持久化工具,可以利用Windows的计划任务功能等实现持久化。

SharpStomp

SharpStomp是一款C#实用程序,可用于修改文件的创建、最后访问和最后写入时间,即可将其视为一款时间戳工具。

SinfulOffice

SinfulOffice是一款使用对象链接与嵌入(OLE)功能创建恶意Microsoft Office文档的工具。

WildChild

WildChild一款用于创建恶意HTML应用程序(HTML Application,HTA)文件的生成器工具。该工具所生成的恶意HTA文件可被Microsoft HTML应用程序主机(Mshta .exe)运行。

WMIRunner

WMIRunner是一款用于运行WMI(Windows Management Instrumentation)命令的工具。

WMISharp

WMISharp是一款包含FireEye红队使用的WMI(Windows Management Instrumentation)命令的工具。

WMISpy

WMISpy是一款使用多个WMI(Windows Management Instrumentation)类的工具,所用WMI类包括但不限于Win32_NetworkLoginProfile、MSFT_NetNeighbor、Win32_IP4RouteTable、Win32_DCOMApplication、Win32_SystemDriver、Win32_Share和Win32_Process等,以此进行侦察和横向移动。

目前未确认的工具

AllTheThings

待确认

CoreHound

待确认

Justask

待确认

PrepShellCode

待确认

Revolver

待确认

SharpGenerator

待确认

SharpGrep

待确认

SharpSack

待确认

SharpSectionInjection

待确认

SharPy

待确认

7.参考链接

 [1]《FireEye红队工具失窃事件分析和思考》

https://www.antiy.cn/research/notice&report/research_report/20201210.html

[2]《Welcome to ThreatPursuit VM: A Threat Intelligence and Hunting Virtual Machine》

https://www.fireeye.com/blog/threat-research/2020/10/threatpursuit-vm-threat-intelligence-and-hunting-virtual-machine.html

[3]《国外研究人员公布出的针对规则碰撞的哈希》

https://docs.google.com/spreadsheets/d/1uRAT-khTdp7fp15XwkiDXo8bD0FzbdkevJ2CeyXeORs/edit#gid=36102663

如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/DPpy
如有侵权请联系:admin#unsafe.sh