工具的使用 | CobaltStrike证书修改躲避流量审查
CobaltStrike证书修改躲避流量审查
目录
Keytool
keystore
创建新的CobaltStrike.store
在红蓝对抗中,防守方往往会有很多的设备审计流量。Cobalt Strike 服务端和客户端是通过 SSL 加密通讯的,默认情况下的SSL配置文件和代理配置文件导致 keystore 文件内容被用于防火墙识别。
✦Keytool
Keytool是一个java数据证书的管理工具,Keytool将密钥 和 证书 存放在一个称为 keystore 的文件中,即.store后缀的文件中。
查看证书文件:keytool -list -v -keystore xx.store
修改证书密码:keytool -storepasswd -keystore test.store
修改keystore的alias别名:keytool -changealias -keystore test.store -alias source_name -destalias new_name
修改alias(别名)的密码:keytool -keypasswd -keystore test.store -alias source_name
✦keystore
Keystore是什么?keystore是java的密钥库,用来进行通信加密,如数字签名。keystore就是用来保存密钥对的,公钥和私钥。Keystore可理解为一个数据库,可以存放很多个组数据。
每组数据主要包含以下两种数据:
- 密钥实体 --- 密钥(secret key)又或者私钥和配对公钥(采用非对称加密)
- 可信任的证书实体 --- 只包含公钥
查看CobaltStrike的默认store文件
keytool -list -v -keystore cobaltstrike.store
可以看出CobaltStrike默认的store文件中的Alias name 、Onwer 和 Issuer 的信息,特征都比较明显。
✦创建新的CobaltStrike.store
而为了掩盖默认SSL证书存在的特征,需要重新创建一个新的不一样的证书 。使用以下命令创建证书:
keytool -keystore cobaltstrike.store -storepass 密码 -keypass 密码 -genkey -keyalg RSA -alias google.com -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"
- -alias 指定别名
- -storepass pass 和 -keypass pass 指定密钥
- -keyalg 指定算法
- -dname 指定所有者信息
删除 CobaltStrike 自带的cobaltstrike.store,使用以下命令生成一个新的 cobaltstrike.store即可!然后客户端连接即可。
keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"
keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
注:我看很多其他文章还需要将cobaltstrike.store文件下载至客户端本地,然后保存为ssl.store
和 proxy.store
两个文件。然后,将它们放入cobaltstrike.jar 中的 resources目录中。但是实际我在配置过程中,并不需要这些步骤。并且,在CobaltStrike3.14版本下,重新生成cobaltstrike.store后启动CobaltStrike会报错无法正常启动。本次环境在CobaltStrike4.0环境下配置成功。
参考文章:http://test666.me/archives/227/
责编:Vivian
来源:谢公子博客
- Linux架构
- 绘图: Python matplotlib简介
- 绘图: matplotlib Basemap简介
- GridView实战二:使用ObjectDataSource数据源控件(自定义缓存机制实现Sort)
- 把孩子打造成为码农
- 分享基于Qt5开发的一款故障波形模拟软件
- 剑指OFFER之打印1到最大的N位数(九度OJ1515)
- GridView实战二:使用ObjectDataSource数据源控件
- javascript实例:逐条记录停顿的走马灯
- Python标准库05 存储对象 (pickle包,cPickle包)
- macOS平台下虚拟摄像头的研发总结
- 网页优化系列三:使用压缩后置viewstate
- 网页优化系列三:使用压缩后置viewstate
- macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android原生项目集成React Native的方法
- Android编程之光线传感器用法详解
- Android Studio 3.0 新功能全面解析和旧项目适配问题
- Android开发中使用外部应用获取SD卡状态的方法
- Android编程使用光线传感器获取光线强弱的方法【LightSensorManager封装类】
- Android开发中的重力传感器用法实例详解
- 腾讯云TKE-Ingress案例: Nginx-Ingress 实现grpc转发
- 机器人软件中间层 yarp-Yet Another Robot Platforms
- 3分钟短文:Laravel写个命令行,你就是下一个Geek!
- Android开发多年每天Crud不清楚自己的技术?来刷刷大厂的高端技术面试题就知道了
- MySQL案例:count(*)效率优化
- MUI进行APP混合开发实现下拉刷新和上拉加载 原创
- Android 给控件添加边框阴影效果
- 详解Android Selinux 权限及问题
- Android图片采样缩放功能实例代码