如何使用Codecepticon对C#、VBA宏和PowerShell源代码进行混淆处理
Codecepticon是何使宏和一款功能强大的代码混淆处理工具 ,该工具专为红队和紫队渗透测试安全活动而开发 ,用C源代在该工具的码进帮助下 ,广大研究人员可以轻松对C#、行混淆处VBA5/VBA6(宏)和PowerShell源代码进行混淆处理 。何使宏和Codecepticon与其他代码混淆处理工具的用C源代区别在于 ,该工具主要针对的码进是源代码,而不是云计算行混淆处编译后的可执行文件 ,并且能够绕过AV或EDR产品的何使宏和检测。
除了代码混淆功能之外 ,用C源代Codecepticon还允许我们重写代码 ,码进也提供了相关的行混淆处命令行功能选项。
工具要求Visual Studio Pro/Community 2022

Roslyn编译器

打开和编译
打开Codecepticon ,何使宏和等待所有的用C源代NuGet包下载完成后 ,就可以构建工具解决方案了 。码进
工具下载广大研究人员可以使用下列命令将该项目源码克隆至本地:
复制git clone https://github.com/Accenture/Codecepticon.git1. 工具使用该工具支持高度自定义配置,高防服务器并且Codecepticon提供了两种使用方法 ,要么将所有参数放在命令行中。我们可以使用CommandLineGenerator.html快速生成工具命令:

命令行生成器的输出格式为命令行输出或XML,具体可以自行选择,终端命令可以通过下列方式执行:
复制Codecepticon.exe --action obfuscate --module csharp --verbose ...etc1.如果使用了XML配置文件,则命令如下:
复制Codecepticon.exe --config C:\Your\Path\To\The\File.xml1.C#
运行工具后 ,直接选择对应的解决方案 ,即可对C#项目进行混淆处理 。在尝试对目标项目运行Codecepticon之前,请确保该项目可以被独立编译,并做好备份 。亿华云
VBA/VBA6
VBA混淆针对的是宏文件源代码本身 ,而非Microsoft Office文档。这也就意味着 ,我们无法向Codecepticon传递一个doc(x)或xls(x)文件 ,因此需要传递模块本身源代码 。(按Alt+F11或直接将源码拷贝进去)
PowerShell
由于由于PowerShell脚本的复杂性 ,以及它在编写脚本方面提供的自由度,要覆盖所有边缘情况并确保混淆的结果完全正常运行是源码库一项挑战。虽然Codecepcon可以很好地处理简单的脚本/函数 ,但在PowerView等复杂脚本/功能上运行它是行不通的 ,不过开发人员目前正在解决这个问题。
命令行参数(混淆)
在对一个应用程序或脚本进行混淆处理之后 ,相关的命令行参数很有可能会发生变化。下面的例子中,我们使用了HTML映射文件来寻找新的免费模板参数名称。比如说 ,我们尝试转换下列命令 :
复制SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\1.通过搜索HTML映射文件中的每一个参数 ,我们将会获取到下列信息:



替换所有的字符串后 ,结果如下:
复制ObfuscatedSharpHound.exe --AphylesPiansAsp TurthsTance --AnineWondon C:\temp\1.但是,某些值可能存在于多个分类:

因此,我们要养成在本地环境先进行测试的习惯。
项目地址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