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