Cobaltstrike内网渗透神器入门使用教程

Posted Tr0e

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cobaltstrike内网渗透神器入门使用教程相关的知识,希望对你有一定的参考价值。

前言

内网渗透是每一个安全工程师绕不过去的难题,往往内网渗透要比其他方面的渗透测试更为头疼,其实主要原因还是在大家对攻入目标网络的环境感到陌生罢了。第一次进入目标内网,独自一人面对庞大的目标系统网络、各种复杂的分区结构,很容易犯迷糊。如果这时能有个 Team 帮助你一起探索内网、一起协作,显然会使得内网渗透的难度大大降低。本文要介绍的就是业内知名的一款能够用于内网渗透时团队协同作战的工具“Cobalt Strike”。
在这里插入图片描述
Cobalt Strike 是一款美国 Red Team 开发的渗透测试神器,常被业界人称为 CS。它是一款以 Metasploit 为基础的 GUI 的框架式渗透工具,集成了端口转发、服务扫描、自动化溢出、多模式端口监听、Winexe 木马生成、Win dll 木马生成、Java 木马生成、office宏病毒生成、木马捆绑等;钓鱼攻击包括:站点克隆、目标信息获取、Java执行、浏览器自动攻击等。Cobalt Strike 项目的官网地址:https://www.cobaltstrike.com

Cobalt Strike 主要用于团队作战,可以说是内网渗透中的团队渗透神器, CobaltStrike 能够让多个攻击者同时连接到团队服务器上,共享攻击资源与目标信心和 Session。要知道众人拾柴火焰高的道理,当我们发现一个内网控制点后,为了使我们的攻击收益最大化,最好的办法就是跟团队共享资源,给其他成员提供同样的接入点,Cobalt Strike 很好的做到了这一点。因此 Cobalt Strike 作为一款协同 APT 工具,针对内网的渗透测试和作为 APT 的终端控制功能,使其变成众多 APT 组织的首选工具。
在这里插入图片描述
实际上 Cobaltstrike 的社区版是大家熟知的 Armitage (一个 MSF 的图形化界面工具),而 Cobaltstrike 大家可以理解其为 Armitage 的商业版。关于 MSF 框架和 Armitage 图形工具的简介,可参加我的另一篇博文:渗透测试-Metasploit实战
在这里插入图片描述

基本使用

Cobalt Strike 4.0的下载和中文使用手册地址:渗透利器Cobalt Strike4.0下载(附汉化版、视频教程、中文使用手册、插件)

CS服务搭建

Cobalt Strike 分为客户端和服务端,可分布式操作、协同作战。服务器端只能运行在 Linux 系统中,可搭建在 VPS 上,团队成员使用的图形化客户都安界面(Client GUI) 连接服务端。
在这里插入图片描述服务端搭建

将下载后的 Cobaltstrike 4.1 安装包上传到 VPS 服务器上并解压缩,服务端关键的文件是 teamserver,先将其修改位可执行文件,再执行./teamserver可以看到如下说明:
在这里插入图片描述解释下启动参数含义:

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

那么执行以下命令启动 CS 服务:
在这里插入图片描述以上就成功搭建好 Cobaltstrike 服务端了,请注意两点:

  1. Team server 必须以 root 权限运行,以便于监听端口号为 0–1023 的 Listener;
  2. 同时服务端默认使用 50050 端口监听来自团队成员 CS Client 的连接请求。

客户端连接

Cobaltstrike 客户端在 Windows、Linux、Mac下都可以运行 (需要配置好 Java 环境)。启动 Cobalt Strike 客户端,输入服务端的IP以及端口、连接密码,用户名可以任意设置:
在这里插入图片描述如图已成功连接到 CS 服务端:
在这里插入图片描述

CS功能概览

|Cobalt Strike
|<-------New Connection #建立新的连接,允许连接多个服务器端
|<-------Preferences  #偏好设置(界面、控制台样式设置等)
|<-------Visualization #窗口视图模式(结果输出模式)
              |<-------Pivot Graph #透视图模式
              |<-------Session Table #Session表模式
              |<-------Target Table #目标表模式
