用户
搜索
  • TA的每日心情
    无聊
    2021-7-2 11:36
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看

    i春秋-呆萌菜鸟

    Rank: 1

    0

    主题

    2

    帖子

    92

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2021-1-14
    发表于 2021-6-23 15:45:18 41432
    本帖最后由 shadowje 于 2021-6-23 15:46 编辑

    任意RAT改加载器Bypass

    前言

    ​                沉寂许久,时隔良久,赴当年之约,感触良多。百川赴海返潮易,一叶报秋归树难。今天分享一篇任意RAT Bypass杀软的思路,提供思路仅供参考,不提供任何源码。文章中提到的地方若有错误的地方请指正。

    直入主题,目前RedTeam的主流RAT无非就Cobalt Strike。其他的RAT大多基于C/C#开发(这里不做讨论),小众点的RAT,BUG,兼容性等一系列体验感不是很好。而Cobalt Strike的特征已经被各大厂商记录到特征库中,所以用Cobalt Strike做Bypass的效果并不是很友好。

    此次测试使用的杀毒软件是国内Three Hundred sixty,以及Tinder(自行翻译,懂得都懂,毕竟ByPass见光死),RAT使用的是gh0st的变种。(使用gh0st原因简单阐明:特征多,容易被杀)

    正文

    0X00

    ​                这里笔者拿国内的老版本RAT进行测试。仅提供研究思路,不提供任何源码。

    ShellBase、ShellCode、RomteLoad工程源码使用VS2010编译,念旧。在打开的时候默认VS2019,见谅!Gh0st源码使用VC++6.0编译。

    之前研究目前主流的RAT以及国内一些老版本的RAT,这里笔者就拿国内的老版本RAT进行测试。因为较CS,国内老版RAT特征多能够更好的体现笔者的思路。

    0X01

    ​                国内的RAT是基于gh0st以及gh0st的变种。知名的如大灰狼、灰鸽子等。其中,主流的写法是功能插件化(功能插件化,这一点跟CS差不多,插件化的优越性大家都知道的,(简单概括就是:方便、快捷),然后用外壳内存加载功能插件,主机上线后通过IOCP协议传输来调用功能,形成Payload -- Server  ==> Client为一体的工作环境。

    服务控制端过程大概是:

    功能集成Server.dll => 16进制加密Server.dll => 外壳Install解密内存加载Server.dll => 生成二进制可执行文件

    0X02

    ​                经分析发现现在的杀毒对于这种写法基本看的很死 比如Three Hundred sixty会把一个exe文件区块化去查杀 导致实际操作去Bypass时,做好的Server端一次Bypass基本2-5天就被再次查杀。

    原因:Bypass基本思路都是 杀小红伞基本去处理输入表 杀QVM一般处理代码段。所以,从根本上来看是没改变这种写法的

    笔者的思路是通过下载把Server.dll直接下载到内存里,然后再执行。

    过程大概是:Server.dll => 16进制加密Server.dll => 把Server.dll放到下载地址然后base64加密 => 加载器解密地址下载到内存执行

    这种思路对Cobalt Strike也适用,笔者可以准确标明,经本人亲自测试可行。

    0X03

    ShellBase是写的对地址进行base64加密的工具

    Shellcode是更改对Server.dll的16进制加密器

    首先生成一个Server.dll 然后生成加密器和Url加密器。

    通过Three Hundred sixty云查杀发现被杀

    运行ShellCode加密Server.dll后查杀可发现已经不杀了

    笔者来对比一下ShellCode加密前后的Server.dll


    可以看到是经过加密且Bypass。

    接下来笔者把加密好的Shellcode.dll放到Http下载地址里。(Http下载服务器搭建,笔者在这里就不详细说明)
    将URL:http://URL/ShellCode.dll 加密,得到加密过后的下载地址:TVFRVR8KClxLT0ATExMLQxYWFxcLS0BRCmxLUUBXS0BRBXZNSldRRlBRC3VASlVJQAt3QElAU0RLRkALdFBAV1xmSUxAS1ELcHdpJQ==

    在这里有一个注意点,笔者用的这个地址加密不只有Base64,还有Rc4,所以大家解不开是正常的。

    这就是上面提到的思路,他是一个加载器(或者通俗点下载者),其作用是:

    解密 ==> 加密后的地址 ==> 下载文件到内存 ==> 执行

    测试上线,这里选择虚拟机测试,懂得都懂,毕竟后门或者啥的我也没仔细去看。


    经测试,国内Three Hundred sixty,以及Tinder无感执行。至于微步云沙箱或者别的沙箱,笔者就不上传了,免得被记录特征导致代码失效。

    这个思路基本印证了笔者的想法 ,Three Hundred sixty对于二进制文件是区块化的查杀。这个是笔者研究yara规则时发现的。好了,笔者思路分享就到此结束,大家再会!!!

    ShellCode.png
    ShellBase.png
    老哥厉害,顶顶!
    使用道具 举报 回复
    caocaocao 发表于 2021-6-25 14:57
    老哥厉害,顶顶!

    谢谢,暂忙,今天有时间看帖子,很高兴师傅评论,衷心感谢
    使用道具 举报 回复
    发表于 2021-6-29 19:22:00
    老哥很强,帮顶
    My blog :http://www.e-wolf.top
    使用道具 举报 回复
    发表于 2021-6-30 08:24:56

    蟹蟹蟹蟹
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册