修改后的Pypykatz版本可以打印加密的凭证

项目地址

https://github.com/ly4k/Pypykatz

这是 PyPyKatz 的修改后的存储库。 有关详细信息,请参阅此 博客文章

pypykatz

纯 Python 中的 Mimikatz 实现。 至少它的一部分 🙂
在所有支持 python>=3.6 的操作系统上运行

维基百科

从 0.1.1 版本开始,命令行发生了一些变化。 别担心,我为您准备了一个很棒的 WIKI

安装中

通过 pip 或从 github 克隆它来安装它。
安装程序将在 python 的脚本目录中创建一个 pypykatz 可执行文件。 你可以从那里运行它,应该在你的路径中。
请注意,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 的解析。

目前支持的数据源:

  1. live – 直接读取 LSASS 进程的内存
  2. minidump – 处理通过转储 LSASS 进程创建的 minidump 文件
  3. rekall (volatility fork) – 基本上处理 rekall 可以解析的任何 Windows 内存转储
  4. pcileech – 可以通过实时计算机的 DMA 直接转储机密
  5. 远程 – 这是另一个项目。 待定:)
  6. your project here 说真的,集成起来超级简单。

注册处理

解析注册表配置单元以获得 stroed 凭据,如 NT 和 LM 哈希、域缓存凭据 (DCC/DCC2) 和 LSA 机密。

目前支持的数据源:

  1. live – 有两种解析实时注册表的技术。 首先它在内存中不接触磁盘,第二个是转储配置单元并使用离线解析器解析它们
  2. 离线(hive文件)
  3. your project here 说真的,集成起来超级简单。

DPAPI 函数 – MASTERKEY/BLOB/VAULT/CREDENTIAL

DPAPI 是多种本地机密的保护者。 目前该项目支持解密主密钥、dpapi blob、凭证文件、保险库文件。
结果不是 100% 正确,因为大多数这些东西没有太多文档。 PR 总是受欢迎的!

目前支持的数据源:

  1. live – 直接从 LSASS 获取主密钥 – 或者 – 从实时注册表中获取用户/机器密钥并解密主密钥文件。
  2. 配置单元文件(离线)- 来自实时注册表的用户/机器密钥并解密主密钥文件
  3. 有效凭据(离线)- 可以通过让您输入正确的 SID 和密码来解密主密钥文件。
  4. pls don't integrate this part to your project, it's beta

冒充用户

可以作为在机器上运行进程的任何用户生成新进程。
可以将任何可用的选择令牌分配给您的线程
这真的只是一个基本的东西。 Reson 在那里,我讨厌经常使用 psexec 从管理员那里获取系统 shell …

其他的东西

是的…检查代码。 它有评论和东西……

Rekall 命令选项

时间戳覆盖

此参数存在的原因:为了选择正确的解析结构,我们需要 msv dll 文件的时间戳信息。 不幸的是,由于某种原因,Rekall 并不总是拥有此信息,因此解析可能会失败。
如果解析失败,这可以解决问题。

参数: -t
值: 01
示例:

pypykatz.py rekall <momeory_dump_file> -t 0

Rekall用法

有两种方法可以使用基于 rekall 的内存解析。

通过 pypykatz rekall 命令

您将需要指定要解析的内存文件。

通过 rekall 命令行

重要通知:

  1. 如果您刚刚决定安装 rekall 请注意:它必须在 virtualenv 中运行,并且您需要在同一个 virtualenv 中安装 pypykatz!
  2. rekall 命令行不适合显示从内存中获取的所有信息,您应该使用 out_filekerberos_dir 命令开关!

pypykatz_rekall.py 你可以在 pypykatz的文件夹中 找到一个名为 rekall 的插件文件 plugins
您需要将其复制到 rekall 的 plugins/windows 文件夹中,并将其重命名为 pypykatz.py .
在此之后修改 __init__.py 位于同一文件夹的文件并在末尾添加以下行: from rekall.plugins.windows import pypykatz
如果一切正常,您可以直接从命令行使用 pypykatz 命令 rekall

求助

如果你想帮助我将这个项目发布到稳定版本,你可以将 lsass.exe 进程的 mindiumps 发送到以下链接: https ://nx5494.your-storageshare.de/s/SJteWj3PPbg8jBA 重要提示:请 不要 发送转储你自己机器的lsass进程!!! 我将能够看到你的秘密,包括哈希值/密码! 从虚拟测试系统等机器发送转储文件,您不介意有人会在这些机器上看到凭据。 (如果你有一个设置了 kerberos 的测试域系统,那将是最好的)
另外,如果你不给我发垃圾邮件,我会很感激……

为什么我需要这些转储文件?

为了在 Python 中创建 mimikatz,必须创建大量不同结构的结构定义(检查原始代码),而无需使用本机编译器自然会获得的内置解析器的帮助。 现在,问题是即使是单个字节未对齐也会导致这些结构的解析运行出错。 问题主要围绕 32 – 64 对齐,因此 32 位 Windows 版本的 lsass 转储也很受欢迎!

概括

我需要数据,我可以验证代码并对解析器进行必要的更改,直到一切正常。
如果没有实际文件,在此 github 页面上提交问题根本无济于事,github 不喜欢 40-300Mb 的文件附件。

先决条件

我的大多数大型 Python 项目都以最大的盈利能力为目标,这意味着我只在绝对必要的情况下使用第 3 方包。 到目前为止,使用了三个额外的包,我打算保持这种方式。

Python>=3.6
minidump
minikerberos
asn1crypto

请登录后发表评论

    没有回复内容