CS工具使用
https://www.jianshu.com/u/23b447f36f98
1、如何搭建自己的渗透测试环境
0x00 前言
第一次接触CS的时候,是有人在群里发了一个CS最新版的安装包,当时第一反应,CS ???
作为小白的我,在角落里看着群里的大佬们讨论的十分起劲儿,而我这个萌新对于他们所讨论的东西却听都没听过。
于是乎,新的一期学习笔记开整,本期学习笔记如题:《Cobalt Strike学习笔记》,简称《CS学习笔记》,这期笔记预计会更新28篇文章,学习资源来自B站视频,视频链接在文章底部。
由于这只是学习笔记,因此不会像教程一样详尽,一些我个人已经了解的东西或许不会记在笔记里,因此把笔记当做教程阅读是不合适的。
0x01 CS是什么?
Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。
Cobalt Strike集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。
早期版本Cobalt Srtike依赖Metasploit框架,而现在Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端(Client)与服务端(Teamserver),服务端是一个,客户端可以有多个,团队可进行分布式协团操作。
这个工具的社区版是大家熟知的Armitage(一个MSF的图形化界面工具),而Cobalt Strike大家可以理解其为Armitage的商业版。
0x02 CS的发展
Armitage [2010-2012]
Armitage是一个红队协作攻击管理工具,它以图形化方式实现了Metasploit框架的自动化攻击。Armitage采用Java构建,拥有跨平台特性。
Cobalt Strike 1.x [2012-2014]
Cobalt Strike 增强了Metasploit Framework在执行目标攻击和渗透攻击的能力。
Cobalt Strike 2.x [2014-?]
Cobalt Strike 2是应模拟黑客攻击的市场需求而出现的,Cobalt Strike 2是以malleable C2技术的需求为定位的,这个技术使Cobalt Strike的能力更强了一些。
Cobalt Strike 3.x [2015-?]
Cobalt Strike 3的攻击和防御都不用在Metasploit Framework平台(界面)下进行。
0x03 使用到的工具
Cobalt Strike
Kali
Metasploit Framework
PowerSploit
PowerTools
Veil Evasion Framework
2、如何连接团队服务器
0x00 前言
上一篇说了一些有的没的,现在来正式学习Cobalt Strike。
Cobalt Strike使用C/S架构,Cobalt Strike的客户端连接到团队服务器,团队服务器连接到目标,也就是说Cobalt Strike的客户端不与目标服务器进行交互,那么Cobalt Strike的客户端如何连接到团队服务器就是本文所学习的东西。
0x01 准备工作
Cobalt Strike的客户端想连接到团队服务器需要知道三个信息:
团队服务器的外部IP地址
团队服务器的连接密码
(此项可选)决定Malleable C2工具的哪一个用户配置文件被用于团队服务器
知道这些信息后,就可以使用脚本开启团队服务器了,值得注意的是Cobalt Strike团队服务器只能运行在Linux环境下。
0x02 开启团队服务器
开启团队服务器命令一般如下所示:
服务端开启后,就可以开启客户端进行连接了
0x03 连接到团队服务器
在Linux下,直接运行start.sh脚本文件,输入团队服务器的IP、密码和自己的用户名进行连接
点击Connect连接后,会有个提示信息,如果承认提示信息中的哈希值就是所要连接团队服务器的哈希值就点击Yes,随后即可打开CS客户端界面
在Windows下的连接方法也基本一致,直接双击start.bat文件,输入IP、密码、用户名,点击Connect即可
在连接后,团队之间就可以通过客户端进行沟通,信息共享
Cobalt Strike不是用来设计指导在一个团队服务器下进行工作的,而是被设计成在一次行动中使用多个团队服务器。
这样设计的目的主要在于运行安全,如果一个团队服务器停止运行了,也不会导致整个行动的失败,所以接下来看看如何连接到多个团队服务器。
0x05 连接到多个团队服务器
Cobalt Strike连接到多个团队服务器也很简单,直接点击左上角的加号,输入其他团队服务器的信息后,即可连接
3、如何进行分布操作
0x00 最基本的团队服务模型
这里介绍最基本的团队服务模型,具体由三个服务器构成,具体如下所示:
临时服务器(Staging Servers)
临时服务器介于持久服务器和后渗透服务器之间,它的作用主要是方便在短时间内对目标系统进行访问。
它也是最开始用于传递payload、获取初始权限的服务器,它承担初始的权限提升和下载持久性程序的功能,因此这个服务器有较高暴露风险。
持久服务器(Long Haul Servers)
持久服务器的作用是保持对目标网络的长期访问,所以持久服务器会以较低的频率与目标保持通信。
后渗透服务器(Post-Exploitation Servers)
主要进行后渗透及横向移动的相关任务,比如对目标进行交互式访问
0x01 可伸缩红队操作模型
可伸缩红队操作模型(Scaling Red Operations)分为两个层次,第一层次是针对一个目标网络的目标单元;第二层次是针对多个目标网络的权限管理单元。
目标单元的工作:
负责具体目标或行动的对象
获得访问权限、后渗透、横向移动
维护本地基础设施
访问管理单元的工作:
保持所有目标网络的访问权限
获取访问权限并接收来自单元的访问
根据需要传递对目标单元的访问
为持续回调保持全局基础环境
0x02 团队角色
开始渗透人员
主要任务是进入目标系统,并扩大立足点
后渗透人员
主要任务是对目标系统进行数据挖掘、对用户进行监控,收集目标系统的密钥、日志等敏感信息
本地通道管理人员
主要任务有建立基础设施、保持shell的持久性、管理回调、传递全局访问管理单元之间的会话
0x03 日志记录
Cobalt Strike的日志文件在团队服务器下的运行目录中的logs
文件夹内,其中有些日志文件名例如beacon_11309.log
,这里的11309
就是beacon会话的ID。
按键的日志在keystrokes
文件夹内,截屏的日志在screenshots
文件夹内,截屏的日志名称一般如screen_015321_4826.jpg
类似,其中015321
表示时间(1点53分21秒),4826
表示ID
4、快速登陆和生成会话报告
0x00 介绍
Cobalt Strike生成报告的目的在于培训或帮助蓝队,在Reporting
菜单栏中就可以生成报告,关于生成的报告有以下特点:
输出格式为PDF或者Word格式
可以输出自定义报告并且更改图标(Cobalt Strike --> Preferences -->Reporting)
可以合并多个团队服务器的报告,并可以对不同报告里的时间进行校正
0x01 导出报告类型
活动报告(Activity Report) 此报告中提供了红队活动的时间表,记录了每个后渗透活动。
主机报告(Hosts Report) 此报告中汇总了Cobalt Strike收集的主机信息,凭据、服务和会话也会在此报告中。
侵害指标报告(Indicators of Compromise) 此报告中包括对C2拓展文件的分析、使用的域名及上传文件的MD5哈希。
会话报告(Sessions Report) 此报告中记录了指标和活动,包括每个会话回连到自己的通信路径、后渗透活动的时间线等。
社工报告(Social Engineering Report) 此报告中记录了每一轮网络钓鱼的电子邮件、谁点击以及从每个点击用户那里收集的信息。该报告还显示了Cobalt Strike的System profiler发现的应用程序。
5、如何建立Payload处理器
这一小节学起来感觉有些吃力,里面很多概念理解的不是很清楚,如果有大佬看到描述错误的地方欢迎留言指正,避免误导他人。
再次声明,这只是我的个人学习笔记,不要当成教程去看,建议想学习CS的小伙伴可以看看A-TEAM的中文手册或者网上的一些视频教程。
0x00 监听器管理
什么是监听器
顾名思义,监听器就是等待被入侵系统连接自己的一个服务。
监听器的作用
主要是为了接受payload回传的各类数据,类似于MSF中handler的作用。
比如payload在目标机器执行以后,就会回连到监听器然后下载执行真正的shellcode代码。
一旦监听器建立起来,团队成员只需要知道这个监听器的名称即可,不用关心监听器背后的基础环境,接下来将深入了解如何准确配置监听器。
一个监听器由用户定义的名称、payload 类型和几个特定于 payload 的选项组成。
监听器的名字一般由以下结构组成:
例如:
0x01 什么是传输器
攻击载荷payload
就是攻击执行的内容。攻击载荷通常被分为两部分:传输器stager
和传输体stage
。
传输器stager
是一个小程序,用于连接、下载传输体stage
,并插入到内存中。
我个人理解为:攻击载荷里真正用于攻击的代码是在传输体里。
所以为什么要有传输体?直接把攻击载荷插入到内存中不更方便快捷、更香么,搞得又是传输器又是传输体的。
需要传输体是因为在很多攻击中对于能加载进内存,并在成功漏洞利用后执行的数据大小存在严格限制。这就导致在攻击成功时,很难嵌入额外的攻击载荷,正是因为这些限制,才使得传输器变得有必要了。
0x02 创建监听器
在CS客户端中打开 Cobalt Strike —》Listeners,之后点击Add,此时弹出New Listener窗口,在填写监听器的相关信息之前,需要先来了解监听器有哪些类型。
Cobalt Strike有两种类型的监听器:
Beacon
Beacon直译过来就是灯塔、信标、照亮指引的意思,Beacon是较为隐蔽的后渗透代理,笔者个人理解Beacon类型的监听器应该是平时比较常用的。Beacon监听器的名称例如:
Foreign
Foreign直译就是外部的,这里可以理解成
对外监听器
,这种类型的监听器主要作用是给其他的Payload提供别名,比如Metasploit 框架里的Payload,笔者个人理解Foreign监听器在一定程度上提高了CS的兼容性。对外监听器的名称例如:
0x03 Beacon是什么
Beacon是CS的Payload
Beacon有两种通信模式。一种是异步通信模式,这种模式通信效率缓慢,Beacon回连团队服务器、下载任务、然后休眠;另一种是交互式通信模式,这种模式的通信是实时发生的。
通过HTTP、HTTPS和DNS出口网络
使用SMB协议的时候是点对点通信
Beacon有很多的后渗透攻击模块和远程管理工具
0x04 Beacon的类型
HTTP 和 HTTPS Beacon
HTTP和HTTPS Beacon也可以叫做Web Beacon。默认设置情况下,HTTP 和 HTTPS Beacon 通过 HTTP GET 请求来下载任务。这些 Beacon 通过 HTTP POST 请求传回数据。
DNS Beacon
SMB Beacon
SMB Beacon也可以叫做pipe beacon
0x05 创建一个HTTP Beacon
点击 Cobalt Strike --> Listeners 打开监听器管理窗口,点击Add,输入监听器的名称、监听主机地址,因为这里是要创建一个HTTP Beacon,所以其他的默认就行,最后点击Save
此时可以测试一下刚才设置的监听器,点击Attack --> Web Drive-by --> Scripted Web Delivery(s) ,在弹出的窗口中选择刚才新添的Listener,因为我的靶机是64位的,所以我把Use x64 payload也给勾选上了,最后点击Launch
复制弹窗的命令,放到靶机中运行
此时,回到CS,就可以看到已经靶机上线了
0x06 重定向器
刚才创建了一个HTTP Beacon,接下来来看一下重定向器Redirectors
重定向器是一个位于CS团队服务器和目标网络之间的服务器,这个重定向器通俗的来说就是一个代理工具,或者说端口转发工具,担任CS服务器与目标服务器之间的跳板机角色,整体流量就像下面这样。
重定向器在平时的攻击或者防御的过程中起到很重要的作用,主要有以下两点:
保护自己的CS服务器,避免目标发现自己的真实IP
提高整体可靠性,因为可以设置多个重定向器,因此如果有个别重定向器停止工作了,整体上系统依旧是可以正常工作的
0x07 创建一个重定向器
这里就使用自己的内网环境作为测试了,首先理清自己的IP
CS服务器IP:192.168.175.129
目标靶机IP:192.168.175.130
重定向器IP:192.168.175.132、192.168.175.133
首先,需要先配置重定向器的端口转发,比如这里使用HTTP Beacon,就需要将重定向器的80端口流量全部转发到CS服务器上,使用socat的命令如下:
如果提示没有socat命令,安装一下即可。重定向器设置好之后,就新建一个HTTP Beacon,并把重定向器添加到HTTP Hosts主机列表中
此时可以测试一下重定向器是否正常工作,在CS中打开 View --> Web Log,之后浏览器访问CS服务器地址,也就是这里的192.168.175.129
可以看到CS是能够正常接收到流量的,说明重定向器已经配置OK了,此时按照上面创建一个HTTP Beacon的操作,创建一个HTTP Beacon,并在靶机中运行
当靶机上线的时候,观察靶机中的流量,可以看到与靶机连接的也是重定向器的IP
在CS中也可以看到上线主机的外部IP也是重定向器的IP,此时如果关闭一个重定向器,系统依旧可以正常工作。
0x08 HTTPS Beacon
Last updated
Was this helpful?