|<-------VPN Interfaces #VPN接入
|<-------Listeners #监听器(创建Listener)
|<-------Script Manager #脚本管理功能

|View
|<-------Applications #显示目标机的应用信息
|<-------Credentials #凭证(所有通过Mimikatz抓取的密码都存储在这里)
|<-------Downloads #下载文件
|<-------Event Log #事件日志,主机上线记录及团队交流记录
|<-------Keystrokes #键盘记录
|<-------Proxy Pivots #代理模块
|<-------Screenshots #查看目标机截图
|<-------Script Console #脚本控制台
|<-------Targets #显示目标主机
|<-------Web Log #Web日志

|Attacks
|<-------Packages
              |<-------html Application #生成恶意的HTA木马
              |<-------MS Office Macro #生成Office宏病毒文件
              |<-------Payload Generator #生成各种语言版本的payload
              |<-------USB/CD AutoPlay #生成自动播放执行的木马文件
              |<-------Windows Dropper #捆绑器、实现对文档类进行捆绑
              |<-------Windows Executable #生成EXE的payload
              |<-------Windows Executable(S) #把包含payload,Stageless生成EXE
|<-------Web Drive-by #钓鱼攻击
              |<-------Manage #对开启的Web服务进行管理
              |<-------Clone Site #克隆网站
              |<-------Host File #提供Web以供下载某文件
              |<-------Scripted Web Delivery #提供Web以供下载powershell
              |<-------Signed Applet Attack #使用java自签名的程序进行钓鱼
              |<-------Smart Applet Attack #自动检测java版本进行攻击
              |<-------System Profiler #用来获取系统信息
|<-------Spear Phish #邮件钓鱼

|Reporting #报告展示模块

权限获取

了解了 Cobalt Strike 界面上所提供的功能后,接下来演示下 Cobalt Strike 的使用方法。使用 Cobalt Strike 最主要的目的是为了让团队的其他成员也能够对我们控制的内网肉鸡进行操作,所以我们第一步肯定是让我们的内网受控机成功上线。

配监听器&生成Payload

1、访问监听器功能:
在这里插入图片描述
2、创建新的监听器:
在这里插入图片描述
监听器的各类参数如下:

参数释义
name为监听器名字,可任意
payloadpayload类型
HTTP Hostsshell反弹的主机,也就是我们 CS 服务器的 IP
HTTP Hosts(Stager)Stager的马请求下载payload的地址
HTTP Port(C2)C2监听的端口

Cobaltstrike 4.1 版本提供了 8 种监听器,

  1. beacon_xx 系列为 Cobalt Strike 自身内置的监听器,即在目标主机执行相应的payload,获取 shell 到 CS 上,包括 dns、http、https、smb 四种方式的监听器;
  2. foreign 系列为外部监听器,通常与 MSF 或者 Armitage 联动,例如获取 meterpreter 到 MSF上。

生成 Payload

假设我们控制了一台 WIN7 的内网主机,想要生成一个 EXE 类型的 Payload 文件,可使用 Cobalt Strike 自带的 Attacks 模块生成我们所需要的Payload 文件:
在这里插入图片描述

选择监听器为上面新增配置的监听器 Test:
在这里插入图片描述

运行Payload & Beacon

将生成的 Payload 文件 artifact.exe 传 输到 Win7 虚拟机(受害主机)并双击运行 Payload:
在这里插入图片描述接着即可看到 Cobalt Strike 客户端出现了目标主机的信息,同时团队的其他成员也都可以对这台机器进行操作了:
在这里插入图片描述

Beacon

