远控免杀专题(74)-基于Go的条件触发式免杀
2023-5-26 00:1:53 Author: 白帽子(查看原文) 阅读量:30 收藏

2020年初,从网上搜集了多种免杀工具和方式,汇总整理了远控免杀专题文章的工具篇、代码篇、白名单篇等,共70余篇文章。现时隔一年,计划把这个系列继续补充一些,内容也都是来自互联网,汇总到一起只是方便大家查阅参考,如有侵权请联系删除。有些免杀方式已经效果一般,但很多思路还是值得去学习的。

免杀专题文章及工具:https://github.com/TideSec/BypassAntiVirus

免杀专题在线文库:http://wiki.tidesec.com/docs/bypassav

本文内容参考节选自以下资料:

bypassAV项目地址:https://github.com/pureqh/bypassAV

条件触发式远控:https://pureqh.top/?p=5412

免杀基础入门篇:https://xz.aliyun.com/t/10369

现在很多免杀都是基于Go来做免杀或者使用Go来写加载器,比如之前在 32.远控免杀专题(32)-Go加载免杀-3种方式(VT免杀率7-70)https://mp.weixin.qq.com/s/TmfDQgRfEp2qg9SKbD0Quw一文中,就介绍了两种基本的方式:一种是将shellcode嵌入go代码然后编译exe,一种是使用go加载器。

在里面也提到了brimstone使用Go做的加载器:https://github.com/brimstone/go-shellcode,算是比较早的用Go写的加载器了,而现在网上在Go加载器基础上做的各种花式免杀也已经有很多了。

今天介绍的就是pureqh提出的一种条件触发式的免杀,本文大部分内容也都是来自他的博客和Github。

用Go做免杀有个较大的劣势,那就是生成的文件大一些(当然比py生成的exe要小一点的且兼容性更好),另外就是无法做到0免杀。

我先用一个Hello做个测试,代码很简单就一行。

然后发现生成的文件都是1.3M了

就这一个hello程序,在VT上都是6/67的查杀率,微软都会报毒。

为了缩小体积,一般都会用upx压缩一下,压缩后变成了530k大小,VT上是9/66的查杀率。

所以现在用Go做免杀注定了很难做到0免杀。

本节内容引用自《免杀基础入门篇》https://xz.aliyun.com/t/10369

现在的杀软检测一般有静态查杀和动态查杀两种。

3.1 静态查杀

1.特征码识别: 杀软有自己的病毒库,里面有很多样本,扫描时会抽取扫描对象的一段特征并与病毒库里作比较,如果匹配,那就会认为是病毒。抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面又不要有太大的空间与时间的开销。如果一种病毒的特征代码增长一字节,要检测3000种病毒,增加的空间就是3000字节。在保持唯一性的前提下,尽量使特征代码长度短些,以减少空间与时间开销。

主要扫描的有:

hash、文件名、函数名、敏感字符串、敏感api等等

2.云查杀: 云查杀的不同点在于它的病毒库是放在服务器端的,而不是本地客户端,意思是只要联网病毒库就会同步更新,这种病毒库更加强大。

3.校验和法 根据正常文件的内容,计算其校验和,定期不定期的检查文件的校验是否与正常的校验和一样。其实本质还是特征码,万变不离其宗。

4.启发式扫描:

启发式则是将一类病毒总结后,归纳其特征,其后的演变都为一类病毒,这就是启发式算法。具体启发式算法可以由杀软来定,比如可以使用机器学习把家族病毒聚类,或简单的通过使用通用型yara规则,例如文件大小小于100kb,且没有图标则可以识别为病毒,以此达到查杀病毒。

3.2 动态查杀

动态查杀指的是程序在运行的过程中执行了某些敏感操作,导致杀软查杀,目前主要用的是沙盒检测,沙盒查杀也叫启发式查杀,通过模拟计算机的环境执行目标文件再观察特征行为。

沙盒模拟的常见特征:

