malleable_profile文件配置概述

2023-10-12 21:59

本文主要是介绍malleable_profile文件配置概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 参考资料
  • 通用知识概述
  • http通信部分
      • http-get块
      • http-post块
      • http-stager块
  • http服务配置
      • http-config块
  • ssl证书以及代码签名配置
  • PE文件和内存相关
      • stage块
      • process-inject块
      • execute块
  • 后渗透模块:

参考资料

Cobalt Strike Malleable C2 配置

Malleable profile模版下载
CS官方解释malleable profile


通用知识概述

在这里插入图片描述

上面四条叫做终止语句。作用是将数据存储到不同的地方,由上到下依次为http头,get请求中,http body中,url中。header与parameter 只能用在client与server中。不能用在metadata id 与output模块中。
exp:
parameter “ver” “1.2.4”;

在这里插入图片描述

上图为数据转换语言。就是将传输的数据进行格式的转化。其中append与prepend是可以混合使用的,例如在真正的数据前后分别加上干扰数据,这样子能一定程度隐藏数据。
netbios是smb传输的时候根据主机名的编码方式,mask为异或,base64url编码后的数据是可以直接放在url中的。

不同请求方式中不同组件的用法如下图
在这里插入图片描述

  • beacon与c2通信逻辑

1.stager的beacon会先下载完整的payload执行,stage则省略这一步
2.beacon进入睡眠状态,结束睡眠状态后用 http-get方式 发送一个metadata(具体发送细节可以在malleable_profie文件里的http-get模块进行自定义),metadata内容大概是目标系统的版本,当前用户等信息。
3.如果存在待执行的任务,则c2会响应这个metadata发布命令。beacon将会收到具体任务内容与一个任务id。
4.执行完毕后beacon将回显数据与任务id用post方式发送回C2(细节可以在malleable_profile文件中的http-post部分进行自定义),然后又会回到睡眠状态。

参考资料
https://www.chabug.org/web/832.html


http通信部分

http-get块

在这里插入图片描述

如上图所示。设定了victim的beacon发送给c2的metadata的相关配置。
1.在clent部分中,先设置了一个http header头,然后在uri中存储一个参数。
2.然后又设置了在metadata数据在传输的时候,先base64加密然后在加密后的数字前面加上”"token=”这个字段,然后将所有的值填写在Cookie字段中。
3.在server部分,先设置两个header头。然后更改相应内容然后base64编码,然后把数据放在在body里。

http-post块

这里先说client模块
在这里插入图片描述

这里面的id代表的是task id,任务执行后,beacon需要利用post方式来与c2进行通信,需要传送一个唯一的task id值,还需要传送回显。例如ipconfig命令,就会传送命令的结果等。上面的header头就跟之前的header头的用途一致。client中的output代表的是客户端发送给服务端的响应用什么形式发送,如上图中就为base64加密。server部分跟client比较类似所以不做太多讲述。

http-stager块

在这里插入图片描述

这个代表的是存放x64或者x86架构的stage payload的地址,主要针对于stager类型的木马有用,定义的是下载stage payload的时候的请求方式。


http服务配置

http-config块

http-config代码块会影响Cobalt Strike所有HTTP响应。

在这里插入图片描述

如上代码块配置了http响应头的部分信息,set headers代表的是相应头的显示顺序。后面的header是给部分相应头赋值。最后一个set trust_x_forwarded_for,当使用c2重定向技术的时需要设置这个点。


ssl证书以及代码签名配置

第一步
用keytool生成一个store文件(自签名)
首先解释一下,store文件是证书跟私钥的一个集合体。
keytool -genkey -alias shanfenglan -keyalg RSA -validity 36500 -keystore perfect.store
-genkey 必备命令。
-alias 别名。
-keyalg 加密方式。
-validity 到期时间。
-keystore 生成store文件。
生成store文件后放在与cobaltstrike相同的目录下即可。

第二步
更改teamserver文件
在这里插入图片描述
将store路径改一下再改一下后面的使用store文件所需的密码,这个密码是你在使用keytool途中让你输入的那个密码。

第三步
更改profile文件
例如
在这里插入图片描述
上述数据必须得跟你自己使用keytool工具的时候填写的数据相同。
https-certificate中各个项的参考解释:
在这里插入图片描述

附录
同样的你也可以创建合法的的SSL证书,这里提供一种解决方案(从CS4.0手册中摘录)
在这里插入图片描述

配置代码签名
在这里插入图片描述
利用这个块需要有keystore文件,并建议将keystore文件与这个profile文件放在 同一文件夹内,其中的各个参数就是你在创建keystore文件的时候输入的参数,第一个为keytool文件名,第二个为你自己创建的密码,第三个为你创建的别名。


PE文件和内存相关

stage块

相关参数
在这里插入图片描述
这个模块主要控制的是beacon在内存中的加载以及编辑beacon dll中的内容
在这里插入图片描述
内存规避检测与混淆中常用的参数
1.strrep
Strrep “A” “B” 将A替换为B。
2.sleep_mask
Set sleep_mask “true”; 设置使beacon在睡眠之前混淆内存中的代码,睡眠后对自己进行混淆处理。
3.obfuscate
set obfuscate “true”; 高度混淆内存中的代码。
4.stomppe
Set stomppe “true”;轻度混淆内存中的代码。
5.userwx
Set userwx “false”; 要求beacon程序避免rwx权限,因为这种权限的内存段很容易引起关注。
进程注入中的相关参数:

process-inject块

用来控制远程进程注入的细节。

在这里插入图片描述

具体条目的含义:
在这里插入图片描述
transform-x86/x64块:
用来填充beacon的注入内容,它支持两个命令,prepend与append,但是需要确保填充的数据是合法的代码的十六进制模式。execute控制beacon在注入代码的时候使用的方法。

execute块

execute块控制beacon在进程注入的时候使用的方法。

在这里插入图片描述
上图为相关参数。


后渗透模块:

在这里插入图片描述Post-ex块为后渗透模块。cs在执行后渗透功能如hash转储的时候,会派生一个新的进程并将功能注入其中。
1.spawnto_x86/x64表示的是派生后的默认临时进程。
注意:
1.值要用程序的完整路径,可以使用环境变量。x86后面必须跟x86程序的路径,x64亦然。
2.路径不能直接使用%windir%\system32 或者c:\windows\system32,应使用syswow64(x86)和sysnative(x64),beacon会自动调整。
3.你指定的路径必须同时存在于文件系统x64与x86的视图中。
2.obfuscate表示会以更安全的方式对post-ex dll的内容进行加密,并将post-ex的功能放在内存中。
3.smartinject选项使得进程注入更加智能,会将某一些关键函数的指针嵌入到post-ex dll中方便使用。
4.amsi_disable选项知识powerpick execute-assembly和psinject在加载.NET或者powersehll代码之前修补amsiscanbuffer函数,这限制了杀毒软件扫描借口对这些功能的可见性,换句话说就是使用这个参数后可以增加隐蔽性。

tips
配置完成后记得使用 ”./client 你的配置文件的路径“这个命令查看是否配置成功。

这篇关于malleable_profile文件配置概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198748

相关文章

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

使用Python实现网络设备配置备份与恢复

《使用Python实现网络设备配置备份与恢复》网络设备配置备份与恢复在网络安全管理中起着至关重要的作用,本文为大家介绍了如何通过Python实现网络设备配置备份与恢复,需要的可以参考下... 目录一、网络设备配置备份与恢复的概念与重要性二、网络设备配置备份与恢复的分类三、python网络设备配置备份与恢复实