Go语言免杀的一些思路
2023-6-11 20:23:4 Author: 0x00实验室(查看原文) 阅读量:50 收藏

免杀分两种,单体的和分离的。  不管是单体还是分离,其实原理都很简单。  就是一个 loader,一个 shellcode。  单体就是把 shellcode 写死在 loader 里面。  分离就是 loader 和 shellcode 分开写

本质没有什么区别,分离是因为 shellcode 写死在 loader 里面,被杀的太厉害了,因此才需要分离。

单体免杀,可以用开源项目

https://github.com/aeverj/NimShellCodeLoader

效果还可以,能上线,但是不稳定,上线之后建议立即迁移进程

先用 cs 生成 raw 格式的 shellcode,然后加载进 loader

然后得到一个exe

直接丢到有最新版 360 的环境

这边也是成功上线了

迁移进程,防止本体被杀

Kill 本体进程,删除本体exe

然后用这个进程继续操作,这个方法的缺点就是没有持久化,一旦关机,机器就下线了,但是可以适用于一些不需要持久化的项目,上线之后迅速打完内网,然后收工。火绒也可以过。

但是过不了defender

    分离的话,loader github 上有很多,很多都能过 360,如果不能过,稍微改改就能过了。Defender 这里我是用的分离的过的,因为项目还在用,这里先不放源码出来。

但是思路可以讲,本质国内过的这些杀软,比如 360,火绒,df,主要还是在查特征。这里为了控制变量,我的 cobaltstrike 用的是纯净版的,就不涉及流量层面的免杀。如果是说更高级一点的杀软,比如 nod32,卡巴斯基,以及国外很强的 edr crowdstrike等,这些都会对流量做检测,有些还会 hook windows 底层的函数,就不只是特征这么简单了。

因此过国内这些,其实就是不断的去 fuzz 特征,然后规避特征去做绕过,和绕 waf 是一个道理,相对来讲,国内主流的三大项,360,火绒,df,过起来还是很简单的。上难度,卡巴斯基,nod32cs,过起来难一些,但是也并非无解,无非就是多花一些时间罢了

来源:

https://github.com/biggerduck/RedTeamNotes

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5MDY2MTUyMA==&mid=2247490559&idx=1&sn=dece77d890604d07eabcd60399e7048e&chksm=cfd86400f8afed16d0495c74a7336b3c88d0899e9485edd0a51ee64160e0400fb5522da43f93#rd
如有侵权请联系:admin#unsafe.sh