该工具仅用于安全研究,禁止使用工具发起非法攻击等违法行为,造成的后果使用者负责。免杀具有时效性,免杀效果无法保证。
Golang
免杀马生成工具,在重复造轮子的基础上尽可能多一点自己的东西,最重要的loader部分参考其他作者。
相较其他免杀工具具备以下优势:
- 使用fyne的GUI界面,不算难看,简单易懂,还有个炫酷的进度条!wakuwaku(^▽^)
- 可自定义多种反沙箱,其中检查微信的适合钓鱼
- 可自定义多种编译选项,支持garble编译环境
- 分离免杀(本地/HTTP)
- 支持打包PE文件(如
mimikatz
) - 支持窃取数字签名
- 伪造微软其他软件添加
icon
和versioninfo
勾选garble编译时闪退:想勾选garble编译的需提前安装好garble,怕被说留后门啥的所以我这边不提供这种第三方的工具。安装命令很简单go install mvdan.cc/garble@latest
,不放心的可以去点进garble的github自己安装!
32位/64位问题:该框架生成的木马是go编译的,所以arch也是go的编译环境决定的,默认安装的会根据自身系统的arch来,命令行输入go env | findstr GOARCH
可以查看。32位的免杀效果实在太拉,个人实战中遇到非要32位的系统也不多,所以之前没有提,实在需要32位的输入set GOARCH=386
可以生成32位的木马。64位:set GOARCH=amd64
- 后缀支持bin/exe/dll,可输入绝对路径或相对路径或点击按钮选择。默认beacon.bin。(必选)
- 生成木马的名称。默认result.exe。(必选)
- 选择shellcode加密算法(必选)
- 选择loader(必选)
- 本地分离免杀,可输入绝对路径或相对路径,但生成的文件(默认code.txt)是固定在当前目录生成,木马会去读取目标路径下的分离shellcode
- 远程分离免杀,木马去请求网络地址下载shellcode,加密的shellcode为当前目录的code.txt
- 伪造数字签名,选择一个具有签名的微软文件,如MSbuild.exe等。
- 反沙箱
- 编译选项
反沙箱参数 | 说明 |
---|---|
timestart | 添加启动参数,参数为运行木马的机器的系统时间格式为HHMMDD,如9日11:08,则启动参数为1189,不填充0 |
ramcheck | 检查内存,小于4G则退出 |
cpunumbercheck | 检查CPU核数,小于4则退出 |
wechatcheck | 检查微信进程,不存在则退出 |
disksizecheck | 检查C盘硬盘大小,小于60G则退出 |
loader的说明搬一下4ra1n的介绍。
模块名 | 简介 |
---|---|
CreateFiber | 利用Windows CreateFiber函数 |
CreateProcess | 利用Windows CreateProcess函数在挂起状态下创建进程 |
CreateRemoteThread | 远程进程注入ShellCode(注入explorer.exe) |
CreateRemoteThreadNative | 和上一条区别在于使用更底层的方式(注入explorer.exe) |
CreateThread | 利用Windows CreateThread函数 |
CreateThreadNative | 和上一条区别在于使用更底层的方式 |
EarlyBird | 注入的代码在进程主线程的入口点之前运行 |
EtwpCreateEtwThread | 利用Windows EtwpCreateEtwThread函数在进程中执行ShellCode |
HeapAlloc | 创建一个可供调用进程使用的堆并分配内存写入ShellCode |
NtQueueApcThreadEx | 在当前进程的当前线程中创建一个特殊用户APC来执行ShellCode |
RtlCreateUserThread | 利用Windows RtlCreateUserThread函数(注入explorer.exe) |
UuidFromString | 利用Windows UuidFromStringA函数 |
编译参数说明,不包含ldflag -s -w
及-trimpath
,默认自带
参数 | 参数说明 |
---|---|
Fake | 添加图标和manifest等信息,尝试伪装为其他微软程序 |
Hide | 更换为调用 https://github.com/lxn/win ,免杀效果增强,但有一闪而过的黑框 |
garble | 使用编译混淆器garble来编译,需事先安装好,编译速度会慢一些(推荐) |
literalobf | garble特有的参数,混淆所有字符串等(建议勾选) |
randomseed | garble特有的参数,使编译变的更随机,更加难以逆向(建议勾选) |
已经编译好的程序可以从realeases下载
构建源代码的需要依赖项是keystone 引擎,请按照这些说明安装库。然后按照以下步骤进行编译
因确定sgn被拉黑,取消相关功能,现在直接编译很方便
直接go build
或者安装fyne之后使用fyne的打包工具来打包fyne package -icon favicon.ico
keystone安装比较麻烦,可以自行将sgn的相关功能注释掉,人工对shelllcode进行sgn混淆。
在生成免杀马之前请注意以下四件事
- 确保安装
Golang
且环境变量中包含go
否则无法编译 - 请在当前目录先执行
go env -w GO111MODULE=on
然后go mod download
命令下载依赖 - 生成木马时需将杀软关闭,go产生的中间文件会被查杀
- 如果下载依赖过慢配置镜像
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy
。国内用户建议配置。
一切就绪后就可以开始生成了
很多大佬都根据同个优秀的loader写了一些框架,目前啥选项都不配置有越来越多的杀软可以查杀,基本不能使用。
建议使用分离shellcode,技术简单但效果好。
写了一个能过DF的增强功能暂不放出。
另heapalloc的效果好一点。
sgn加密疑似已被提取特征,被WD和360拉黑了。
自测下来开启一些选项还是能免360和WD,希望各位大佬测试的时候关闭360和WD的自动上传样本功能,测试环境测,不要直接拖到VT上,火绒断网测就OK。
欢迎各位大佬提PR!
感谢不羡师傅提供的GUI建议及反沙箱模块
- https://github.com/safe6Sec/GolangBypassAV
- https://github.com/Ne0nd0g/go-shellcode
- https://github.com/afwu/GoBypass\(4ra1n大佬的好像删了)
1.2.0
- 更新签名伪造功能
- 更新文件伪装功能,伪装功能只为增强免杀效果,没有做自定义,有这个需求应该自己有单独更改文件相关属性的工具。
- 修复-race与-trimpath冲突的BUG,删除race参数。
1.1.0
- 更新HTTP分离免杀、变更窗口隐藏功能实现方式。
- 优化UI,现loader会根据打包EXE还是shellcode进行变更。
- 修复BUG。
- 感谢[夜中空想](https://github.com/imkitsch)提供的HTTP分离免杀和隐藏窗口功能
1.0.1
- 修复HIDE参数的bug
-
签名伪造 -
自定义icon和versioninfo -
文件捆绑功能 -
更多增强功能,如脱钩技术(halo's gate hell's gate unhook),考虑到免杀实效性,暂不考虑公开