特征原因bypass
内存较小不影响计算机正常运行检测计算机内存是不是很小(判断是否是真实计算机)
时间较快沙盒内置的时间速度比现实世界要快,提高查杀速度,沙盒中的时间流逝很快c语言函数判断1s是否有1000ms/判断是否是utc时间
进程或文件不完整减少杀毒软件运行时对计算机的消耗判断操作系统进程的个数/调用不可能存在的文件
io设备缺失鼠标键盘等事件大部分沙盒都没有检测驱动 usb等/判断鼠标的移动速度等

其实主要就是找一台真实的计算机和沙盒的区别到底在哪,找到那些真实的计算机具有而模拟的计算机无法具有的特征,进行绕过即可,思路很简单,也很广,自己拓展会发现更多有意思的点。

本文的条件触发式免杀就是对程序执行条件进行控制,这样可以避免沙盒的检测。

我先写个简单的url访问,扔VT上看一下沙盒会不会做联网检测。

额,这个查杀率比上面的helloword稍好点。

不过dnslog上显示还是有两个沙盒允许联网的。

条件触发式免杀就是给程序设置一个执行条件,这个执行条件可以是一个人工添加的参数,也可以是访问某个url资源,只有当满足这个条件时才会执行后面的语句,从而规避杀软沙盒的部分检测。

我这就直接采用pureqh的github上的方法,先把shellcode用Python脚本处理一下。

在不使用条件触发的时候测试一下免杀,VirusTotal上10/71。

4.1 参数触发

使用参数触发,要求比如输入某个参数,不然不执行。

要求必须是加参数 -tide才能执行。这里你也可以使用flag库解析参数,不过那样生成的程序会增大0.2M。

VirusTotal上9/71。

4.2 url检测触发

采用pureqh提到的http验证方式,访问一个内网web,能访问到才执行shellcode。

因为使用了http包,所以生成的程序马上从1.3M到了4.2M。

VirusTotal上7/70。

不过这样直接执行的话还是会被360查杀。

4.3 简单的伪装

给生成的木马加了个伪签名、又加了个360的图标。具体可以参考https://github.com/TideSec/BypassAntiVirus中的《远控免杀专题(68)-Mimikatz免杀实践》。

发现这样就能直接过360、火绒和defender了。

4.4 webshell下执行

使用phpstudy搭了个php环境,假设已经获取了webshell权限,在目标服务器装有360、火绒和defender的情况下,尝试执行上面做过免杀的小马。

不过因为是执行用冰蝎执行exe文件,所以360直接拦截了。

退出360后,再次执行,火绒和defender没有预警,可正常上线。

这里需要注意的是x64位的程序可能无法执行,这和目标web服务器的架构有直接关系。我也是换了x86的shellcode,重新编译的x86的程序才正常上线。

基于上述原理,我在潮影在线免杀平台  http://bypass.tidesec.com/ 上添加了go-exe模块,对应就是使用了这样方式。

平台使用帮助:https://github.com/TideSec/Papers

主要使用了随机变量、AES/RC4/多重Base64/异或算法、伪造签名、随机图标等方式,在本地测试的时候效果还是不错的,但发现放到在线平台后,可能样本被上传的比较多,免杀效果就比较一般了。但目前来说过火绒和360卫士还是没有问题的。

免杀专题Github:https://github.com/TideSec/BypassAntiVirus

免杀专题在线文库:http://wiki.tidesec.com/docs/bypassav

bypassAV项目地址:https://github.com/pureqh/bypassAV

条件触发式远控:https://pureqh.top/?p=5412

免杀基础入门篇:https://xz.aliyun.com/t/10369


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246721&idx=2&sn=6024c769bc5a219372d0e1f6136999b3&chksm=82ea55e8b59ddcfe67a34dbba66fbe2428ef91000cdc12e22de916be527261a2763b7e5ead85#rd
如有侵权请联系:admin#unsafe.sh