0X01 环境准备

Cobalt Strike安装包

Cobalt Strike服务端:kali(不限于kali,但需要时Linux系统)

Cobalt Strike客户端:Windows 7

0X02 Cobalt Strike介绍

Cobalt Strike是一款美国 Red Team 开发的渗透测试平台,大佬们都称之为 "CS " (后面为了描(tou)述(lan),也沿用此称谓)。

CS 以Metasploit为基础,集成了扫描、端口转发、提权、Socket代理、木马生成、文件捆绑、网站克隆、多模式端口监听、自动化溢出、钓鱼攻击等强大的功能,该工具几乎覆盖了APT攻击链中所需要用到的各个技术环节。

为什么好多软件使用CS架构 cs软件全称是什么_监听器

CS的强大主要用于大型APT组织的团队作战,采用C/S架构,能让各个地方的团队成员同时连接到团队服务器,共享信息资源和攻击成果,可谓是团队作战的神兵利器,因其强大的功能和灵活的架构,已成为各大APT组织的首选。

为什么好多软件使用CS架构 cs软件全称是什么_服务器_02

CS这么好用,其实是一款需要付费的项目,价格也不高(๑乛◡乛๑),3500刀/年,支持正版的小伙伴出门右拐:

CS项目官网地址:https://www.cobaltstrike.com


Cobalt Strike文件结构

这里使用的是CS 3.14版本,下载Cobalt Strike之后,其文件结构如下所示:

为什么好多软件使用CS架构 cs软件全称是什么_服务端_03

部分文件解释说明:

│  agscript 		拓展应用的脚本
│  c2lint  			检查profile的错误异常
│  cobaltstrike
│  cobaltstrike.jar 客户端程序
│  icon.jpg			图标
│  license.pdf		许可证文件
│  readme.txt
│  releasenotes.txt
│  teamserver  		服务端程序
│  update
│  update.jar		更新程序
│
└─third-party 第三方工具
     README.vncdll.txt
     vncdll.x64.dll
     vncdll.x86.dll

0X03 Cobalt Strike服务端安装

将CS文件夹拷贝到Linux主机下,这里需要注意一下,需要提前安装 java 环境,我这里是kali,已经集成了 openjdk 环境。

切到CS目录下,服务端安装使用teamserver脚本文件:

为什么好多软件使用CS架构 cs软件全称是什么_服务器_04

接下来直接运行脚本配置团队服务器IP与密码即可:

./teamserver 服务器IP 密码

为什么好多软件使用CS架构 cs软件全称是什么_服务端_05

到这里,CS服务端的搭建就完成了,so easy!!!

0X04 客户端上线

将CS文件夹拷贝到windows机器下,运行“cobaltstrike.exe”文件:

为什么好多软件使用CS架构 cs软件全称是什么_服务端_06

运行后会弹出一个框,输入我们前面搭建好的团队服务器 IP 地址,默认端口50050,不用设置,用户名随意,密码也是前面配置团队服务器用到的密码,然后点击“Connect”连接服务器:

为什么好多软件使用CS架构 cs软件全称是什么_服务端_07

首次连接会提示校验服务端哈希,确认我们连接的服务器是自己团队的,指纹信息应和配置团队服务器后生成的哈希值相同。

为什么好多软件使用CS架构 cs软件全称是什么_服务器_08

至此,我们就完成了CS的服务端部署和客户端上线:

为什么好多软件使用CS架构 cs软件全称是什么_为什么好多软件使用CS架构_09

0X05 主要功能说明

(1)Listeners

使用CS时需要先创建一个Listerer(监听器),可以理解为用来监视我们的目标主机,并接收目标主机权限的模块。

打开方式:点击Cobalt Strike—>Listeners,或者点击工具栏的耳机图标。

为什么好多软件使用CS架构 cs软件全称是什么_监听器_10

然后点击Add即可添加需要的Listeners了,Cobalt Strike 3.14 包括9种监听方式:

windows/beacon_dns/reverse_dns_txt

windows/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

其中windows/beacon是CS自带的模块,包括dns、http、https、smb四种监听方式;windows/foreign为外部监听器,即msf或者Armitage的监听器。

选择监听器后,配置好主机IP和端口,然后保存,监听器就创建完成了。

为什么好多软件使用CS架构 cs软件全称是什么_服务器_11

(2)Attacks

创建好了监听器,就可以利用各种攻击手段攻陷我们的目标了。CS包括多中攻击方式.

Packages

为什么好多软件使用CS架构 cs软件全称是什么_为什么好多软件使用CS架构_12

HTML Application 生成恶意的HTA木马文件
MS Office Macro 生成office宏病毒文件
Payload Generator 生成各种语言版本的payload
USB/CD AutoPlay 生成利用自动播放运行的木马文件
Windows Dropper 捆绑器,能够对文档类进行捆绑;
Windows Executable 生成可执行exe木马;
Windows Executable(S)生成无状态的可执行exe木马。

Web Drive-by(钓鱼攻击)

