四步防范Cobaltstrike攻击的方法

0x01 背景

陆陆续续的也学习cs一段时间了,学习的目的是为了能干点事情,结合自己的一个工作性质,(笔者是蓝队做防守的),所以想做一些能用到上的东西来,思来想去就是关于cs的反制手段了,同时前段时间沸沸扬扬的cs漏洞也是反制的点,所以有了本文,本文想详细写写关于cs的一些所谓的反制手段。将部分反制手法研究下能落地实现下。

0x02 本文主要内容

对抗Cobaltstrike中的手段:

  • 1、伪造流量批量上线(欺骗防御)
  • 2、利用漏洞(CVE-2022-39197),反制攻击者,获取aggressor 端的相关信息和相关权限
  • 3、反制server,爆破密码,获取server信息
  • 4、旁路反制

0x03 研究分析以及落地实现

一、伪造流量批量上线(欺骗防御)

1、理论研究

场景:

伪造流量批量上线这个手段是属于技战法里面的欺骗防御,通过伪造上线心跳流量,发送至攻击者的c2,使攻击者的c2同时上线的大量终端:

通常有两种常见场景:

第一种是,发现攻击者对我们单位在进行精准钓鱼,那么我们可以通过这个欺骗防御,来混淆攻击者的视听,让攻击者的c2server上线大量机器,但是攻击者却执行不了任何命令。

第二种是,发现我们内部已经存在被钓鱼上线的机器,那么此时我们通过这种欺骗防御就是来拖延攻击者,使攻击者难辨真假,从而争取一些排查处置的时间。

如何伪造上线流量:

这里我们默认大家对cs流量都有基础了解,不了解的可以先看下笔者之前写的关于cs流量的一篇文章:

这里造上线流量,其实就是造心跳流量,cs4.1默认配置的心跳流量如下图:

图片[1]-四步防范Cobaltstrike攻击的方法-山海云端论坛

这里面,其实核心就是伪造cookie字段,这里的cookie字段在cs里面,我们一般叫“元数据”;

这个元数据是个被RSA公钥加密后的内容,所以我们只要能拿到加密使用的公钥和待加密的明文,我们就可以伪造出来这个”元数据“了

公钥我们先不谈,我们先来看看这里的明文一般长什么样,如下就是该明文的组成: //标志头(4)+Size(4)+Rawkey(16)+字体(4)+beacon ID(4)+ 进程ID(4)+port(2)+内核(4)+09 +失陷IP + 09 + 主机名+ 09 + 用户名+09+进程名

这里我们拿一个例子来看,如下两图,是对一个上述的明文流量的标注:

图片[2]-四步防范Cobaltstrike攻击的方法-山海云端论坛
图片[3]-四步防范Cobaltstrike攻击的方法-山海云端论坛

所以这里我们直接按格式伪造上述流量就可以了,这里有一个比较细节的东西,CS 监听器是怎么来判断一个上线的唯一性的呢,换句话说这里面这么多字段,哪个才是“主键”呢,或者说哪几个一起才是主键呢,我们只要保证n个不同主键,那么就可以伪造n台失陷机器了。

笔者通过实践测试,CS的监听器判断是否是同一个心跳是通过beaconid这个属性来判断,只要这个属性不一样就会被识别成不同的上线流量,感觉cs这里的处理其实不太严谨。

好了这样我们明文流量就可以自己伪造了。

接下来是公钥,拿到公钥就可以对上面伪造的明文流量加密,从而生成cookie字段了。

公钥怎么来呢,我们来分析下:(这个公钥是在首次运行cs server的时候,当没有.cobaltstrike.beacon_keys文件的时候,随机产生的,详情参考)

1、通过一些已知的破解版本里面自带的公钥,可以逐个尝试。

2、攻击者如果是通过stager上线了,即小马拉大马的形式,通过流量设备我们可以获取到拉的beacon,对beacon进行操作,从beacon中可以直接拿到公钥,如下图:

