malleable_profile文件配置概述

参考资料

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 你的配置文件的路径“这个命令查看是否配置成功。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shanfenglan7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值