記一次 PowerShell 免殺實戰
最近在玩免殺,發現了一些免殺思路,今天來給大家做個分享,希望可以幫到大家。
0x01 powershell 加載 shellcode 介紹
UNIX 系統一直有着功能強大的殼程序(shell),Windows PowerShell 的誕生就是要提供功能相當於 UNIX 系統的命令行殼程序(例如:sh、bash 或 csh),同時也內置腳本語言以及輔助腳本程序的工具,使命令行用戶和腳本編寫者可以利用 .NET Framework 的強大功能。
powershell 具有在硬盤中易繞過,內存中難查殺的特點。一般在后滲透中,攻擊者可以在計算機上執行代碼時,會下載 powershell 腳本來執行,ps1 腳本文件無需寫入到硬盤中,直接可以在內存中執行
0x02 前戲
常見的 powershell 攻擊工具有 powersploit、nishang、empire、powercat,試了試這些免殺腳本,發現都不太理想,大部分都被檢測到了,想着要不自己嘗試嘗試?
cs,上號!
首先生成一個自帶的 powershell 腳本
看一下自帶的,是把 shellcode 加載到內存中的代碼放到字符串中然后字符串然后 IEX 執行代碼:
查殺效果:
並不是很理想,畢竟大家都在用,很多殺軟都有了特征和指紋
0x03 開始嘗試混淆
既然是把字符串進行加載不如整個編一個 base64?然后在解碼后加載,想着想着就開始嘗試了:
首先把字符串全部給 base64,我這里先用 burp base64
然后扔進去在加載之前 base64 還原
把編碼后的代碼解碼后加載,順便搞一個 UTF-8
執行執行一下看看是否可以上線:
Powershell -ExecutionPolicy Bypass -File .\payload.ps1
查看 cs 是否上線:
發現 cs 成功上線,去查看一下免殺效果:
https://www.virustotal.com
...這就把殺軟干懵逼了 ?
嘗試修改變量的名稱來繞過
發現沒什么太大的用處,還剩兩個
嘗試把 base64 編碼后的字符串拆開看看
把上面的 base64 的字符串猜開來在 base64 的時候組合一下
查看 cs 是否上線:
查看免殺效果:
這就完事了,不過只是靜態免殺
0x04 實戰
這一次測試一下,某絨,某 60,(這兩個殺軟一裝,我虛擬機都有點扛不住)
全部更新到最新,先靜態掃描試試
激動人心的時候到了,試試運行
發現他們一點反應都沒有
查看 cs 是否上線:
成功上線
沒想到這么順利
0x05 結語
在測試過程中的一些發現:
如果是沒有改證書的話貌似會被某絨給檢測到
改證書參考:
Cobalt Strike 繞過流量審計
https://paper.seebug.org/1349/
根據 base64 加密的方法還可以推斷出使用其他加密比如 ascii 碼加密也有同樣的效果
大家可以根據我的方法變形,比如可以拆成很多段,在配合其他的加密和解密手段進行免殺,制作屬於自己的免殺