图片[4]-四步防范Cobaltstrike攻击的方法-山海云端论坛

3、攻击者通过stagerless上线,我们需要对样本进行分析,拿到里面的公钥

4、自己做研究的话,可以直接拿到自己cs server端的.cobaltstrike.beacon_keys文件,该文件是RSA密钥对的序列化文件,所以直接从这里可以提出公钥,如下图:

图片[5]-四步防范Cobaltstrike攻击的方法-山海云端论坛

base64解码:

图片[6]-四步防范Cobaltstrike攻击的方法-山海云端论坛

所以到目前为止,我们即有了公钥也有了明文,就可以开始实践了

2、实践落地

笔者这里写了个批量上线的项目:

地址:https://github.com/minhangxiaohui/cobaltstrikefakeup

实践落地:

反序列化还原自己cs server端下的.cobaltstrike.beacon_keys文件,拿到pubkey:package ga0wei.text;

import sleep.runtime.Scalar;

import javax.crypto.Cipher;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Base64;

public class Getkey {
public static void main(String[] args) throws Exception{
PrivateKey privateKey;
Cipher cipher;
//获取密钥对象
ObjectInputStream var2 = new ObjectInputStream(new FileInputStream(“keys”));
Scalar var3 = (Scalar)var2.readObject();
var2.close();
KeyPair keyPair1 = (KeyPair) var3.objectValue();

//初始化cipher对象,准备解密
privateKey =keyPair1.getPrivate();
cipher =Cipher.getInstance(“RSA/ECB/PKCS1Padding”);
cipher.init(2,privateKey);

//元数据
String ciphertext = “WTbGz2y0K24UJovEX+proVDR+jInn7C/H8JwIa3+DCdm+qkSbquSRU2/n/ss8dMUHogaPFIn/N+xaAOW/gmfvu4HfVNF8Kk/XsRN35By03QWKIbhVbNGyZOBwCYGWs3f9XjUa8rqbiHbmRnRppbEpVv/+pvlVqYUh53bFQP9O7E=”;
byte[] cipherbyte = Base64.getDecoder().decode(ciphertext);

//解密
byte[] text = cipher.doFinal(cipherbyte);

//输出文件 和控制台
try(FileOutputStream fos = new FileOutputStream(new File(“Text”))) {
System.out.println(“解密成功”);
fos.write(text);
System.out.println(new String(text));
System.out.println(“privatekey :”+new String(Base64.getEncoder().encode(keyPair1.getPrivate().getEncoded())));
System.out.println(“publickey : “+new String(Base64.getEncoder().encode(keyPair1.getPublic().getEncoded())));
}
}
}

元数据流量:

元数据格式:标志头(4)+Size(4)+Rawkey(16)+字体(4)+beacon ID(4)+ 进程ID(4)+port(2)+内核(4)+0x09 +失陷IP +0x09 + 主机名+ 0x09 + 用户名+0x09+进程名

伪造元数据并定时发送(CS的心跳流量):

使用上文的cobastrikefakeup.py完成元数据的伪造并发送,实现批量为伪上线:

获取到公钥之后运行脚本效果如下:(其中-T参数是指定上线个数,-U参数是指定心跳回连域名,-P参数是公钥)

图片[7]-四步防范Cobaltstrike攻击的方法-山海云端论坛
图片[8]-四步防范Cobaltstrike攻击的方法-山海云端论坛

看过笔者之前写的cs上线流量文章,或者看完上文“批量上线项目”的实现,我们看到上图其实就会知道这个漏洞的是怎么触发的,上图这里其实就是对user的值进行了伪造,使cs的aggressor端对其进行了渲染从而导致其在对应字段加载了一张图片。

我们先来看看这个xss是怎么实现的:

这里我们还是使用上述的项目,伪造发送元数据(伪造心跳流量),稍微做下改变即可:

将上面“用户名”字段内容,替换成如下的payload,并且我们还要把其他的字段内容缩短:

图片[9]-四步防范Cobaltstrike攻击的方法-山海云端论坛
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容