成功将所控制的目标机资源上线之后,团队内的其他成员即可对该台机器进行进一步渗透。团队成员通过点击目标机右键,选择 Interact 功能(进入 beacon),就可以用它来执行各种命令,开始对目标及进行操作:
在这里插入图片描述【注意】

  1. 在 Cobalt Strike 中,默认心跳为 60s(即 CS 与受害机默认 60s 才进行一次交互),故执行命令的响应速度很慢,在下载文件时更加明显,所以根据实战环境把时间降低,建议不要太快,否则流量会相对明显。在这里执行命令 sleep 5 可以把交互时间设置为 5 秒。
  2. 同时在 beacon 中,如果想对目标进行命令管理,需要在前面加上shell关键词,如shell whoamishell ipconfig等。

在这里插入图片描述
但是团队成员所能操作的就是 Beacon 所提供的各种命令,接下来我们来看一看 Beacon 都提供了什么指令给渗透人员,执行 help 命令即可参看各项命令说明:
在这里插入图片描述
进一步可用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在主机上生成会话

下面看一下一些实际的命令执行效果:

1、keylogger 键盘记录
在这里插入图片描述
在靶机浏览器输入访问百度的请求:
在这里插入图片描述查看键盘记录:
在这里插入图片描述2、screenshot 屏幕截图
在这里插入图片描述
查看截图结果:
在这里插入图片描述

3、net view 查看局域网主机
在这里插入图片描述
4、portscan 执行端口扫描
在这里插入图片描述如图可以选择目标靶机右键勾选执行操作:
在这里插入图片描述
此时 Beacon 中会自动执行对应命令并输出:
在这里插入图片描述

社会工程

接下来简单看下 CS 里面的社会工程学功能:
在这里插入图片描述

克隆网站&键盘记录

该模块用来克隆一个网站,来获取用户的键盘记录:
在这里插入图片描述被克隆的站点为:
在这里插入图片描述此时靶机(物理机或者随便一个主机都行)访问目标链接:
在这里插入图片描述此时访问 Web 日志功能可以查看用户输入的密码信息:
在这里插入图片描述同时记录往用户的输入,站点会自动跳转到真实的站点链接上:
在这里插入图片描述

社工邮件&链接传送

接下来继续看下 CS 的一个社工功能——社工邮件:
在这里插入图片描述
配置社工邮件:
在这里插入图片描述
配置描述:

targets    发送的目标信息,可导入本地的txt 格式:xxxx@xxx.com
tmplate    邮件模板,一般在邮件的更多选项中 ,选择导出,或者显示原文
attachment 附件
Embed URL  要嵌入的网址(可以是社工链接)
Mail server SMTP
Bounce to  模仿发件人
preview    预览我们的模板文件 

其中邮件模板的获取如:
在这里插入图片描述此处 MailServer 配置一直失败,原因不详,请知情大佬赐教……

主机进阶

为了方便接下来的演示,将 Win7 靶机切换到管理员账户后重新上线:
在这里插入图片描述【Win7 切换到管理员账户的方法】以管理员身份运行 CMD,执行命令:net user administrator /active:yes,重启 Windows 系统,然后切换 Administrator 账户登录即可,或者进入桌面后注销,切换到其他账户登录。

抓取Hash和dump明文密码

这两项功能都需要管理员权限,如果权限不足,需要先提权。

