malleable_profile文件配置概述

参考资料

Cobalt Strike Malleable C2 配置


通用知识概述

malleable_profile文件配置概述_第1张图片

上面四条叫做终止语句。作用是将数据存储到不同的地方,由上到下依次为http头,get请求中,http body中,url中。

malleable_profile文件配置概述_第2张图片

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

不同请求方式中不同组件的用法如下图
malleable_profile文件配置概述_第3张图片

header与parameter 只能用在client与server中。不能用在metadata id 与output模块中。


http通信部分

http-get块

malleable_profile文件配置概述_第4张图片

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

http-post块

这里先说client模块
malleable_profile文件配置概述_第5张图片

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

http-stager块

malleable_profile文件配置概述_第6张图片

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


http服务配置

http-config块

malleable_profile文件配置概述_第7张图片

如上代码块配置了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文件
malleable_profile文件配置概述_第8张图片
将store路径改一下再改一下后面的使用store文件所需的密码,这个密码是你在使用keytool途中让你输入的那个密码。

第三步
更改profile文件
例如
malleable_profile文件配置概述_第9张图片
上述数据必须得跟你自己使用keytool工具的时候填写的数据相同。
https-certificate中各个项的参考解释:
malleable_profile文件配置概述_第10张图片

附录
同样的你也可以创建合法的的SSL证书,这里提供一种解决方案(从CS4.0手册中摘录)
malleable_profile文件配置概述_第11张图片

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


PE文件和内存相关

相关参数
malleable_profile文件配置概述_第13张图片

stage块

这个模块主要控制的是beacon在内存中的加载以及编辑beacon dll中的内容

malleable_profile文件配置概述_第14张图片
内存规避检测与混淆中常用的参数
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块

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

malleable_profile文件配置概述_第15张图片

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

execute块

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

malleable_profile文件配置概述_第17张图片
上图为相关参数。


后渗透模块:

malleable_profile文件配置概述_第18张图片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 你的配置文件的路径“这个命令查看是否配置成功。

你可能感兴趣的:(渗透测试基础知识,cobalt,strike相关,安全)