介绍
在此 Havoc Command and Control (C2) 框架系列的第一部分中,我介绍了如何安装和配置 Havoc Teamserver 和客户端,以及如何将客户端连接到 Teamserver 并启动它以供使用。在本文中,我将概述 Havoc 客户端用户界面 (UI),其中包括 Teamserver 聊天、侦听器、会话视图、事件查看器、战利品、负载、脚本管理器和与会话交互。
Havoc 客户端界面概述
单击“连接”后,用户将进行身份验证,并且将启动 Havoc 客户端 UI。位于界面的最左上角是五个不同的下拉菜单:Havoc、View 、Attack、Scripts 和 Help。这些菜单选项使操作员能够创建侦听器、有效负载、查看“Loot”、上传脚本等。这些菜单选项下方是一个窗口,它将以图形或表格形式显示会话(想想 Cobalt Strike 信标)。该窗口的右侧是默认显示的 “Event Viewer” 选项卡,提供有关发生的操作或事件的信息,例如已连接/已断开连接的运算符、创建的侦听器、已建立的会话等。此右侧窗口还将显示随 loaded extensions 提供的函数,我将在本文后面介绍。界面的底部窗口以选项卡式格式显示项目,其中包括 Teamserver 聊天、侦听器、交互式会话和其他 Havoc 功能。
Teamserver 聊天
听众
侦听器本质上是一个等待通过特定端口或协议进行回调的应用程序,就像 Netcat 侦听器一样,但 Havoc 侦听器需要使用框架生成的有效负载(尽管某些框架支持外部侦听器)才能正常工作,我们将在后面介绍。Havoc 支持 http、https、smb 和外部 C2 侦听器类型。可以使用 Havoc Client UI 轻松创建侦听器。
要打开 listeners 选项卡,请单击 “View” 并选择 “Listeners”。一个名为 “Listeners” 的选项卡将出现在底部窗口的顶部。如果选项卡以边框突出显示(如下面的 Listeners),则您位于 Listeners 工作区中,可以添加、编辑或删除侦听器。
要创建侦听器,请单击 Listeners 选项卡中下部窗口底部的 “Add”,然后会出现一个名为 “Create Listener” 的弹出窗口。在此处选择将连接到它的 Havoc 恶魔负载,即 https、http、smb 或外部。您可以使用 “添加” 按钮添加主机(它被图像覆盖),可以是 IP 地址、域等。在下图中,从 “Host Rotation” 开始的所有内容都是我的侦听器的默认设置。您的默认“Host (Bind)”地址将是您的 Teamserver IP 地址。您还可以创建绑定到 localhost (127.0.0.1) 或 ANY (0.0.0.0) 的侦听器。配置所需的侦听器后,单击 “Save”,“Create Listener”窗口将关闭,新侦听器将填充到 Listeners 选项卡中。事件也将记录在 “Event Viewer” 窗口(UI 的右上角)中。
下面是一个 smb 侦听器,我使用的“管道名称”来自 Cobalt Strike 可延展的 C2 配置文件,它是一个常见的 Chrome 命名管道。
会话视图
UI 的左上角窗口显示会话,这些会话是受感染的主机,运行 Havoc 恶魔代理(负载),该代理已建立反向连接并回调 Havoc Teamserver。执行 demon agent 时,这些会话会自动填充到 sessions 窗口中。单击 “View” 并选择 “Session View” 以在会话的 “Table” 或 “Graph ” 视图之间进行选择。
您可以拥有非特权会话或特权会话,这些会话通过颜色和外观进行区分。
事件查看器
“事件查看器”显示在位于右上角窗口的选项卡中。默认情况下,它与 Havoc 客户端一起启动,但如果关闭,则可以通过单击“查看”并选择“事件查看器”再次打开它。同样,“事件查看器”提供有关发生的操作或事件的信息,例如已连接/已断开连接的运算符、创建的侦听器、已建立的会话等。
战利品
战利品是存储您掠夺的剥削后贵重物品的地方,即下载和屏幕截图。在下面,您可以看到,在指定会话拍摄“屏幕截图”后,它会显示“Successful taken screenshot”,但没有显示图像。我还能够下载一个名为 sensitive.txt 的文件,但同样,我在任何地方都没有看到它。
嗯,那是因为屏幕截图和下载存储在“Loot Collection”中,可以通过单击“查看”并选择“Loot”来访问。然后,将在底部窗口中打开一个选项卡,该选项卡包含左侧内容的表格视图,右侧显示实际屏幕截图。此信息还可以使用“AgentID”(分配给会话的唯一标识符)和“Screenshots”或“Downloads”进行排序。
负载
单击“攻击”下拉菜单并选择“有效载荷”,以启动一个弹出窗口,以使用名为“Demon”的 Havoc 默认代理生成有效载荷。负载窗口显示了几个选项,以及几个内置功能,你可以用来配置负载,比如它将连接的侦听器类型,架构,格式(Windows Exe,Windows Dll,Windows Shellcode和Windows服务Exe),睡眠技术,以及它将在受感染的主机上生成什么进程。
单击“生成”后,“构建控制台”将显示有效负载构建,构建完成后,将启动一个弹出窗口,使您能够重命名它(如果需要)并将有效负载保存在您选择的目录中。
扩展
扩展是可以添加的附加脚本,甚至可以创建并添加操作员/开发人员,并用作命令或模块以用于 demon agent。有一种创建它们的方法,p4p1 在一篇博客文章中记录了该方法,他创建了大多数包含的扩展。
有关此扩展程序的信息可以在“havoc-bloodhound”GitHub 页面上获得,其中包括配置 Bloodhound 设置和使用。使用“扩展”选项卡上的“标题”和“作者”进行 Google 搜索,将我带到了 GitHub 页面,这些页面提供了有关 Havoc 扩展的更多信息,因此如果您想了解有关它们的更多信息,请打开您的“Google Fu”!我建议这样做,以便您可以验证是否有任何必需的依赖项。例如,如果您想使用 “havoc-ligolo” 进行旋转,则需要在您的机器上安装 tmux、go 和 kdesu。如果您尝试安装扩展但缺少依赖项,将出现一个弹出窗口,让您知道缺少什么(我仍然会冒险访问贡献者 GitHub)。
“auto_suite”扩展似乎很有用,因为它似乎旨在通过提供一种使用“自动搜索、自动侦察、自动保留和自动 RDP”的方法来帮助加快漏洞利用后。使用此脚本有助于自动搜索文件、主机侦查(安全带枚举)、建立持久性以及配置 RDP 以进行远程 GUI 访问。
脚本管理器
“脚本管理器”在底部窗口提供了一个选项卡,其中显示通过扩展上传或添加到 Havoc 框架的脚本。它还将允许操作员或开发人员创建开发的扩展/脚本,并将其上传到 Havoc Client 应用程序。我在下面提供了一些相关信息,因此如果您有兴趣了解更多信息,请查看这些资源。
您还可以开发自己的扩展并通过 “Load Script” 加载关联的脚本。
通过“脚本管理器”添加脚本不适用于任何脚本,这意味着您不能简单地上传每个 Impacket python 脚本并在 Havoc 客户端 UI 中运行它们。创建了大量扩展的开发人员 (p4p1) 有一篇博客文章,介绍了此内容以及创建可上传并与 Havoc 框架一起使用的脚本的过程。这是一篇写得很好且有据可查的博客文章,所以如果你对创建其他扩展感兴趣,我建议你读一读,因为掉进那个兔子洞不在本文的讨论范围之内。
“脚本控制台”提供了一个与 Havoc Client 应用程序交互的 python 解释器,上面提供的博客文章中同样记录了该应用程序。如果您有兴趣了解更多信息,我建议您阅读该博客。
与 Session 交互
在我的 Active Directory (AD) 实验室环境中,为了学习基础知识,我在 Windows 10 计算机上禁用了防病毒 (AV)(稍后将提供 AV 绕过功能),上传了新创建的 https 负载(使用默认值),执行了它,并获得了一个会话(信标),该会话(信标)显示在 Havoc 客户端 UI 上。
要与会话交互,请右键单击会话(表格或图形视图,这无关紧要)并选择“交互”。这将在底部显示窗口中打开一个选项卡。
在此显示窗口的最底部,操作员可以在受感染的主机上输入和执行大量利用后命令。“help” 命令将列出所有可用的内置恶魔代理命令/模块,以及 “Type” 和 “Description”。
“help” 命令与利用后命令/模块相结合,将提供其他信息,例如命令、描述、用法、示例等。
“help” 命令还可用于链接模块使用的命令,并提供更多信息,例如“Sub Command”和“Behavior”,其中命令的行为可能有助于识别操作安全 (OPSEC) 问题。
您可以运行 dotnet 程序集,例如 Rubeus 和 ADSearch,就像在 Cobalt Strike 中使用 execute-assembly 一样。
返回会话并右键单击它,选择“进程”或“文件资源管理器”都会在下方窗口中打开选项卡。“进程”选项卡将显示受感染主机上正在运行的进程,而“文件资源管理器”选项卡将提供受感染主机文件结构的导航。
如果会话没有响应,则可以将其“标记为 死”,我强烈建议您完成对会话执行“退出”的过程,然后在完成后使用“删除”将其删除。如果不这样做,会导致下次启动 Havoc Client 以供使用时,这些无响应或“死”会话仍保留在会话窗口中。我能够使用 “Marked as Dead” 删除那些没有响应的会话。还值得一提的是,此过程只能通过 table 视图中的 sessions 完成。
结论
我重点介绍了 Havoc Client UI 中的几个功能,但我觉得它只是触及了表面,尤其是对于开发后的命令/模块。如果您喜欢这篇文章,我建议您在虚拟机上安装这个 C2 框架(不要忘记拍摄快照),然后带着好奇的心态进入,并阅读本文作为指南。在本系列的下一篇文章中,我计划了解如何使用 Havoc 代理绕过 AV,并使用此框架真正探索这方面的内容。如果您想观看我介绍 UI,下面是一个经过编辑的视频,其中我介绍了我介绍的功能,以及本文中未包含的一些其他命令/模块。
原文始发于微信公众号(安全狗的自我修养):Havoc C2 框架第 2 部分:客户端用户界面 (2024)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论