1、抓取主机用户密码 Hash 值(也可以直接输入命令:hashdump
在这里插入图片描述2、使用 mimikatz 抓取明文密码(也可以直接输入命令:logonpasswords):
在这里插入图片描述

3、抓取完之后,点击 “凭证信息”,就会显示我们抓取过的哈希或者明文。这里我们也可以手动添加或修改凭证信息:
在这里插入图片描述使用在线 Hash 计算对比下已知的密码:
在这里插入图片描述同时发现管理员账户是空密码:
在这里插入图片描述

【注意】内网渗透有一个技术很实用的技术就是,密码喷洒攻击。说白就是拿收集到的靶机密码去碰撞内网其他主机的密码,往往会发现很多主机密码是相同的!详情可参见:域内用户枚举和密码喷射浅析

普通权限用户提权到管理员

实际上内网渗透经常碰见的情况就是拿到 shell 后发现是普通管理员,这个时候为了获得更高权限、读取密码 hash 等就需要尝试进行提权了。为了进行演示实验,我们将 Win7 靶机继续切换回普通用户登录并上线到 CS 中:
在这里插入图片描述1、尝试进行主机提权:
在这里插入图片描述选择监听器和 EXP(此版本的 CS 只有两类提权的 EXP):
在这里插入图片描述
2、提权失败:
在这里插入图片描述3、该默认 EXP 无法提权没关系,我们还可以自己加入一些提权脚本进去。在 Github 上有一个提权工具包,使用这个提权工具包可以增加几种提权方法:https://github.com/rsmudge/ElevateKit 。下载好该提权工具包后,导入:
在这里插入图片描述此时再选择提权则有多种 EXP 可以选择了:
在这里插入图片描述
4、发现使用 ms14-058 可成功提权,CS 弹回来一个 system 权限的 beacon :
在这里插入图片描述5、提权后可以抓取主机用户密码 Hash 值了:

在这里插入图片描述

Socks4 代理实现内网穿透

当我们控制的主机是一台位于公网和内网边界的服务器 ,我们想利用该主机继续对内网进行渗透,于是,我们可以利用 CS 来建立 Socks4 代理。

1、首先我们先在 Win7 靶机搭建 DVWA 服务:
在这里插入图片描述2、接着设置 Socks4 代理:
在这里插入图片描述需要输入一个未占用的端口即可,CS 会给出一个默认端口,我们直接点击开始即可。
在这里插入图片描述
3、至此便完成在自己的主机上设置 Socks4 代理(代理 IP 是我们 CS 服务端的 IP,端口即是 1485),如果我们想查看整个 CS 代理的设置,可以点击 View 查看:
在这里插入图片描述
4、接下来,我在一台连接着我手机热点(1号WIFI)的电脑的谷歌浏览器设置代理,如下图所示:
在这里插入图片描述
5、然后访问 http://192.168.0.106/DVWA/login.php 即可成功访问到家用网络 WIFI 环境(2号WIFI)下的 Win7 靶机的内网服务(DVWA靶场),实现内网穿透:
在这里插入图片描述
【注意】实战经验总结:

  1. 在实际的渗透测试过程中,我们可以借助已经拿到 Shell 的外网靶机(此处的 Win7) 当跳板机,访问靶机所在的内网的主机和 Web 服务,使用 Socks4 代理即可在自己的物理机中访问到目标内网的服务;
  2. 虽然上述直接在物理机的浏览器设置 CS 服务器 IP 的代理可以达到访问目标内网的目的,但是这样子我们没法使用 BurpSuite 开展进一步的渗透测试,因此还可以用另一种流量代理方案——在浏览器设置 Burp 代理,然后在 Burp 中设置 CS 服务器的 Socks4 代理:

在这里插入图片描述

总结

Cobaltstrike 功能强大复杂,篇幅所限,不再继续展开介绍,更多教程请参见:

  1. 安全客谢公子的文章(很全): CobaltStrike使用详解
  2. Cobaltstrike 的批量详细使用教程:CN-SEC 中文网
  3. 语雀 xiaogege-yxttw 大佬的专栏:Cobaltstrike
  4. Github资源合集:Awesome-CobaltStrike
  5. Cobaltstrike 中文使用手册:百度网盘链接,密码: nifi

以上是关于Cobaltstrike内网渗透神器入门使用教程的主要内容,如果未能解决你的问题,请参考以下文章

内网渗透神器CobaltStrike之钓鱼攻击

内网渗透工具CobaltStrike使用教程详解

一次实战内网漫游

用Powershell框架Empire进行内网域渗透(一)

[ 常用工具篇 ] CobaltStrike(CS神器)基础 -- 安装及设置监听器详解

渗透测试利器【Cobalt Strike】CDN隐匿