https://blog.ateam.qianxin.com/CobaltStrike4.0%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C_%E4%B8%AD%E6%96%87%E7%BF%BB%E8%AF%91.pdf
0x01 客户端 System Profiler [即探针]
System Profiler 是一个为客户端攻击提供的侦察工具。这个工具启动一个本地的 web 服务器,并对访问它的任何应用进行指纹识别。System Profiler 提供一个它从用户的浏览器里发现的应用和插件的列表。System Profiler 也会尝试去发现代理服务器背后的用户的内网 IP 地址。
通过 Attacks → Web Drive-by → System Profiler 启动 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 getinformation (使用 Java 小程序获取信息)框来从 System Profiler 中移除 Java Applet。
勾选 Enable SSL 框以通过 SSL 提供 System Profiler 服务。这个框被禁用,除非你通过 C2 拓展文件指定了一个有效的 SSL 证书。
要从 System Profiler 查看结果,请转到 View → Applications 。Cobalt Strike 将列出它在系统分析过程中发现的所有应用程序。
0x02 Cobalt Strike Web 服务
很多 Cobalt Strike 功能从它们自己的 web 服务器运行。这些服务包括 System Profiler、HTTPBeacon 和 Cobalt Strike 的 web drive-by 攻击。可以在一个 web 服务器上托管多个 Cobalt Strike 功能。
要管理 Cobalt Strike 的 web 服务,通过Attacks → Web Drive-by → Manage 。在这里,你可以复制任何 Cobalt Strike URL 到剪贴板或停止一个 Cobalt Strike web 服务。
使用 View → Web Log 来监视到你的 Cobalt Strike web 服务的访问。
如果 Cobalt Strike 的 web 服务器看到了来自 Lynx,Wget 或 Curl 浏览器的请求,Cobalt Strike 会自动返回一个 404 页面。Cobalt Strike 这样做是为了防御蓝队的窥探。
0x03 用户驱动的攻击包
最好的攻击不是漏洞利用。相反,最好的工具是利用正常功能来达成代码执行。Cobalt Strike 使得你可以轻松地进行多种用户驱动的攻击。这些攻击利用你已经设置的监听器。点击 Attacks → Packages并选择下列选项之一。
HTML Application
一个 HTML Application(HTML 应用)是一个使用 HTML 和一个 Internet 浏览器支持的脚本语言编写的 Windows 程序。该程序包生成一个 HTML 应用,该应用运行一个 Cobalt Strike payload。你可以选择可执行的选项来获取一个 HTML 应用,此 HTML 应用使得一个可执行文件落地在磁盘上并运行它。选择 PowerShell 选项来得到一个 HTML 应用,该应用使用 PowerShell 来运行一个 payload。使用VBA 选项来静默派生一个 Microsoft Excel 实例并运行一个恶意的宏来将 payload 注入到内存中。
MS Office Macro
该程序包生成一个 Microsoft Office 的宏文件并提供将宏嵌入 Microsoft Word 或 Microsoft Excel 的说明。
Payload Generator(Payload 生成器)
该程序包允许你以不同的多种格式导出 Cobalt Strike 的 stager。
Windows Executable(Windows 可执行文件)
该程序包生成一个 Windows 可执行 Artifact,用于传送一个 payload stager。这个程序包为你提供了多种输出选项。
Windows Service EXE 是一个 Windows 可执行文件,可响应 Service Control Manager 命令。你可以使用这个可执行文件来作为使用 sc 命令起的 Windows 服务的调用程序,或使用 Metasploit 框架的PsExec 模块生成一个自定义的可执行文件。
译者注:也就是说,普通的 EXE 和服务器启动调用的 EXE 是有区别是。利用 Windows Service
EXE 生成的 EXE 才能用来作为服务自启动的 EXE,利用 Cobalt Strike 中 Windows exe 生成的
EXE 不能作为服务自启动的 EXE 程序(因为不能响应Service Control Manager)!
Windows DLL(32-bit)是一个 x86 的 Windows DLL。
Windows DLL(64-bit)是一个 x64 的 Windows DLL。这个 DLL 会派生一个 32 位的进程,并且将你的监听器迁移至其上。这两个 DLL 选项都会导出一个开始功能,此功能与 rundll32.exe 相兼容。使用rundll32.exe 来从命令行加载你的 DLL。
rundll32 foo.dll,Start
勾选 Use x64 payload 框来生成匹配 x64 stager 的 x64 Artifact。
勾选 Sign executable file 框来使用一个代码签名的证书来签名一个 EXE 或 DLL Artifact。你必须指定一个证书。你必须在 C2 拓展文件中指定证书。
Windows Executable(s)
该程序包直接导出 Beacon(也就是 payload stage),这个 Beacon 是作者写好的32或64位 DLL,是一个不使用 stager 的可执行文件,直接和监听器连接、传输数据和命令。一个不使用 stager 的payload Artifact被称为无阶段的 Artifact。这个程序包也有 PowerShell 选项来导出 Beacon 作为一个PowerShell 脚本,或 raw 选项导出与位置无关的 beacon 代码。
默认情况下,这个对话导出 x86 payload stage。勾选 Use x64 payload 框来使用 x64 Artifact 生成一个 x64 stage。
勾选 Sign executable file 框来使用代码签名的证书来签名一个 EXE 或 DLL Artifact。
0x04 托管文件
Cobalt Strike 的 web 服务器可以为你托管你的用户驱动的程序包。通过 Attacks → Web Drive-by→ Host File 来进行此配置。选择要托管的文件,选择一个任意URL,然后选择文件的 MIME 类型。
托管文件这个功能本身意义不大。但是稍后你将学习如何将 Cobalt Strike 的 URL 嵌入到一个鱼叉式网络钓鱼电子邮件中。当你这样做的时候,Cobalt Strike 可以通过电子邮件交叉引用托管文件发送给访问者,并将此信息包含在社会工程报告中。
0x05 User-driven Web Drive-by Attacks(用户驱动的 Web Driveby攻击)
Cobalt Strike 使用多种工具来为你设置可用的 web drive-by 攻击。要快速地开始一个攻击,通过Attacks → Web Drive-by 并选择一个选项:
Java Signed Applet Attack
这个攻击会启动一个 web 服务器来托管一个自签名的 Java applet。访客被要求给这个 applet 权限来运行。当一个访客准许了这个权限,你就获取了到他们系统的权限。
Java 签名的 Applet 攻击使用 Cobalt Strike 的 Java 注入器。在 Windows 上,Java 注入器会对一个Windows 监听器直接往内存注入 shellcode。
为了从这次攻击中获取最大收益,你需要从 Cobalt Strike 的武器库中下载此 Applet 套件并使用代码签名证书对其进行签名。
Java Smart Applet Attack
Cobalt Strike 的智能 Applet 攻击在一个程序包里包含多个漏洞利用来禁用 Java 安全沙盒。这个攻击启动一个 web 服务器来托管 Java applet。最初,这个小程序可以在 Java 的安全沙箱中运行,并且不需要用户批准即可启动。
这个 applet 分析它的环境并决定使用哪个 Java 漏洞利用。如果 Java 版本是有漏洞的,此 applet 会禁用安全沙箱,并使用 Cobalt Strike 的 Java 注入器执行 payload。
Scripted Web Delivery (S)
这个功能会生成一个无阶段的 Beacon payload Artifact, 在 Cobalt Strike 的 web 服务器上托管它,并提供一个单行来下载和运行此 Artifact。选项包括:bitsadmin,powershell 和 python。
bitsadmin 选项托管一个可执行文件并使用 bitsadmin 来下载它。bitsadmin 方法通过 cmd.exe 来运行此可执行文件。powershell 选项托管一个 PowerShell 脚本并使用 powershell.exe 来下载此脚本并对其进行评估。python 选项托管一个 Python 脚本并使用 python.exe 来下载该脚本并运行它。每一个这些选项都是一种运行 Cobalt Strike 监听器的不同的方法。
0x06 客户端的漏洞利用
你可以使用一个 MSF 漏洞利用来传送一个 Cobalt Strike Beacon。Cobalt Strike 的 Beacon 与 MSF 的分阶段协议相兼容。要使用 MSF 漏洞利用来传送一个 Beacon:
- 使用 windows/meterpreter/reverse_http[s] 作为你的 PAYLOAD 并设置 LHOST 和 LPORT来指向你的 Cobalt Strike 监听器。在这里你不是真的在传送 Meterpreter,你是在让 MSF 生成从指定的 LHOST/LPORT 下载 payload 的 HTTP[s] stager。
- 将 DisablePayloadHandler 设置为 True 。此选项会让 MSF 避免在 MSF 内起一个 handler 来服务你的 payload 连接。
- 将 PrependMigrate 设置为 True。此选项让 MSF 前置 shellcode 在另一个进程中运行 payload stager。如果被利用的应用程序崩溃或被用户关闭,这会帮助你的 Beacon 会话存活。
这里是一个 msfconsole 的屏幕截图,图中起了一个 Flash 漏洞利用来传送 Cobalt Strike 的 HTTP Beacon,此 Beacon 被托管在 192.168.1.5 的 80 端口上:
0x07 克隆网站
在向目标发送漏洞利用程序之前,进行伪装会有所帮助。Cobalt Strike 的网站克隆工具可以帮助此目标。网站克隆工具制作一个网站的本地的复制,使用一些增加的代码来修复连接和图像这样它们可以如预期一样工作。
要克隆一个网站,通过 Attacks → Web Drive-by → Clone Site 。
可以将一个攻击嵌入到一个克隆的站点。在绑定的字段写你的攻击的 URL,Cobalt Strike 会使用一个IFRAME 来将它加入一个克隆的站点。点击 … 按钮来选择一个运行的客户端漏洞利用程序。
克隆的网站还可以捕获键盘记录。勾选 Log keystrokes on cloned site (克隆站点上的键盘记录)框。这会往克隆的站点里插入一段 JavaScript 键盘记录程序。
要查看键盘记录内容或查看到你的克隆网站的访问者,通过 View → Web Log 。
0x08 鱼叉式网络钓鱼
目标
既然你已经了解了客户端攻击,让我们来谈谈如何对用户进行攻击。进入组织网络的最常见的方法是通过鱼叉式网络钓鱼。
在发送钓鱼信息之前,你应该收集目标列表。Cobalt Strike 接受的格式是用文本文件组织的目标。该文件的每一行包含一个目标。目标可以是一个电子邮件地址。你可以使用一个电子邮件地址、标签或一个名字。如果提供了名称,则有助于 Cobalt Strike 自定义每个网络钓鱼。
模板
接下来,你需要网络钓鱼模板。模板的好处是你可以在多次行动中重复利用它们。Cobalt Strike 使用保存的电子邮件消息作为其模板。Cobalt Strike 将删除附件、处理编码问题,并为每次钓鱼攻击重新填写每个模板。
如果你想创建自定义模板,请撰写邮件并发送给自己。大多数电子邮件客户端提供获取原始信息源的方法。在 Gmail 中,点击 Reply 按钮旁边的向下的箭头并选择 Show original (显示原始文本)。将此消息保存到一个文件中,这样你就做好了一个 Cobalt Strike 钓鱼邮件模板了!
你可能想使用 Cobalt Strike 的 token 自定义你的模板。Cobalt Strike 在你的模板里会自动替换如下一些 token :
发送消息
现在你已经有了目标和模板,就可以开始进行网络钓鱼了。通过 Attacks → Spear Phish 来启动网络钓鱼工具。
要发送一封钓鱼邮件,你必须首先导入你的目标。点击 Targets 字段旁边的文件夹图标来导入你的目标文件。
然后,选择你的模板文件。点击 Template 字段旁边的文件夹图标来选择一个模板文件。
现在,你可以选择增加一个附件。这是使用我们前面讨论过的社会工程程序包的好机会之一。Cobalt Strike 会将你的附件增加到发出的钓鱼邮件。
你也可以要求 Cobalt Strike 使用你选择的 URL 来重写模板中的所有 URL。粘贴 URL 或按 … 来选择一个 Cobalt Strike 托管的工具。Cobalt Strike 工件集包括克隆的网站,自动漏洞利用服务器和 SystemProfiler。
当你嵌入一个 URL,Cobalt Strike 将对其附加 ?id=%TOKEN% 。每一封发出的邮件都会被分配自己的令牌(token)。Cobalt Strike 使用这个令牌(token)将网站访问者映射到已发送到的电子邮件上。如果你要写报告,请务必保留此值。
将邮件服务器设置为目标的开放中继或邮件交换记录。如有必要,你可能还会向邮件服务器进行身份验证以发送你的网络钓鱼邮件。
点击 Mail Server (邮件服务器)字段旁边的… 来配置额外的服务器选项。你也可以指定用于身份验证的用户名和密码。Random Delay 选项告诉 Cobalt Strike 将每封邮件随机延迟一段时间,最多不超过你指定的秒数。如果此选项未设置,Cobalt Strike 不会延迟发送邮件。
将 Bounce 设置为退回邮件的应该发往的电子邮件地址。这个值不会影响你的目标看到的邮件。点击Preview 来查看发送到你的收件人之一的一封组合邮件。如果预览看上去不错,点击 Send 来发送你的攻击。
Cobalt Strike 通过团队服务器发送钓鱼邮件。