/go-shellcode-antiav

免杀框架

Primary LanguageGoMIT LicenseMIT

AniYa-GUI免杀框架

免责声明

该工具仅用于安全研究,禁止使用工具发起非法攻击等违法行为,造成的后果使用者负责。免杀具有时效性,免杀效果无法保证。

介绍

Golang免杀马生成工具,在重复造轮子的基础上尽可能多一点自己的东西,最重要的loader部分参考其他作者。

相较其他免杀工具具备以下优势:

  1. 使用fyne的GUI界面,不算难看,简单易懂,还有个炫酷的进度条!wakuwaku(^▽^)
  2. 可自定义多种反沙箱,其中检查微信的适合钓鱼
  3. 可自定义多种编译选项,支持garble编译环境
  4. 分离免杀(本地/HTTP)
  5. 支持打包PE文件(如mimikatz
  6. 支持窃取数字签名
  7. 伪造微软其他软件添加iconversioninfo

F&Q:

勾选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

使用

image-20220711114540147

  1. 后缀支持bin/exe/dll,可输入绝对路径或相对路径或点击按钮选择。默认beacon.bin。(必选)
  2. 生成木马的名称。默认result.exe。(必选)
  3. 选择shellcode加密算法(必选)
  4. 选择loader(必选)
  5. 本地分离免杀,可输入绝对路径或相对路径,但生成的文件(默认code.txt)是固定在当前目录生成,木马会去读取目标路径下的分离shellcode
  6. 远程分离免杀,木马去请求网络地址下载shellcode,加密的shellcode为当前目录的code.txt
  7. 伪造数字签名,选择一个具有签名的微软文件,如MSbuild.exe等。
  8. 反沙箱
  9. 编译选项
反沙箱参数 说明
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 隐藏窗口ldflags -H windowsgui(可能降低免杀效果)
更换为调用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混淆。

环境准备

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

  1. 确保安装Golang且环境变量中包含go否则无法编译
  2. 请在当前目录先执行go env -w GO111MODULE=on然后go mod download命令下载依赖
  3. 生成木马时需将杀软关闭,go产生的中间文件会被查杀
  4. 如果下载依赖过慢配置镜像go env -w GOPROXY=https://mirrors.aliyun.com/goproxy。国内用户建议配置。

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

免杀效果

很多大佬都根据同个优秀的loader写了一些框架,目前啥选项都不配置有越来越多的杀软可以查杀,基本不能使用。

建议使用分离shellcode,技术简单但效果好。

写了一个能过DF的增强功能暂不放出。

另heapalloc的效果好一点。

sgn加密疑似已被提取特征,被WD和360拉黑了。

自测下来开启一些选项还是能免360和WD,希望各位大佬测试的时候关闭360和WD的自动上传样本功能,测试环境测,不要直接拖到VT上,火绒断网测就OK。

参考

欢迎各位大佬提PR!

感谢不羡师傅提供的GUI建议及反沙箱模块

更新

1.2.0

  • 更新签名伪造功能

  • 更新文件伪装功能,伪装功能只为增强免杀效果,没有做自定义,有这个需求应该自己有单独更改文件相关属性的工具。

  • 修复-race与-trimpath冲突的BUG,删除race参数。

1.1.0
1.0.1
  • 修复HIDE参数的bug

TODO

  • 签名伪造

  • 自定义icon和versioninfo

  • 文件捆绑功能

  • 更多增强功能,如脱钩技术(halo's gate hell's gate unhook),考虑到免杀实效性,暂不考虑公开