如何使用Codecepticon對C#、VBA宏和PowerShell源代碼進行混淆處理
關于Codecepticon
Codecepticon是一款功能強大的代碼混淆處理工具,該工具專為紅隊和紫隊滲透測試安全活動而開發,在該工具的幫助下,廣大研究人員可以輕松對C#、VBA5/VBA6(宏)和PowerShell源代碼進行混淆處理。Codecepticon與其他代碼混淆處理工具的區別在于,該工具主要針對的是源代碼,而不是編譯后的可執行文件,并且能夠繞過AV或EDR產品的檢測。
除了代碼混淆功能之外,Codecepticon還允許我們重寫代碼,也提供了相關的命令行功能選項。
工具要求
Visual Studio Pro/Community 2022
Roslyn編譯器
打開和編譯
打開Codecepticon,等待所有的NuGet包下載完成后,就可以構建工具解決方案了。
工具下載
廣大研究人員可以使用下列命令將該項目源碼克隆至本地:
工具使用
該工具支持高度自定義配置,并且Codecepticon提供了兩種使用方法,要么將所有參數放在命令行中。我們可以使用CommandLineGenerator.html快速生成工具命令:
命令行生成器的輸出格式為命令行輸出或XML,具體可以自行選擇,終端命令可以通過下列方式執行:
如果使用了XML配置文件,則命令如下:
C#
運行工具后,直接選擇對應的解決方案,即可對C#項目進行混淆處理。在嘗試對目標項目運行Codecepticon之前,請確保該項目可以被獨立編譯,并做好備份。
VBA/VBA6
VBA混淆針對的是宏文件源代碼本身,而非Microsoft Office文檔。這也就意味著,我們無法向Codecepticon傳遞一個doc(x)或xls(x)文件,因此需要傳遞模塊本身源代碼。(按Alt+F11或直接將源碼拷貝進去)
PowerShell
由于由于PowerShell腳本的復雜性,以及它在編寫腳本方面提供的自由度,要覆蓋所有邊緣情況并確保混淆的結果完全正常運行是一項挑戰。雖然Codecepcon可以很好地處理簡單的腳本/函數,但在PowerView等復雜腳本/功能上運行它是行不通的,不過開發人員目前正在解決這個問題。
命令行參數(混淆)
在對一個應用程序或腳本進行混淆處理之后,相關的命令行參數很有可能會發生變化。下面的例子中,我們使用了HTML映射文件來尋找新的參數名稱。比如說,我們嘗試轉換下列命令:
通過搜索HTML映射文件中的每一個參數,我們將會獲取到下列信息:
替換所有的字符串后,結果如下:
但是,某些值可能存在于多個分類:
因此,我們要養成在本地環境先進行測試的習慣。
項目地址
Codecepticon:【項目地址】
參考資料
https://blog.xpnsec.com/building-modifying-packing-devops/
https://twitter.com/EmericNasi/status/1460640760928296966
https://github.com/MagicMau/ProceduralNameGenerator
https://github.com/uwol/proleap-vb6-parser
https://github.com/dwyl/english-words