Nighthawk 0.3.3;Evanesco,揭晓我们的最新研究成果。“Evanesco”是一个拉丁词,意思是“我消失了”或“我消失了”。Potterheads 可能还认出了它是用来让物体消失的咒语。这正是 Nighthawk 0.3.3 版本所做的;在隐形斗篷下从记忆中消失。
这也是我们欢迎@s4ntiago_p加入@MDSecLabs团队以来的第一个版本;他对 Nighthawk 的积极贡献已经在这个版本中结出硕果,我们对他未来为团队带来的贡献感到非常兴奋。
作为次要版本,我们专注于提供少量创新新功能,同时还进行了大量生活质量和错误修复。让我们来看看一些改进。
内存技术如今已成为在现代、成熟的 Windows 环境中运行的必备技能。内存扫描(无论是定期扫描还是事件驱动扫描)在面对终端检测与响应解决方案和威胁猎手团队时都构成了不可避免的挑战。
内存技术面临的最大挑战之一是避免签名。最常见的方法是实施睡眠加密,这是一种在信标睡眠周期内保持完全加密的技术。一个公开的例子是@C5pider 的EKKO,这是一种受 Nighthawk 影响的实现,它加密和解密反射 DLL 的副本,同时通过NTContinue
小工具和CreateTimerQueueTimer
API 避免可执行内存。
虽然这种方法可以在没有活动任务发生时减少信标的暴露,但当然,在相当长的一段时间内,信标将以明文形式存在于内存中,包括初始执行以引导信标期间、任何可能阻止睡眠混淆的后利用任务期间,或者在交互模式下,例如执行 SOCK 或反向端口转发时,需要响应式 c2 通信。除此之外,许多 EDR 解决方案将使用事件驱动的内存扫描,在某种可疑操作之后自动启动内存扫描,这些操作可能来自后利用工具。这也可以与分配例程的捕获相结合,这不可避免地会导致明文内存的暴露。
其中一些签名可以通过对信标源代码或反射 DLL 进行简单修改来绕过,这确实需要对签名进行智能处理。如果供应商已经开源了他们的规则,那么这个问题就不大了,但当面对其他不太开放的解决方案时,问题就更大了。在大多数商业 C2 产品中,此类修改通常也需要由供应商完成,因此在绕过签名之前可能需要一定的时间。
Nighthawk 0.3.3 引入了一项突破性的内存隐藏功能,即使在交互式执行期间,也可以屏蔽信标的所有非活动页面。这意味着在任何给定时刻,只有一小部分(约 2%)的代码库会暴露在纯文本内存中。我们还将此功能扩展到我们的execute-exe
线束,确保内联执行的 PE 在执行期间保持完全加密。
内存隐藏功能提供了几种可配置模式,允许选择性地加密页面和/或使用滴灌技术分布在内存中,以增强安全性。
以下示例演示了 Yara 规则如何在交互模式下检测 Nighthawk 工件(磁盘和内存中)中的信标静态签名。但是,当启用 Nighthawk 的内存隐藏功能时,这些指示器将变得不可见 — 即使睡眠间隔为 0:
如上所述,这不仅适用于信标本身,而且内存隐藏扩展到execute-exe
内联 PE 线束,在下面的视频中,您可以看到我们能够mimikatz.exe
在睡眠 0 的信标进程线程中运行,并且仍然逃避任何 Yara 签名:
当然,用于解密和内存隐藏的一小段代码必须保持暴露。您可能认为这只是将问题转移到其他地方。但是,我们预料到了这一点,并构建了一个代码修改器,该修改器会在每次生成工件时随机混淆和修改解密存根。这种方法大大降低了签名带来的风险。
在我们的 0.3版本中,我们宣布引入新的 JSON RPC Web 服务 API 来自动化信标。在该版本中,我们提供了一个 .NET API,其中包含一系列 c# 帮助程序实现。在此版本中,我们在可安装的 Python 库中镜像了 c# API。
Python API 允许 Nighthawk 用户围绕 API 构建工具来与信标进行交互和自动化。除此之外,我们还提供了很多有用的示例脚本来说明各种基本任务,例如通知新信标、执行 BOF、监控主机上的进程等等。
在下面的示例中,我们看到两个脚本;第一个脚本列出了当前连接的所有代理,第二个脚本只是pwd
在所有代理上运行命令:
Nighthawk 内部缺少的一项功能是对客户端脚本的支持,类似于其他框架(如 Cobalt Strike)利用 CNA(Sleep 🤮)的方式。在此版本中,我们使用 PythonNet 在 Python 中引入了客户端脚本支持。
使用 Nighthawk Python API,现在可以执行和处理来自 BOF、Exes 和 .NET 程序集的输出,从而促进客户端内更大程度的自动化。
Nighthawk Python API 在 Python 类中引入了以下新方法nighthawk
:
register_command
:向 Nighthawk 客户端添加新命令(包括帮助和自动完成支持),execute_exe
:指示代理使用 beacons 命令运行 exeexecute-exe
,execute_bof
:指示代理使用信标线束运行 BOFexecute-bof
,inproc_execute_assembly
:指示代理使用 beacons 命令运行 .NET 程序集inproc-execute-assembly
,get_agents
:检索所有信标代理(死亡或存活)的列表,get_agent_info
:获取代理的基本信息,console_write
:将文本打印到控制台。
除此之外,该API还包含一个Packer
可用于打包BOF参数的类。
然后,外部工具可以简单地集成到 Nighthawk 中,如果需要,还可以使用 Python 代码进行解析和处理。例如,要使用Situational Awareness BOFcalcs
套件向 Nighthawk 添加新命令,您可以创建类似于以下内容的 Python 脚本:
# python function that will be called when the 'cacls' command is entered
def cacls_function(params, info):
# make sure the parameters are ok
if len(params) > 1:
nighthawk.console_write(CONSOLE_ERROR, "No enough params")
return False
elif len(params) > 1:
nighthawk.console_write(CONSOLE_ERROR, "Too many params")
return False
# the only parameter is the file path
path = params[0]
# get an instance of the packer class
packer = Packer()
# add the path as a wide string
packer.addwstr(path)
# get the packed arguments
packed_params = packer.getbuffer()
# schedule the execution of the BOF
message_id = nighthawk.execute_bof(f"bin/cacls.{info.Agent.ProcessArch}.o", "go", packed_params, True, False, 0)
# simply return the message_id returned by 'execute_bof'
return message_id
# register the new 'cacls' command
nighthawk.register_command(cacls_function, "cacls", "List user permissions for the specified file, wildcards supported", "Lists file permissions", """cacls <file path>
Key:
F: Full access
R: Read & Execute access
C: Read, Write, Execute, Delete
W: Write access""","cacls C:\windows\system32\cmd.exe" )
然后可以使用 Python 模块功能将脚本导入 Nighthawk。我们提供了一个使用 Fortra 的Nanodump的完整示例:
导入脚本后,它会nanodump
向 Nighthawk 引入命令:
我们希望此功能能让用户更好地从客户端扩展和配置 Nighthawk。
控制流强制技术 (CET) 是现代处理器中的一项功能,可防止控制流劫持攻击。为了实现此功能,需要从不可直接篡改的内存中分配辅助堆栈或“影子堆栈”。CET 的普及率正在显著提高,在有硬件支持的情况下,现代 Windows 10 和 11 默认启用 CET。
影子堆栈会影响植入程序使用的几种流行的 OpSec 功能,但几乎肯定会破坏大多数(如果不是全部)公开的睡眠混淆技术。其后果是,您可能会受到限制,无法从中发送信标,msedge.exe
或者chrome.exe
受到 CET 缓解措施的保护。
在此版本的 Nighthawk 中,我们重新设计了信标的多项功能,以确保它们不会触发 CET 异常,从而绕过影子堆栈保护并使信标再次变得出色。
除上述内容外,我们还对 Nighthawk 和其他支持工具进行了一些杂项改进,包括:
添加了一种新的、未发布的、私有的利用函数指针劫持进行跨进程注入的技术,
改进隐藏桌面,以融入 Windows 11 的变更,
改进隐藏桌面以避开常见的检测点,
增加了对 Cobalt Strike BOF 键/值 API 的支持,
对我们的线束进行了大规模重写
execute-exe
,改进了 OpSec,并增加了对其他类型的 PE(包括 Rust 二进制文件)的支持,对 NHLoader 和 Nighthawk 注入器进行了一些改进,增加了对在生成的进程中禁用 CET 的支持,
完全重写 NHLoader 的 PE 感染模式,实现更有效的 exe 和 DLL PE 文件 PE 感染方法,
增加了用于修补 AMSI 和 ETW 的替代且更具规避性的选项。
原文:https://www.nighthawkc2.io/evanesco/
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...