Cobalt Strike
有多个选项,有助于在目标上建立初始访问。这些选项包括剖析潜在目标、创建payload
和投放payload
。
# 5.1、客户端 System Profiler
System Profiler
是一个为客户端攻击提供的侦察工具。这个工具启动一个本地的 web
服务器,并对访问者进行指纹识别。System Profiler
提供通过用户浏览器发现的应用和插件的列表。System Profiler
也会尝试去发现代理服务器背后的用户的内网 IP
地址。
要启动system profiler
,点击主菜单上的Attacks -> System Profiler
。要启动system profiler
,必须指定要绑定的 URI
和启动 Cobalt Strike Web
服务器的端口。
如果指定了一个 Redirect URL
(重定向 URL
),则一旦探针被访问,Cobalt Strike
会重定向浏览者(在此也就是受害者)到这个指定的 URL
。单击 Launch
以启动 System Profiler
。
System Profiler
使用未签名的 Java Applet
来发现目标的内部 IP
地址并确定目标使用哪个版本的 Java
。因为 Java
的点击运行安全特性,这可能会引起怀疑。取消勾选Use Java Applet to get information
(使用 Java 小程序获取信息)框来从 System Profiler
中移除Java Applet
。
选中Enable SSL
框以通过 SSL
为 System Profiler
提供服务。默认情况下是禁用的,除非使用 Malleable C2
指定有效的 SSL
证书,后续章节会详细说明。
Application Browser
要查看 System Profiler
的结果,点击 View -->Applications
。Cobalt Strike
将列出它在系统分析过程中发现的所有应用程序。
提示
应用程序浏览器包含大量有用信息,可用于计划有针对性的攻击。下面介绍如何充分利用这一输出:
internal IP
地址字段是从未签名的Java Applet
收集的。如果该字段显示未知,则表示该Java Applet
可能没有运行。如果在这里看到一个 IP
地址,这意味着未签名的 Java
小程序运行了。
Internet Explorer
会报告用户安装的基本版本。当 Internet Explorer
更新时,报告的版本信息不会改变。Cobalt Strike
会使用 JScript.dll
版本来估算Internet Explorer
的补丁级别。访问 support.microsoft.com
,搜索JScript.dll
的版本号(版本字符串中的第三个数字),将其映射到Internet Explorer
更新。
应用程序旁边的*64
表示它是 x64
应用程序。
# 5.2、Cobalt Strike Web服务
许多 Cobalt Strike
功能都在其自己的 Web
服务器上运行。这些服务包括system profiler
、HTTP Beacon
和 Cobalt Strike
的web drive-by
攻击。可以在一台 Web
服务器上托管多个 Cobalt Strike
功能。
要管理 Cobalt Strike
的 web
服务,点击主菜单上的Site Management -> Manage
。
在这里,你可以复制任何 Cobalt Strike URL
到剪贴板或停止一个 Cobalt Strike web
服务。
点击 View → Web Log
来监视到你的Cobalt Strike web
服务的访问。
如果 Cobalt Strike
的Web
服务器接收到来自 Lynx
、Wget
或 Curl
浏览器的请求,Cobalt Strike
将自动返回 404
页面。Cobalt Strike
这样做是为了防止蓝队探测。可使用 Malleable C2
的".http-config.block_useragents "
选项进行配置。
# 5.3、用户驱动的攻击包
最好的攻击不是漏洞利用。相反,最好的攻击利用正常功能来执行代码。 Cobalt Strike
可以轻松设置多种由用户驱动的攻击。这些攻击利用你已经设置的监听器。
点击Payloads
并选择下列选项之一:
# 5.3.1、HTML Application
HTML Application
是用 HTML
和Internet Explorer
支持的脚本语言编写的 Windows
程序。该程序包生成一个运行 Cobalt Strike
监听器的 HTML
应用程序。
点击Payloads -> HTML Application
,打开HTML Application Attack
配置面板
参数:
-
Listener:按
...
按钮,选择要输出payload
的Cobalt Strike
监听器。 -
Method :使用下拉列表选择以下方法之一来运行选定的监听器
- Executable:该方法将可执行文件写入磁盘并运行
- PowerShell:使用
PowerShell
单行代码来运行payload stager
- VBA:此方法使用
Microsoft Office
宏将payload
注入内存。VBA
方法需要目标系统上安装有Microsoft Office
。
# 5.3.2、MS Office Macro
Microsoft Office
宏工具可生成一个宏,嵌入到 Microsoft Word
或 Microsoft Excel
文档中。
点击Payloads -> MS Office Macro
,打开MS Office Macro
配置面板
选择一个监听器,然后点击Generate
按钮,会弹出一个如何将恶意宏嵌入到 Microsoft Word
或 Excel
文档中的说明。点击Copy Macro
将宏代码复制到剪贴板。
如果你能说服用户在打开文档时运行宏,那么这种攻击就会很有效。
# 5.3.3、Payload Generator(Payload生成器)
Cobalt Strike
的payload
生成器(Payload Generator
)可以生成多种格式的stager
将 Cobalt Strike
监听器安装到主机上。可以将其视为 Cobalt Strike
版本的 msfvenom
。
点击Payloads -> Stager Payload Generator
打开Payload Generator
面板:
参数选项:
-
Listener :点击
...
选择一个监听器。 -
Output:选择
payload
输出格式。(大多数选项都会提供格式化为该语言的字节数组形式的shellcode
)- C:字节数组格式的
Shellcode
- C#:字节数组格式的
Shellcode
- COM Scriptlet:运行监听程序的
.sct
文件 - Java:字节数组格式的
Shellcode
- Perl:字节数组格式的
Shellcode
- PowerShell:执行
shellcode
的PowerShell
脚本 - PowerShell Command:用于运行
Beacon stager
的PowerShell
单行代码。 - Python:字节数组格式的
Shellcode
- Raw:位置无关的
shellcode
的blob
- Ruby:字节数组格式的
Shellcode
- Veil:适合与
Veil Evasion Framework
一起使用的自定义shellcode
。 - VBA:字节数组格式的
Shellcode
- C:字节数组格式的
-
x64 :选中该复选框可为所选监听器生成
x64 stager
设置好Listener
和Output
后,点击Generate
生成payload
。
**Payload Generator (stageless)**无阶段payload生成器
Cobalt Strike
的payload
生成器可以生成无阶段的payload
。
点击Payloads -> Stageless Payload Generator
:
参数选项:
-
Listener:点击
...
选择一个监听器。 -
Guardrails:同前
-
Output:选择
payload
输出格式。(大多数选项都会提供格式化为该语言的字节数组形式的shellcode
)- C:字节数组格式的
Shellcode
- C#:字节数组格式的
Shellcode
- Java:字节数组格式的
Shellcode
- Perl:字节数组格式的
Shellcode
- Python:字节数组格式的
Shellcode
- Raw:位置无关的
shellcode
的blob
- Ruby:字节数组格式的
Shellcode
- VBA:字节数组格式的
Shellcode
- C:字节数组格式的
-
Exit Function:该函数决定执行退出命令时
Beacon
使用的方法/行为。- Process:终止整个进程
- Thread:仅终止当前线程
-
System Call:从
Cobalt Strike UI
或支持的攻击者功能生成无阶段Beacon payload
有时,选择在执行时使用以下系统调用方法之一:- None:使用标准
Windows API
函数 - Direct:使用
Nt*
版本的函数。 - Indirect:跳转到
Nt*
版本函数中的相应指令。
- None:使用标准
-
x64:选中该复选框可为所选监听器生成
x64 stager
点击Generate
生成payload
# 5.3.4、Windows Executable
该程序包生成一个 Windows
可执行 Artifact
,用于传送一个 payload stager
。
点击Payloads -> Windows Stager Payload
打开Windows Executable
面板
参数选项:
-
Listener :选择一个监听器
-
Output:选择一个输出格式
-
Windows EXE :一个windows可执行程序
-
Windows Service EXE:可以响应
Service Control Manager
命令的Windows
可执行文件。可以使用此可执行文件通过sc
创建Windows
服务,或使用Metasploit Framework
的PsExec
模块创建自定义可执行文件。 -
Windows DLL:导出与
rundll32.exe
兼容的StartW
函数的Windows DLL
。使用rundll32.exe
从命令行加载DLL
。rundll32 foo.dll,StartW
-
-
x64:生成与
x64 stager
配对的x64 artifact
。默认情况下,此对话框导出x64 payload stagers
。 -
sign:使用代码签名证书签署
EXE
或DLL
文件。必须在Malleable C2
配置文件中指定证书。
点击Genetate
创建一个payload stager artifact
。
Cobalt Strike
使用其 Artifact Kit
来生成此输出。
# 5.3.5、Windows Executable (Stageless)
将 Beacon
导出为不带 stager
的可执行文件、服务可执行文件、32 位DLL
或 64 位 DLL
,不使用 stager
的payload Artifact
被称为无阶段 Artifact
。还可以使用PowerShell
选项将 Beacon
导出为 PowerShell
脚本,或 raw
选项导出与位置无关的 beacon
代码。
点击 Payloads -> Windows Stageless Payload
打开Windows Executable(Stageless)
面板
参数选项:
-
Listener :选择一个监听器
-
Guardrails :同前
-
Output :选择输出格式
- PowerShell:将无阶段
Beacon
注入内存的PowerShell
脚本 - Raw:位置无关的
beacon
代码 - Windows EXE:一个Windows可执行程序
- Windows Service EXE:可以响应
Service Control Manager
命令的Windows
可执行文件。可以使用此可执行文件通过sc
创建Windows
服务,或使用Metasploit Framework
的PsExec
模块创建自定义可执行文件。 - Windows DLL:导出与
rundll32.exe
兼容的StartW
函数的Windows DLL
。使用rundll32.exe
从命令行加载DLL
。(rundll32 foo.dll,StartW
)
- PowerShell:将无阶段
-
Exit Function:该函数决定执行退出命令时
Beacon
使用的方法/行为。- Process:终止整个进程
- Thread:仅终止当前线程
-
System Call:从
Cobalt Strike UI
或支持的攻击者功能生成无阶段Beacon payload
有时,选择在执行时使用以下系统调用方法之一:- None:使用标准
Windows API
函数 - Direct:使用
Nt*
版本的函数。 - Indirect:跳转到
Nt*
版本函数中的相应指令。
- None:使用标准
-
x64:生成与
x64 payload
配对的x64 artifact
。默认情况下,此对话框导出x64 payload
。 -
sign:使用代码签名证书签署
EXE
或DLL
文件。必须在Malleable C2
配置文件中指定证书。
点击Genetate
创建一个stageless artifact
。
Windows Executable (Stageless) Variants
此选项为所有配置的监听器生成所有格式类型的stageless payload
( x86 和 x64)。
点击 Payloads -> Windows Stageless Generate All Payloads
参数选项:
-
Folder :设置保存的目录
-
System Call :从
Cobalt Strike UI
或支持的攻击者功能生成无阶段Beacon payload
有时,选择在执行时使用以下系统调用方法之一:- None:使用标准
Windows API
函数 - Direct:使用
Nt*
版本的函数。 - Indirect:跳转到
Nt*
版本函数中的相应指令。
- None:使用标准
-
Sign:使用代码签名证书签署
EXE
或DLL
文件。必须在Malleable C2
配置文件中指定证书。
点击Genetate
创建stageless artifact
。
# 5.4、Hosting Files(托管文件)
Cobalt Strike
的 Web
服务器可以托管用户驱动的软件包。从主菜单中,点击Site Management -> Host File
:
1、选择要托管的文件,2、选择一个任意URL,3、然后选择文件的 MIME 类型。
托管文件这个功能本身意义不大。但是,接下来,你将学习如何将 Cobalt Strike
的 URL
嵌入到鱼叉式网络钓鱼电子邮件中。当你这样做的时候,Cobalt Strike
就能将访问文件的访客与电子邮件进行交叉对比,并将这些信息纳入社交工程报告中。
选中Enable SSL
以通过 SSL
提供此内容。当在 Malleable C2
配置文件中指定有效的 SSL
证书时,此选项可用。
# 5.5、用户驱动的 Web Drive-by 攻击
Cobalt Strike
提供了多种工具来设置web drive-by
攻击。要快速启动攻击,请点击Attacks
菜单并选择以下选项之一:
# 5.5.1、Java Signed Applet Attack
这种攻击会启动一个托管自签名 Java
小程序的Web
服务器。访问者会被要求允许该小程序运行。当访问者授予该权限时,你就获取了他们的系统访问权限。
Java Signed Applet
攻击使用 Cobalt Strike
的 Java
注入器。在 Windows
系统中,Java
注入器会将 Windows
监听器的 shellcode
直接注入内存。
参数选项:
-
Local URL/Host/Path:设置本地 URL 路径、主机和端口以配置 Web 服务器。
-
Listener :选择一个监听器
-
SSL :选中
Enable SSL
以通过SSL
提供此内容。当在Malleable C2
配置文件中指定有效的SSL
证书时,此选项可用。
点击Launch
启动攻击。
# 5.5.2、Java Smart Applet Attack
Cobalt Strike
的 "智能小程序攻击"(Smart Applet Attack
)将几种可禁用 Java
安全沙箱的漏洞整合到一个软件包中。这种攻击会启动一个托管Java
小程序的Web
服务器。最初,该小程序在 Java
安全沙箱中运行,无需用户批准即可启动。
这个 applet
会分析它的环境并决定使用哪个 Java
漏洞利用。如果 Java
版本是有漏洞的,此applet
会禁用安全沙箱,并使用 Cobalt Strike
的Java
注入器执行 payload
。
点击Attacks -> Smart Applet Attack
,打开Smart Applet Attack
面板
设置本地 URL 路径、主机和端口以配置 Web 服务器,选择监听器。点击Launch
启动攻击。
# 5.5.3、Scripted Web Delivery (S)
此功能会生成stageless Beacon payload artifact
,将其托管在 Cobalt Strike
的Web
服务器上,并提供下载和运行该artifact
的单行代码。
点击Attacks -> Scripted Web Delivery (S)
打开配置面板
参数选项:
-
Local URL/Host/Path:设置本地 URL 路径、主机和端口以配置
Web
服务器。确保Host
字段与你的SSL
证书的CN
字段匹配。这将避免由于这些字段之间不匹配而导致此功能失败的情况。 -
Listener :选择一个监听器
-
Type:类型
- bitsadmin:此选项托管可执行文件并使用
bitsadmin
下载它。Bitsadmin
方法通过cmd.exe
运行可执行文件。 - exe:此选项生成一个可执行文件并将其托管在
Cobalt Strike
的Web
服务器上。 - powershell:此选项托管
PowerShell
脚本并使用powershell.exe
下载脚本并对其进行评估。 - powershell IEX:与上述
Powershell
选项类似,但它提供了更短的Invoke-Execution
单行命令。 - python:选项托管一个
Python
脚本并使用python.exe
来下载该脚本并运行它。
- bitsadmin:此选项托管可执行文件并使用
-
x64:选中该框可为所选监听器生成
x64 stager
。 -
SSL:选中
Enable SSL
以通过SSL
提供此内容。当在Malleable C2
配置文件中指定有效的SSL
证书时,此选项可用。
# 5.6、客户端漏洞利用
你可以使用 Metasploit Framework
漏洞来提供 Cobalt Strike Beacon
。 Cobalt Strike
的 Beacon
与Metasploit
框架的分阶段协议兼容。要使用 Metasploit
漏洞利用提供 Beacon
:
- 使用
windows/meterpreter/reverse_http[s]
作为PAYLOAD
,设置LHOST
和LPORT
指向你的Cobalt Strike
监听器。在这里,你并不是在真正交付Meterpreter
,而是告诉Metasploit Framework
从指定的LHOST/LPORT
下载payload
的HTTP[s] stager
。 - 将
DisablePayloadHandler
设置为True
。此选项会让MSF
避免在MSF
内起一个handler
来处理你的payload
连接。 - 将
PrependMigrate
设置为True
。该选项会告诉Metasploit Framework
在另一个进程中预置运行payload stager
的shellcode
。如果被利用的应用程序崩溃或被用户关闭,这将有助于你的Beacon
会话存活。
下面是 msfconsole
的屏幕截图,该屏幕截图利用 Flash
漏洞来传送托管在 192.168.1.5
端口 80
上的 Cobalt Strike HTTP Beacon
:
# 5.7、网站克隆
在向目标发送漏洞利用程序之前,进行伪装会有所帮助。Cobalt Strike
的网站克隆工具可以帮助此目标。网站克隆工具制作一个网站的本地的复制,使用一些增加的代码来修复连接和图像这样它们可以如预期一样工作。
要克隆一个网站,点击Site Management -> Clone Site
,打开Clone site
面板
可以将攻击嵌入到克隆网站中。在绑定字段中写入攻击的 URL
,Cobalt Strike
就会以 IFRAME
的形式将其添加到克隆网站中。点击...
按钮选择一个运行的客户端漏洞利用程序。
克隆网站也可以捕捉键盘记录。勾选 Log keystrokes on cloned site
。这将在克隆网站中插入 JavaScript
键盘记录器。
要查看记录的按键或克隆网站的访客,点击View -> Web Log
查看。
选中Enable SSL
以通过 SSL 提供此内容。当你在 Malleable C2
配置文件中指定有效的 SSL
证书时,此选项可用。确保主机字段与你的 SSL
证书的 CN
字段匹配。这将避免由于这些字段之间不匹配而导致此功能失败的情况。
# 5.8、鱼叉式网络钓鱼
现在你已经了解了客户端攻击,我们来谈谈如何对用进行攻击。进入组织网络的最常见方式是通过鱼叉式网络钓鱼。 Cobalt Strike
的鱼叉式网络钓鱼工具允许你使用任意消息作为模板发送像素完美的鱼叉式网络钓鱼消息。
# 5.8.1、目标
在发送钓鱼信息之前,你应该收集目标列表。Cobalt Strike
接受的格式是用文本文件组织的目标。该文件的每一行包含一个目标。目标可以是一个电子邮件地址。你可以使用一个电子邮件地址、标签或一个名字。如果提供了名称,则有助于 Cobalt Strike
定制每个网络钓鱼。
# 5.8.2、模板
接下来,你需要一个网络钓鱼模板。模板的好处是可以在不同任务之间重复使用。Cobalt Strike
使用保存的电子邮件作为模板。Cobalt Strike
会剥离附件,处理编码问题,并为每次网络钓鱼攻击重写每个模板。
如果你想创建自定义模板,请撰写邮件并发送给自己。大多数电子邮件客户端都有查看原始邮件代码的功能。在Gmail
中,点击回复旁边的向下箭头,选择显示原文。将此信息保存到文件中,这样就制作好了一个 Cobalt Strike
网络钓鱼模板。
你可能想使用 Cobalt Strike
的token
自定义你的模板。Cobalt Strike
在你的模板里会自动替换如下一些 token
:
Token | Description |
---|---|
%To% | The email address of the person the message is sent to(收件人邮箱) |
%To_Name% | The name of the person the message is sent to.(收件人名字) |
%URL% | The contents of the Embed URL field in the spear phishing dialog.(鱼叉式网络钓鱼对话框中嵌入 URL 字段的内容。) |
# 5.8.3、发送消息
现在已经有了目标和模板,就可以开始网络钓鱼了。要启动鱼叉式网络钓鱼工具,请点击Attacks -> Spear Phish
启动Spear Phish
面板:
要发送一封钓鱼邮件,你必须首先导入你的目标。点击Targets
字段旁边的文件夹图标来导入你的目标文件。导入包含一个电子邮件地址和姓名的文件,并用制表符或逗号分隔,以实现更强大的消息自定义。
将模板设置为电子邮件信息模板。Cobalt Strike
的邮件模板只是一个已保存的邮件信息。Cobalt Strike
会删除不必要的标题,移除附件,重写 URL
,重新编码邮件,并为你重写邮件。点击Template
字段旁边的文件夹,选择一个模板。
你可以选择增加一个附件。这是使用我们前面讨论过的社会工程程序包的好机会之一。CobaltStrike
会将你的附件增加到发出的钓鱼邮件中。
Cobalt Strike
不提供撰写信息的功能。请使用电子邮件客户端,撰写信息并发送给自己。然后保存邮件原文。
你还可以要求 Cobalt Strike
使用你选择的 URL
重写模板中的所有 URL
。设置Embed URL
以使 Cobalt Strike
重写消息模板中的每个URL
以指向嵌入的 URL
。以这种方式添加的 URL
将包含一个令牌,该令牌允许 Cobalt Strike
追踪任何访问者直至此特定的鱼叉式网络钓鱼攻击。 Cobalt Strike
的报告和网络日志功能利用了该令牌。按 ...
选择已启动的 Cobalt Strike
托管站点之一。
当你嵌入一个 URL
,Cobalt Strike
将对其附加 ?id=%TOKEN%
。每一封发出的邮件都会被分配自己的令牌(token
)。Cobalt Strike
使用这个令牌(token
)将网站访问者映射到已发送到的电子邮件上。如果你要写报告,请务必保留此值。
将邮件服务器设置为目标的开放中继或邮件交换记录。如有必要,你可能还会向邮件服务器进行身份验证以发送你的网络钓鱼邮件。
点击Mail Server
字段旁边的...
以配置其他服务器选项。你可以指定一个用户名和密码来进行身份验证。随机延迟"(Random Delay)选项会让 Cobalt Strike
随机延迟每封邮件的时间,最多不超过你指定的秒数。如果不设置该选项,Cobalt Strike
将不会延迟发送邮件。
将 Bounce To
设置为退回邮件的电子邮件地址。此值不会影响目标收件人看到的邮件。按Preview
查看发送给其中一个收件人的组合邮件。如果预览效果良好,点send
即可发送攻击信息。
Cobalt Strike
通过团队服务器发送网络钓鱼邮件。
# 说明
本文由笔者在Cobalt Strike官方用户指南原文(https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/welcome_main.htm)基础上编译,如需转载请注明来源。