loader编写小记
此项目在一些大佬的基础上进行了修改,或许能提供一些思路。还在学习中很菜很菜,不足之处还请师傅们多多指点🤝
tips
- 对shellcode使用AES + Base85加密后以txt保存在远端供下载。
- 针对url和解密的密钥进行了加密,这两个参数是替换的,只有在使用时才会解密。
- 替换字节数组可能会有问题,源字节数组和目标字节数组的长度不匹配导致了错误的替换,在最后传入时剥离
\x18
即可 - 马子的生成无需重新编译,而是通过直接替换二进制的
- go在远程加载上由于常用的net包被盯的很死,就用了一个前段时间出现的
"github.com/carlmjohnson/requests"
。 - 函数的变量名上都简化,在调用dll文件时都使用字节数组替换字符串来规避静态检查。
- 反沙箱,反虚拟机,延时执行,资源检查。
- 直接使用upx已经不合适了,go-strip的特征也被标记都会提升查杀率
- 隐藏黑框不要使用编译参数,而是使用
"github.com/lxn/win"
这个包
win.ShowWindow(win.GetConsoleWindow(), win.SW_HIDE)
测试
原始情况下vt查杀9/70
然后使用gotrip去除编译信息,upx压缩,反沙箱之后。好家伙被查的死死的。
也难怪,upx的特征很明显,去掉upx之后下降了很多。
再取消使用go-strp又下降了一点,目前反沙箱是有正向效果的,不过这个也挺久了(只有检查是否为虚拟机,资源、dbg,延迟执行),看到有些师傅通过桌面壁纸的hash来判断,后续再去学习。
结果
所以最后就是原始+反沙箱。一下测试时间均为9月25日,只测了火绒和联想电脑管家,动静态均通过。
方法 | vt比例 | 比较 |
---|---|---|
原始 | 9/70 | 0.1285 |
原始 + 反沙箱 | 8/71 | 0.1126 |
原始 + 反沙箱 + go-strip | 9/71 | 0.1267 |
原始 + 反沙箱 + go-strip + upx | 14/71 | 0.197 |
微步1/26
过火绒
过联想电脑管家
项目地址
👉传送门