【免杀】初探卡巴堆加密

admin 2024年4月18日02:22:29评论12 views字数 1229阅读4分5秒阅读模式
想第一时间看到我们的大图推送吗?赶紧把我们设为星标吧!这样您就不会错过任何精彩内容啦!感谢您的支持!🌟

目录

0x01 堆加密的实现原理
0x02 堆加密免杀原理
0x03 基于QVM检测的问题
0x04 免杀QVM
0x05 部分代码演示
0x06 检测效果
0x01 堆加密的实现原理

这里直接放上一张图片:

【免杀】初探卡巴堆加密

利用API函数HeapWalk获取堆,在调用HeapWalk后,堆的信息会保存在结构体变量PROCESS_HEAP_ENTRY中。

通过PROCESS_HEAP_ENTRY中的成员wFlags判断获取的堆是否被使用,避免对空堆进行不必要的加密。

具体堆加密的加密手段可以更改,这里演示使用的是异或加密。
0x02 堆加密免杀原理

写在代码中得到函数与数据会存储在堆中,在加载shellcode之前,利用堆加密,能绕过杀软对刚启动的程序的第一次检测。

注意:堆加密主要针对杀软的第一次动态检测,需要配合静态免杀手段使用,并且对杀软后续行为检测的免杀效果非常有限。
0x03 基于QVM检测的问题

【免杀】初探卡巴堆加密

代码写好后静态卡巴是没有问题的,但是却发生了一件让我难以置信的事情。

【免杀】初探卡巴堆加密

卡巴没报毒竟然被360报毒了,难道360的静态检测已经超越卡巴了吗?

仔细一看才发现是360QVM报的毒。

0x04 免杀QVM

对QVM的免杀非常简单,只需要在VS上面稍做更改。

【免杀】初探卡巴堆加密

【免杀】初探卡巴堆加密

【免杀】初探卡巴堆加密

【免杀】初探卡巴堆加密

更改完成后再次生成release的64版本。
【免杀】初探卡巴堆加密
Ok,这样QVM就不会再报毒了。
0x05 部分代码演示
【免杀】初探卡巴堆加密
这段代码是hook的新的Sleep函数,调用Sleep的时候不会执行原有的Sleep,而是执行这段代码。
利用rand_s函数生成随机的加密密钥。
【免杀】初探卡巴堆加密
这段代码是远程线程执行函数。
注意:如果执行远程线程注入失败的话,请尝试手动打开被注入的进程,或者添加CreateProcess函数打开被注入的进程,或者利用其他的loader实现执行shellcode。
这里演示的进程是edge浏览器。
【免杀】初探卡巴堆加密

这里是main函数,Hookit是挂钩函数,Threadtest是远程线程注入函数,Xydll,xySleep利用字符串分离隐藏字符串。

0x06 检测效果

【免杀】初探卡巴堆加密

【免杀】初探卡巴堆加密

成功免杀火绒360,在核晶模式下成功上线,但是执行命名会被拦截。

【免杀】初探卡巴堆加密

成功免杀卡巴,后续会被卡巴动态拦截。
本次堆加密免杀演示只是提供一种思路,它并不是一个能够用于实战的成品,如果想要成功执行命令而不被拦截需要结合一些免杀手段来达成1+1>2的效果。
成功绕过卡巴动态思路:
这里提供一种思路:VEH(避免二次内存查杀)+堆加密(避免一次内存查杀)+ syscall(绕过对敏感函数挂钩),这种思路能有效免杀卡巴的内存检测,实现上线并执行代码。

如果您对免杀对抗感兴趣,想要深入探讨、交流并学习更多相关内容,欢迎各位师傅加入官方技术交流群!!!(关注公众号,回复【加群】,添加管理员微信,拉您进群)

点击下方名片进入公众号,欢迎关注!

喜欢我们的文章的话,别忘了给我们点个赞哦!感谢您的支持👍

原文始发于微信公众号(赤鸢安全):【免杀】初探卡巴--堆加密

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月18日02:22:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【免杀】初探卡巴堆加密https://cn-sec.com/archives/2668009.html

发表评论

匿名网友 填写信息