zoukankan      html  css  js  c++  java
  • 针对CobaltStrike中出现的Stager监听端口特征后门分析

    背景

    此前网络上出现了一些针对CobaltStrike的特征检测手段,利用了CS服务器中的一个特征后门来检测CS服务器,做网络测绘,详细文章可以看https://mp.weixin.qq.com/s/BLM8tM88x9oT4CjSiupE2A,网上也出现了一些规避手段,比如讲Starge监听stop掉,但是本人不喜欢这种方式,不够灵活,而且CS的逆向修改也没那么麻烦。另外我觉得描述这个问题也要严谨一些,我叫它特征后门,即通过这个特征能识别端口背后的服务,进而被威胁情报收录。造成这个特征的核心问题是,CS在生成Stager类型的可执行文件时,需要通过监听端口+URI去下载Payload,这个URI生成规则写的真的能算是后门了,只能感叹试用版终归是试用版。我觉得以后真没必要抢先用一些新版本的试用版,尤其是用于实战,你可能并不知道被作者在里面放了些啥,老版本功能够用就可以了。

    这里的生成规则是随机从大写字母+小写字母+数字中取指定长度的几个字符,然后计算ASCII码和模256,符合这个规则就OK了。
    生成URI代码
    然后在Stager服务器的响应代码中,也是同样命中这个规则就会返回Payload代码。

    处理1

    处理这个问题需要修改两个地方的代码,一个是生成URI的代码,一个是Stager服务器响应代码,需要两个地方对应即可。这里给出修改位置:
    生成代码:

    common.CommonUtils
    public static String MSFURI(int paramInt) {...}
    public static String MSFURI_X64() {...}
    

    不建议直接修改Checksum8函数,可以通过新增一个自己编写的函数来实现计算校验和,因为其他地方还会调用common.CommonUtils中的checksum8函数
    Stager响应代码:

    cloudstrike.Webserver
    public static boolean isStager(String uri) {...}
    public static boolean isStagerX64(String uri) {...}
    public Response _serve(String uri, String method, Properties header, Properties param) {...}
    

    修改后重新编译打包即可,这里不再赘述。

    处理2

    实验室同学说,通过nginx反代理配置了C2 Profile的端口,在nginx路由规则中即可限制也可。

  • 相关阅读:
    Docker底层技术了解(3)
    Docker整体结构了解(2)
    Docker简介(1)
    linux常用命令
    python反射
    flask线程隔离技术
    flask核心机制
    并发编程
    socket通信
    网络编程
  • 原文地址:https://www.cnblogs.com/donot/p/14226788.html
Copyright © 2011-2022 走看看