为什么好多软件使用CS架构 cs软件全称是什么_服务端_13

Manage对开启的web服务进行管理;
Clone Site 克隆网站,可以记录受害者提交的数据;
Host File 提供一个文件下载,可以修改Mime信息;
Scriptes Web Delivery类似于msf 的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

用于制作钓鱼邮件攻击。

为什么好多软件使用CS架构 cs软件全称是什么_服务器_14

(3)View

View模块可以方便测试者查看各个模块,图形化的界面可以方便的看到受害者机器的各个信息。

为什么好多软件使用CS架构 cs软件全称是什么_服务端_15

Applications 显示受害者机器的应用信息;
Credentials 显示受害者机器的凭证信息,能更方便的进行后续渗透;
Downloads 文件下载;
Event Log 可以看到事件日志,清楚的看到系统的事件,并且团队可以在这里聊天;
Keystrokes 查看键盘记录;
Proxy Pivots 查看代理信息;
Screenshots 查看屏幕截图;
Script Console 在这里可以加载各种脚本以增强功能,脚本地址戳我;
Targets 查看目标;
Web Log 查看web日志。

beacon

beacon为CS 内置监听器,当我们在目标系统成功执行payload以后,会弹回一个beacon的shell给CS.

我们也可以理解为beacon就是我们目标主机的shell,不管我们何种方式获取shell后,就可以使用beacon,当目标主机上线后,右击目标主机,点击Interact,就打开了beacon:

为什么好多软件使用CS架构 cs软件全称是什么_为什么好多软件使用CS架构_16

这里需要注意,beacon的命令和操作系统的shell不太一样,比如cmd下查看IP信息用“ipconfig”命令,在beacon下则用“shell ipconfig”。

可以在beacon下输入“help”命令查看可以使用的命令:

Beacon>help

    Command                   Description
    -------                   -----------
    browserpivot              注入受害者浏览器进程
    bypassuac                 绕过UAC
    cancel                    取消正在进行的下载
    cd                        切换目录
    checkin                   强制让被控端回连一次
    clear                     清除beacon内部的任务队列
    connect                   Connect to a Beacon peer over TCP
    covertvpn                 部署Covert VPN客户端
    cp                        复制文件
    dcsync                    从DC中提取密码哈希
    desktop                   远程VNC
    dllinject                 反射DLL注入进程
    dllload                   使用LoadLibrary将DLL加载到进程中
    download                  下载文件
    downloads                 列出正在进行的文件下载
    drives                    列出目标盘符
    elevate                   尝试提权
    execute                   在目标上执行程序(无输出)
    execute-assembly          在目标上内存中执行本地.NET程序
    exit                      退出beacon			
    getprivs                  Enable system privileges on current token
    getsystem                 尝试获取SYSTEM权限
    getuid                    获取用户ID
    hashdump                  转储密码哈希值
    help                      帮助
    inject                    在特定进程中生成会话
    jobkill                   杀死一个后台任务
    jobs                      列出后台任务
    kerberos_ccache_use       从ccache文件中导入票据应用于此会话
    kerberos_ticket_purge     清除当前会话的票据
    kerberos_ticket_use       从ticket文件中导入票据应用于此会话
    keylogger                 键盘记录
    kill                      结束进程
    link                      Connect to a Beacon peer over a named pipe
    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                      Set parent PID for spawned post-ex jobs
    ps                        显示进程列表
    p**ec                    Use a service to spawn a session on a host
    p**ec_psh                Use PowerShell to spawn a session on a host
    psinject                  在特定进程中执行PowerShell命令
    pth                       使用Mimikatz进行传递哈希
    pwd                       当前目录位置
    reg                       Query the registry
    rev2self                  恢复原始令牌
    rm                        删除文件或文件夹
    rportfwd                  端口转发
    run                       在目标上执行程序(返回输出)
    runas                     以另一个用户权限执行程序
    runasadmin                在高权限下执行程序
    runu                      Execute a program under another PID
    screenshot                屏幕截图
    setenv                    设置环境变量
    shell                     cmd执行命令
    shinject                  将shellcode注入进程
    shspawn                   生成进程并将shellcode注入其中
    sleep                     设置睡眠延迟时间
    socks                     启动SOCKS4代理
    socks stop                停止SOCKS4
    spawn                     Spawn a session 
    spawnas                   Spawn a session as another user
    spawnto                   Set executable to spawn processes into
    spawnu                    Spawn a session under another PID
    ssh                       使用ssh连接远程主机
    ssh-key                   使用密钥连接远程主机
    steal_token               从进程中窃取令牌
    timestomp                 将一个文件时间戳应用到另一个文件
    unlink                    Disconnect from parent Beacon
    upload                    上传文件
    wdigest                   使用mimikatz转储明文凭据
    winrm                     使用WinRM在主机上生成会话
    wmi                       使用WMI在主机上生成会话
    argue                     进程参数欺骗

大扎好,我是基于搜索引擎的安全咸鱼工程师,欢迎关注! 么!!!