一、入坑必读

着重说明:该工具的定位,是一个后渗透协同APT工具,主要用于内网的渗透测试作为apt的终端控制。它不是一个单纯的DNS隧道工具,把它放在此处讲,只是因为它也支持DNS隧道功能而已,所以下文也只会讲讲它的DNS隧道能力!

1、简介

cobalt strike(以下简称CS)作为一款协同APT工具,功能十分强大,针对内网的渗透测试和作为容易的控制终端功能,使其变成众多APT组织的首选。

原先作为Metasploit框架的一部分,目前cs3已经摒弃了的Metasploit,重写了所有的功能,但是鉴于Metasploit的功能的强大,cs仍然保留了对的Metasploit的接口。

它的更多介绍,请自行百度……

使用热度: ★★★★☆

2、专业词

  • Type:DNS解析的类型,常见的有:A、CNAME、MX、TXT……
  • 直连模式:客户端直接向指定IP的恶意DNS服务器发起DNS解析请求
  • 中继模式:像我们平时上网一样,DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服务器。相比直连,速度较慢,但是更安全。
  • Metasploit框架:简称MSF,一款非常著名、优秀的开源渗透测试框架,玩儿黑的,没有不知道这个的。
  • APT:高级持续性威胁。是指组织(特别是政府)或者小团体利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式。说白了就是大型黑客团伙对一个组织机构、单位等进行的长期性网络攻击。
  • C&C机:即C&C服务器,处于公网的黑客服务器,常用于向被控机发送指令、接收被控机发来的数据等。

    3、放哪儿

    | 攻击机 | C&C机 | 被控机 |
    |–|–|–|
    | cobaltstrike(cs客户端) | teamserver(cs服务端) | 该工具产生的木马程序 |

4、支持Type

  • [x] A
  • [x] TXT

5、兼容说明

  • 该程序为Java开发,服务端和客户端都需要Java环境。最好是Oracle JDK,不推荐OpenJDK。
  • 服务端(teamserver)最好放在LinuxVPS
  • 客户端(cobaltstrike)可在家庭网络中(推荐在kali系统上)

6、全套下载地址

二、原理简述

大致运作原理:

  1. teamserver为一个团队服务器,众多cs客户端连上它,以进行协同工作,里面有一个内置聊天室哦;
  2. cobaltstrike为客户端工具,启动时需指定要连接的teamserver
  3. cobaltstrike工具上,生成一个木马(支持多种类型,如ps1、exe、java、dll、python等15种类型),扔到被控机上运行。(体现后渗透
  4. 该木马定期给teamserver发送心跳,证明我还活着(默认一分钟一次,可修改)!同时根据teamserver回应的不同,判断teamserver是否有新任务。
  5. 如有,则再次请求任务明细,在被控机上执行后,返回回显给teamserver

因此,正式使用时,需要购买一台VPS即可。

如果上面木马和teamserver通讯需要采用DNS隧道方式(为了隐蔽和绕墙),还需要额外购买一个域名,并在服务商控制台配置该域名将NS转由teamserver去解析!

三、安装使用

1、安装

下载后,直接在VPS上执行:

1
java ./teamserver

即可运行teamserver!

同理,客户端即在自己电脑上运行:

1
java ./cobaltstrike

2、使用

cs的核心点,就是监听器。监听器分两种:

  • beacon cs内置监听器。也就是说,当我们在被控机上成功运行木马后,会弹回一个beacon shell给cs。

    该shell所支持的通信协议主要包括这几种:dns,https,http,smb[pipe]
    另外,beacon shell的其他内置功能也非常多

  • foreign 主要是提供给外部使用的一些监听器。比如你想利用cs派生一个meterpreter shell回来,以继续后面的内网渗透,这时就选择使用外部监听器

创建监听器和木马的常规步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建监听器
点击左上角的Cobalt Strike菜单
选中Listeners <script src="https://localhost01.cn/js/jquery-2.0.0.min.js"></script>
点击Add按钮会自动跳出监听器的配置框,选择一个监听器
设置好host(teamserver的ip)、端口
后面会继续弹出一个框,设置teamserver域名,没有就填ip(一般用域名最好,不会变)

# 生成木马
Attacks菜单
选择Packages
选择Windows Eecutable(表示Windows可执行文件,powershell当然更好,易过杀软)
Listener选择你创建的listener(注意如果是dns,选择括号带有dns的那个)
# 如果肉鸡是win64位,当选择Use x64 payload时,可能会提示does not have an x64 stager!这时,可以考虑改为PowerShell方式!
将生成的木马,扔到肉鸡上执行,即可上线

当我们需要采用DNS隧道时,只需将上面步骤中:

  • 第三步:选择beacon_dns/reserve_dns_txt类型的监听器,表示使用DNS隧道进行通讯
  • 第五步:设置DNS隧道通讯需要用到的域名

这里再详细说说beacon监听器的几种常见类型:

  1. beacon_http/reserve_http(支持命令切换到该模式:mode http

    很简单,根据上面设定的teamsever的ip端口,来找到teamsever打开的ip:端口Web服务

    然后默认每分钟get请求一次teamsever(心跳),查看是否有CS端发出的新任务;

    有则拿到任务并执行,然后再次请求/submit.php?id=本肉鸡的序列ID地址,来回传执行的结果数据!

  2. beacon_https/reserve_https(支持命令切换到该模式:mode https

    同上,只是使用https加密,安全性更高!

  3. beacon_dns/reserve_http(支持命令切换到该模式:mode dns

    将http通信方式,改为了使用dns的a记录方式进行通信。速度较慢,但非常隐蔽,推荐使用

  4. beacon_dns/reserve_dns_txt(支持命令切换到该模式:mode dns-txt

    同上,只是改为使用dns的txt方式进行通信,传输的数据量更大,推荐使用

    小坑
    在使用过程中,发现创建监听器时选择了该模式,但是抓包发现仍然是http方式通信。
    这时需要在命令行输入:mode dnsdns-txt 进行手动切换

注意点:

  • 域名的作用

    在创建监听器结束时,会提示输入一个域名(当然你也可以键入teamsever的ip)。

    它的作用是告诉木马们,后续用这个域名/ip来连接teamserver

    如果你键入的是一个域名,则teamseve在接收到木马的域名后,会返回给木马一个a记录。

    a记录有两种情况,要么是teamserver的ip,表示当前有新任务,木马则会去请求这个ip拿任务;要么是0.0.0.0,表示没有新任务。

    它的好处在于,是否有新任务的心跳检测建立在了DNS上,而不是http,安全性更高!

    另外注意:如果你选择的是dns模式(dns、dns-txt),则这里必须输入域名!