一、前言
二、效果图
三、免杀
1. 图像法减少熵值
2. 字符串法减少熵值
(1)方式一
(2)方式二
四、最后
五、成品下载
01
一
尝试对Mimikatz进行免杀,提取Mimikatz的shellcode,然后使用免杀的加载器进行加载,用加载器在加载cs shellcode时免杀效果挺好,但在加载Mimikatz的shellcode发现直接被360、defender等静态查杀了,VT上报毒也很高,于是尝试找出问题并进行免杀。
二
VT查杀:
过360、火绒:
过defender静态加动态:
使用卡巴扫描的时候被查杀了:
猜测是编译器的问题,编译时使用的vs141 xp编译器,换回vs142编译器不报毒了,但是意义不大,卡巴对密码有保护,无法获取到密码,而且不时弹出已阻止:
三
由于Mimikatz的大小1.4MB,转换成shellcode后shellcode的大小也接近1.4MB,相比CS的1KB,大了上千倍,而且我们对shellcode进行了加密,这就有了一个不能忽视的因素——熵值。
许多杀软对未知的二进制文件进行评估时都会考虑熵值,熵值越高,越容易被认为是恶意文件。当对CS进行加密后,正常的文本字符通常集中在0-127的ascii码范围,加密后多了非常多的处在128-255的字符以及很多的不可见字符,但CS的shellcode非常小,加密后熵值增高了也很难被杀软注意到;到了Mimikatz上就不同了,Mimikatz的shellcode大小1.4MB,很难不被杀软注意到,即使加密了shellcode,由于熵值太高,导致VT报毒很高。
常见的减少熵值的办法有:
图像法:添加一些熵值较低的资源到二进制中,比如说图像。
字符串法:在加密后的shellcode中插入字符串,如一些英文单词、路径等。
在网上没有找到将shellcode封装进图片的代码,自己写又太麻烦,而且不知道免杀效果如何,如果花费大力气写出来发现免杀效果不好不是白忙活了吗?
于是我先进行了实验,在exe资源中存放一张大小差不多的正常的图像,上传VT测试,发现报毒并没有降低,于是将该方法pass掉。
我尝试了两种方式的字符串法减少熵值:
方式一:直接插入字符串。
方式二:直接将shellcode转换成可见字符串。
无论使用哪一种方式,都会使最终的字符串变大。
方式一直接在加密后的shellcode中插入字符串,为了实现简单,插入的都是同样的单词,同时设置了插入因子,当插入因子为1时,每间隔一个字符串的长度插入一个字符串,最终的字符串长度增长一倍;当插入因子为2时,每间隔0.5个字符串的长度插入一个字符串,最终的字符串长度增长两倍。也就是说插入因子越大,插入密度越大,同时最终的字符串也会越大。
加密的代码如下,在我经常使用的自定义随机值异或加解密的基础上改来:
加密后的shellcode如下面这样,插入字符串“ Being single is better than being in an unfaithful relationship.”,插入因子为1:
最终打包的exe(还弄了个图标,后面简直啪啪打脸):
由于插入因子为1,最终的字符串长度增长一倍,因此exe相对于原Mimikatz的大小变大了一倍。
当时的VT查杀:
过了11天,再次进行查看时发现变成16个了,但是不重要,随便改一下特征码重写打包即可,我们仅需关注刚上传时的查杀:
中间有尝试先压缩shellcode,再插入字符串,先试了第三方库zlib,对大shellcode的压缩率在50%左右,这样插入字符串后大小接近原大小,但是打包后的exe需要依赖zlib.dll,非常不方便,尝试寻找能够简单实现且自定义无需依赖第三方dll压缩算法,最终在方式二中得到解决。
方式二更加优雅,直接将shellcode按照字符转换表转换成可见字符串,加密后的字符串增长也更小,仅增长0.5倍。
转换表如下:
0-90可以用可见的单个字符表示(换行除外),91-255不可用可见的单个字符表示,于是用两个可见(空格除外)的字符表示,比如空格+字母,点+字母等组合方式。通过这一种转换方式将加密字符全部转换键盘上可以打出来字符,同时加密字符串中有空格、点和换行等字符存在,将其分成多词多段,有利用减低熵值。
加密后的字符串长度增长0.5还是太多了,经过在github上的一番寻找,最终找到了一个比较合适的加密算法lzw加密算法——具有不同代码长度和 4096 个最大条目字典的Lempel–Ziv–Welch压缩,对大shellcode的压缩在60%左右,接近zlib。
部分加密代码如下:
加密后的shellcode如下面这样:
可以看到还是很乱,其中还有del字符存在,应该是我写的代码出了bug,但是没有关系,这在杀软眼中已经是属于熵值很低的了。
打包后的exe只有1.5MB,接近于原版大小:
VT查杀:
后面进行360、defender查杀测试时出了点问题,不是被360查杀,就是被defender查杀,还以为是加载器的问题,一直被静态查杀,更换了更强的加载器,发现还是被defender查杀了,接着寻找问题,感觉问题应该不是出在导入表上,后面才发现问题,是前面埋的坑,exe的图标被列入特征码了😅,只要使用这个图标就被查杀。。
后面更换的动态回调加载器:
为了增加免杀能力对字符串进行了加密,并用动态生成key。
由于Mimikatz经常被用在windows server之中,vs默认的编译配置只能在windows server 2016及以上的版本中运行,在windows server 2012及以下版本中运行会提示如下的各种dll缺少问题:
需要将属性页->C/C++->代码生成中的Runtime Library调成/MT模式,才能在windows server 2012及以下版本中运行:
打开后会导致打包exe的体积增大100到200KB,exe达到效果图中的1.7MB,同时VT报毒也会少量增加,这就需要通过其它的一些调试减少报毒了。
四
前面讲的熵减法Mimikatz免杀的内容是十几天之前做的,基于intel c++编译器到达的VT全免杀效果,加了一点动态免杀,以过defender动态查杀,第二项的效果图是最近的,此时的intel c++编译器已被杀软攻陷,在VT上不再具有0查杀的效果,因此效果图中的效果还使用了其它新技术,部分会在下一篇中讲到。
对测试过程中遇到的几个问题进行总结:
exe取名不要保护shellcode、mimikatz等字眼,不然会被查杀。
exe最好不要有图标,如果一定要有的话,一定要经常更换,因为图标可能会被列入特征码。
关于成品和源码,成品可以直接下载,源码仅在[深情种聚集地]小密圈中下载。
五
关注公众号回复:
30408
六
https://github.com/glampert/compression-algorithms
https://mp.weixin.qq.com/s?__biz=Mzg5MDg0NzUzMw==&mid=2247483697&idx=1&sn=40d0c408f382325eb3ece0ed7a303f14&chksm=cfd72973f8a0a0654a47c250b2d0dc3fa3239ec9479544a848bc4ec854b106b624427b1d3e90#rd
07
付费圈子
如果看到这里的师傅的你偏新人向
目前仅需70RMB一年,满1000人涨到99一年(目前进度841/1000)
价格只会越来越高
07
兄弟反映需要封面图?
后台回复文章推送日期加”封面“即可获取
(2022年十月五日前的文章没有)
例如今天为:20230409封面
08
Nessus20230324插件_20230329规则模板_一键破解编译无需限制cpu啦
漏扫哒哒哒哒!Awvs_windows&liunx破解版v15.5更新啦
代码审计扫描工具Fortify SCA 22.2.2 全系统破解版
漏扫哒哒哒哒:Invicti-Professional-v23.3_windows破解版
CS4.7汉化+修改指纹+加密流量+最新ladon9.2.5教程内附成品
windows10渗透虚拟机更新!帮助渗透新手快速搭建工作环境,工欲善其事,必先利其器。
AppScan_Standard_10.1.0中文永久破解版
08
本工具仅面向合法授权的企业安全建设行为,如您需要测试本工具的可用性,请自行搭建靶机环境。
为避免被恶意使用,本项目所有收录的poc均为漏洞的理论判断,不存在漏洞利用过程,不会对目标发起真实攻击和漏洞利用。
在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。请勿对非授权目标进行扫描。
如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。
本工具来源于网络,请在24小时内删除,请勿用于商业行为,自行查验是否具有后门,切勿相信软件内的广告!
在安装并使用本工具前,请您务必审慎阅读、充分理解各条款内容,限制、免责条款或者其他涉及您重大权益的条款可能会以加粗、加下划线等形式提示您重点注意。除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要安装并使用本工具。您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。
点分享
点收藏
点点赞
点在看