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文件配置概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_41874930/article/details/107791606
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/198748

相关文章

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1

mybatis的mapper对应的xml写法及配置详解

《mybatis的mapper对应的xml写法及配置详解》这篇文章给大家介绍mybatis的mapper对应的xml写法及配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录前置mapper 对应 XML 基础配置mapper 对应 xml 复杂配置Mapper 中的相

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Logback在SpringBoot中的详细配置教程

《Logback在SpringBoot中的详细配置教程》SpringBoot默认会加载classpath下的logback-spring.xml(推荐)或logback.xml作为Logback的配置... 目录1. Logback 配置文件2. 基础配置示例3. 关键配置项说明Appender(日志输出器

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总