关于SigFlip
SigFlip可以篡改身份证码签名PE文件(exe、dll、sys等)工具,整个过程不会影响或破坏现有身份认证码的签名。换句话说,我们可以使用它SigFlip向PE数据嵌入文件(例如Shellcode),不会破坏文件签名、完整性检查或PE修改文件功能时PE文件的验证和或哈希。
SigInject组件可以将Shellcode注入至PE文件的[WIN_CERTIFICATE]在证书表中输出加密钥配合BOF/C/C#加载器(SigLoader)一起使用。SigInject将保存针对PE修改文件,确保其签名和证书的有效性不变。
SigLoader它是一种基本的加载器SigInject修改后的创建PE以文件路径和解密钥为参数,然后提取和解密嵌入Shellcode,以供选择Shellcode注入使用。
SigFlip将检查PE哈希是否成功改变,然后退出以绕过终端检查此类行为。
SigFlip可用于持久感染、横向渗透、命令/代码执行等场景。
注意事项:igFlip、SigInject和SigLoader将以BOF脚本和.NET提供程序集。
工具安装
大多数研究人员可以使用以下命令将项目源代码克隆到当地:
构建/编译工具
该项目未提供预编译BOF,我们可以用Mingw-w64编译。如果是的话.NET,可以使用VS或csc.exe来编译.NET项目(SigFlip、SigLoader);如果是BOF,按以下步骤操作:
确保所有对象文件都存储在内sigflip.cna在相同的目录下,然后在Cobalt Strike中加载sigflip.cna。
注:预编译BOF使用的是mingw-64 v8.0.0_3,假如你用的mingw-64 >= v9,崩溃可能发生。
Cobalt Strike
执行程序集:
BOF:
当我们在Cobalt Strike中加载sigflip.cna之后,我们将注册两个新命令,此时我们可以使用以下方法SigFlip和SigInject了。
- SigFlip:修改签名或证书或证书有效性的情况PE文件哈希:
- SigFlip"<PE\_FILE\_PATH>""<OUTPUT\_PE\_FILE\_PATH(withextension)>"
- SigInject:向PE文件的[WIN_CERTIFICATE]加密注入证书表Shellcode,打印的加密密钥可以跟随基础C/C#加载器结合使用以保证签名和证书的完整性:
- SigInject"<PE\_FILE\_PATH><OUTPUT\_PE\_FILE\_PATH(withextension)>""<SHELLCODE\_FILE>"
- SigLoader:从PE由文件中加载SigInject加密的Shellcode,然后使用Early Bird注入指定过程Shellcode,我们可以自定义Shellcode注入逻辑,或直接替换目标代码:
- SigLoader<PE_FILE_PATH_WITH_SH><DECRYPTION_KEY><SPAWNTO_PROCESS_PATH><PARENT_PROCESS_ID>
样品用于工具
(1) BOF
向msbuild.exe注入随机数据:
向kernel32.ell注入Shellcode:
(2) 执行程序集
向msbuild.exe注入随机数据:
向kernel32.ell注入Shellcode:
项目地址
SigFlip:【GitHub传送门】