前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战 | CS反制之批量伪装上线

实战 | CS反制之批量伪装上线

作者头像
F12sec
发布2022-09-29 20:38:14
7890
发布2022-09-29 20:38:14
举报
文章被收录于专栏:F12sec

这是F12sec的第69篇原创

申明:本次测试只作为学习用处,请勿未授权进行渗透测试,切勿用于其它用途!

本文章来自团队师傅考研勇士,转载请注明来源

1.漏洞背景

先来张效果图

分析原理:

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

CS生成马

受控机上线并抓包

可以看到CS的上线过程中,有一串很明显的加密Cookie,

查找资料得知,是非对称RSA加密类型,需要一个私钥Private Key才能对其进行解密

我们对Cookie解密看看,网上找到了相关的代码提取PrivateKey与Public Key

注意,实战中我们肯定拿不到PrivateKey的,这里只是弄出来分析一下加密的Cookie里有啥)

代码语言:javascript
复制
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");
        }
    }
}

代码来自:

https://research.nccgroup.com/2020/06/15/striking-back-at-retired-cobalt-strike-a-look-at-a-legacy-vulnerability/

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

java -cp“cobaltstrike.jar” Dumpkeys.java

解密完可以看到HTTP类型Beacon上线包里的Cookie是RSA加密过的主机元数据。

解密网站:

https://the-x.cn/cryptography/Rsa.aspx

既然知道了上线的流量过程,我们模拟Cobalt Strike模拟重放一下上线的过程

可以看到通过重放数据包,last被重制为1s,这就说明我们成功了。

实战环境下可以写循环语句,不停模拟上线操作,让攻击者即使能够上线也无法执行命令

当然,如果只是这样那就不会这篇文章了。

继续沿着思路展开,既然数据包中的核心是加密后的Cookie,我们能否进行伪造,达到假的主机上线效果?

答案是可以的

只要知道加密的过程,我们就可以达到伪造的目的

于是,现在的目标很明确,研究加密过程

以上来自:

https://www.secpulse.com/archives/165561.html

核心:

StagerUrl校验算法

Beacon配置的解密算法

其实Stager就是小马拉大马的操作

上线的时候先投递一个小巧的Stager Payload,然后通过Stager 去Beacon Staging Server的某个URL下载完整的Stage(也就是体积更大功能更复杂的Payload),并将其注入内存。

如何得到那个URL?

CS中Stager URL校验算法,就是生成4位的随机校验码,将校验码拼接到URL后面即可请求到Stage的代码

拿到Stage

Beacon配置解密

这里有两个项目地址都可以进行解密操作:

https://github.com/Sentinel-One/CobaltStrikeParser

https://blog.didierstevens.com/2021/06/15/update-1768-py-version-0-0-7/

第一个项目效果:可以看到我们从stage中得到了Public Key 这意味着我们可以自己对数据进行加密了

Python parse_beacon_config.py stage文件--json

第二个项目效果:不知道为什么这个项目解出来的是串十六进制字符串?我尝试还原了一下。。。没能还原出第一个项目中的Public Key(有了解的大佬麻烦解答一下 感激不尽)

解密后可以看到:公钥PublicKey以及CS服务器地址

坑点:Public key别忘了要删点后面的无效Padding

正确的格式是MIGfXXXXXXXXXXXXXXXX==

也就是说我图中的Public Key 后面那一堆AAAAA要删掉

接下来思路:

加密伪造,向C2服务发送欺骗包

伪造服务器上线。

虽然网上已经有类似项目了,但我还是决定造个轮子试试。

先分析一下各十六进制位都代表了啥

我们只要对着改就行了

Beacon id

Beacon pid

Beacon ip

Computer name

User_name

Process_name

00000000: 00 00 BE EF 00 00 00 52 0A 0E 06 0D 07 06 06 03 .......R........

00000010: 0F 01 03 01 02 09 0D 0E A8 03 A8 03 00 05 AA 3D ...............=

00000020: 00 00 8E 89 00 00 04 06 02 23 F0 00 00 00 00 76 .........#.....v

00000030: 91 0A 60 76 90 F5 50 00 00 A8 C0 57 49 4E 2D 74 ..`v..P....WIN-t

00000040: 68 69 73 69 73 61 74 65 73 74 47 35 09 4C69 41 hisisatestG5.LiA

00000050: 6F 09 54 65 73 74 2E 65 78 65 o.Test.exe

脚本写完了在已有项目上做了些许优化

在Process_name.txt 中加入上线进程的字典

在Computer_name.txt 中加入受控机名称的字典

在User_name.txt 中加入受控机用户名的字典

在Public_key中放入通过Beacon解密获得的Publickey

效果如下:

项目地址:

https://github.com/LiAoRJ/CS_fakesubmit

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 F12sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.漏洞背景
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档