Mimikatz 纯 Python 实现。至少是其中的一部分
可在支持 python>=3.6 的所有操作系统上运行
安装
通过 pip 或从 github 克隆来安装。
安装程序将在 python 的脚本目录中创建一个 pypykatz 可执行文件。您可以从那里运行它,它应该在您的 PATH 中。
请注意,github 主版本可能会失败,因为我懒得为新版本创建一个合适的分支。不过我会尝试创建一个稳定版本的分支。
通过 PIP
pip3 install pypykatz
通过 Github
安装先决条件
pip3 install minidump minikerberos aiowinreg msldap winacl
克隆此仓库
git clone https://github.com/skelsec/pypykatz.git
cd pypykatz
安装
python3 setup.py install
特征
一般的
平台独立 - 所有命令均有“实时”版本和普通版本(如适用)。“实时”版本将使用当前系统,并且仅适用于 Windows。普通命令与平台无关。
可用作项目的库。
LSASS 处理
可以解析隐藏在 LSASS 进程中的秘密。这就像 mimikatz 一样,sekurlsa::但命令不同。
这里的主要区别在于所有解析逻辑都与数据源分离,因此如果您定义一个新的读取器对象,您基本上可以从任何地方执行 LSASS 的解析。
目前支持的数据源:
- live - 直接读取 LSASS 进程的内存
- minidump - 处理通过转储 LSASS 进程创建的 minidump 文件
- rekall (volatility fork) - 处理 rekall 可以解析的任何 Windows 内存转储
- pcileech-不再支持
- 远程 - 这是另一个项目。有待确定:)
- your project here说实话,集成起来非常简单。
注册表处理
解析注册表配置单元以获取存储的凭据,如 NT 和 LM 哈希、域缓存凭据(DCC/DCC2)和 LSA 机密。
目前支持的数据源:
- live - 有两种技术来解析实时注册表。第一种是内存中的,不接触磁盘;第二种是转储配置单元并使用离线解析器进行解析
- 离线(配置单元文件)
- your project here说实话,集成起来非常简单。
DPAPI 函数 - MASTERKEY/BLOB/VAULT/CREDENTIAL
DPAPI 是多种本地机密的保护者。目前,该项目支持解密主密钥、dpapi blob、凭证文件、保险库文件。
结果并非 100% 正确,因为大多数这些内容都没有太多文档。欢迎 PR!
目前支持的数据源:
- live - 直接从 LSASS 获取主密钥 - 或 - 从 live 注册表获取用户/机器密钥并解密主密钥文件。
- 配置单元文件(离线)- 来自实时注册表的用户/机器密钥并解密主密钥文件
- 有效凭证(离线)- 可以通过让您输入正确的 SID 和密码来解密主密钥文件。
- pls don't integrate this part to your project, it's beta
冒充用户
可以以任何在机器上运行进程的用户身份生成新进程。
可以为您的线程分配任何可用的令牌
这实际上只是基本的东西。我讨厌不断使用 psexec 从管理员那里获取系统 shell 的原因是什么...
其他内容
是的...检查代码。它有注释和内容...
Rekall 命令选项
时间戳覆盖
此参数存在的原因:为了选择正确的解析结构,我们需要 msv dll 文件的时间戳信息。遗憾的是,出于某种原因,Rekall 并不总是拥有此信息,因此解析可能会失败。
如果解析失败,这可以解决问题。
参数:-t
值:0或1
示例:
pypykatz.py rekall <momeory_dump_file> -t 0
Rekall 用法
有两种方法可以使用基于 rekall 的内存解析。
通过pypykatz rekall命令
您将需要指定要解析的内存文件。
通过 rekall 命令行
重要通知:
- 如果您现在决定安装,rekall请注意:它必须在虚拟环境中运行,并且您需要在同一个虚拟环境中安装 pypykatz!
- rekall 命令行不适合显示从内存中获取的所有信息,您应该使用out_file和kerberos_dir命令开关!
pypykatz_rekall.py你可以在pypykatz 文件夹中找到一个名为 rekall 插件的文件plugins。
你需要将其复制到 rekall 的plugins/windows文件夹中,并将其重命名为pypykatz.py。
之后修改__init__.py位于同一文件夹中的文件并在末尾添加以下行:
from rekall.plugins.windows import pypykatz
如果一切正常,你可以直接从命令行使用该pypykatz命令rekall。
HELP WANTED
如果您想帮助我将这个项目发布到稳定版本,您可以将 lsass.exe 进程的 mindiumps 发送到以下链接:https://nx5494.your-storageshare.de/s/SJteWj3PPbg8jBA 重要提示:请不要发送您自己机器的 lsass 进程的转储!!!我将能够看到您的机密,包括哈希/密码!从虚拟测试系统等机器发送转储文件,您不介意有人会看到这些凭据。(如果您有一个设置了 kerberos 的测试域系统,那将是最好的)
如果您不给我发垃圾邮件,我将不胜感激……
我为什么需要这些转储文件?
为了在 Python 中创建 mimikatz,人们必须创建无数种不同结构的结构定义(查看原始代码),而无需使用本机编译器自然获得的内置解析器的帮助。现在,问题是,即使一个字节错位也会导致这些结构的解析运行出错。问题主要围绕 32 - 64 对齐,因此 32 位 Windows 版本 lsass 转储也值得赞赏!
概括
我需要数据来验证代码,并对解析器进行必要的更改,直到一切正常。
如果没有实际文件,在此 github 页面上提交问题根本无济于事,而且 github 不喜欢 40-300Mb 的文件附件。
先决条件
我的大部分大型 Python 项目都以最大程度的可移植性为目标,这意味着我只在绝对必要时才使用第三方软件包。到目前为止,我使用了三个额外的软件包,我打算保持这种状态。
- Python>=3.6
- minidump
- minikerberos
- asn1crypto
项目地址:
https://github.com/skelsec/pypykatz?tab=readme-ov-file
原文始发于微信公众号(Ots安全):pypykatz:纯 Python 中的 Mimikatz 实现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论