关于FrostByte
FrostByte是一个PoC项目,其中包含了各种不同的安全防御绕过/规避技术,可以帮助广大红队研究人员构建出更加优秀的Payload。
在这个PoC项目中,我们利用了Sigflip的加载程序代码构建AppDomain DLL,并使用Sigflip注入器将加密的shellcode嵌入到我们的C#程序中。这样做可以降低DLL的静态检测率,同时shellcode也可以更好地存储在有符号的二进制文件中。
工具优势
该工具所生成的shellcode类似于Cobalt Strike的Stageless shellcode,不会驻留在磁盘上的未签名DLL中,无论是用了什么样的混淆/编码技术,生成的DLL都更干净、更小巧、更隐蔽,涉及到的代码量非常少,从而大大减少了被检测到的概率。
该项目整合了两种完全不同的安全防御规避技术,可以帮助广大研究人员或红队成员为他们的行动构建更好的初始执行Payload。该项目以AppDomain管理器注入为例,但这种思想也适用于其他注入技术,如DLL侧加载和DLL劫持等。
工具运行机制
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/pwn1sher/frostbyte.git
工具使用
构建签名shellcode可执行程序
1、选择一个x64已签名的C#代码,这个代码类似于Cobalt Strike的Beacon,是你想要注入和执行的代码,比如说CasPol.exe之类的;
2、生成Cobalt Strike Stageless shellcode - x64-stageless.bin;
3、将这两个文件和SigFlip放在同一个文件夹,然后运行下列命令:
SigFlip.exe -i "Z:\ZLoader\CasPol.exe" "Z:\ZLoader\x64-stageless.bin" "Z:\ZLoader\update.exe" "S3cretK3y"
4、在SigFlip的帮助下,我们将获取到一个名为update.exe的已签名代码,这个程序是一个嵌入了加密shellcode的PE文件;
构建AppDomain加载器DLL
1、点击【这里】获取C#模版代码;
2、在运行SigFlip时,修改第163行代码,用你的加密密钥替换原来的参数;
3、替换第146行的代码路径;
4、修改第158、165行的日志文件路径;
5、使用下列命令将代码编译成DLL:
csc /target:library /out:test.dll test.cs
6、将编译生成的DLL和update.exe.config文件以及已签名shellcode放在同一个目录下;
7、执行update.exe即可;
项目地址
FrostByte:【GitHub传送门】
参考资料
https://gist.github.com/djhohnstein/afb93a114b848e16facf0b98cd7cb57b
https://github.com/med0x2e/SigFlip
https://github.com/pwn1sher/frostbite/blob/main/test.cs
https://github.com/pwn1sher/frostbite/blob/main/Update.exe.config
https://pentestlaboratories.com/2020/05/26/appdomainmanager-injection-and-detection/