
純粋なPythonによるMimikatz実装
このプロジェクトが気に入ったら、ブラウザで動作するフルペンテストスイート OctoPwn のライセンス購入をご検討ください。
新しいビルドやリリースの通知やその他の情報については、Discord にご参加ください。
純粋なPythonで実装されたMimikatz。少なくともその一部は :)
python>=3.6 をサポートするすべてのOSで動作します。

このプロジェクトは、多くの他のペンテスターツールとともに、OctoPwnの力でブラウザ上で動作します!
コミュニティ版は OctoPwn - Live でご確認ください。
バージョン0.1.1以降、コマンドラインが少し変更されました。ご安心ください。素晴らしい WIKI をご用意しています。
pip を使用するか、github からクローンしてインストールします。
インストーラは pypykatz 実行可能ファイルを Python の Scripts ディレクトリに作成します。そこから実行できます。PATH が通っているはずです。
注意: github の master バージョンは、新しいバージョン用の適切なブランチを作成するのが面倒なため、失敗する可能性があります。ただし、安定版のブランチは作成するようにします。
pip3 install pypykatz
前提条件をインストール
pip3 install minidump minikerberos aiowinreg msldap winacl
このリポジトリをクローン
git clone https://github.com/skelsec/pypykatz.git
cd pypykatz
インストール
python3 setup.py install
プラットフォーム非依存 - すべてのコマンドには、該当する場合、「live」バージョンと通常バージョンがあります。「live」バージョンは現在のシステムを使用し、Windows でのみ動作します。通常のコマンドはプラットフォーム非依存です。
プロジェクトのライブラリとして使用できます。
LSASS プロセスに隠されたシークレットを解析できます。これは mimikatz の sekurlsa:: に似ていますが、コマンドが異なります。
主な違いは、すべての解析ロジックがデータソースから分離されているため、新しいリーダーオブジェクトを定義すれば、基本的にどこからでも LSASS の解析を実行できることです。
現在サポートされているデータソース:
あなたのプロジェクトはここに 本当に、統合は非常に簡単です。レジストリハイブを解析して、NT や LM ハッシュ、ドメインキャッシュ資格情報 (DCC/DCC2)、LSA シークレットなどの保存された資格情報を取得します。
現在サポートされているデータソース:
あなたのプロジェクトはここに 本当に、統合は非常に簡単です。DPAPI は多くの種類のローカルシークレットの保護者です。現在、マスターキー、dpapi blob、資格情報ファイル、ボールトファイルの復号をサポートしています。
これらのほとんどに関するドキュメントが不足しているため、結果は100%正しいわけではありません。PR はいつでも歓迎します!
現在サポートされているデータソース:
この部分はプロジェクトに統合しないでください。ベータ版ですマシン上で実行中のプロセスを持つ任意のユーザーとして新しいプロセスを起動できます。
任意の利用可能なトークンをスレッドに割り当てることができます
これは本当に基本的なものです。存在する理由は、管理者からシステムシェルを取得するために常に psexec を使うのが嫌だからです...
ええ... コードを確認してください。コメントなどがあります...
このパラメータが存在する理由: 解析に適した構造を選択するためには、msv dll ファイルのタイムスタンプ情報が必要です。残念ながら、rekall は何らかの理由で常にこの情報を持っているとは限らないため、解析が失敗する可能性があります。
解析が失敗している場合、これで問題が解決するかもしれません。
パラメータ: -t
値: 0 または 1
例:
pypykatz.py rekall <メモリダンプファイル> -t 0
rekall ベースのメモリ解析を使用する方法は2つあります。
pypykatz rekall コマンドを使用する場合解析するメモリファイルを指定する必要があります。
重要なお知らせ:
rekall をインストールする場合、注意してください: 仮想環境内で実行する必要があり、同じ仮想環境内に pypykatz をインストールする必要があります!out_file および kerberos_dir コマンドスイッチを使用してください!pypykatz の plugins フォルダに pypykatz_rekall.py という名前の rekall プラグインファイルがあります。
これを rekall の plugins/windows フォルダにコピーし、pypykatz.py にリネームする必要があります。
その後、同じフォルダにある __init__.py ファイルを編集し、末尾に次の行を追加します: from rekall.plugins.windows import pypykatz
すべてがうまくいけば、rekall コマンドラインから直接 pypykatz コマンドを使用できます。
このプロジェクトを安定版リリースにするために協力したい場合、lsass.exe プロセスのミニダンプを次のリンクに送ってください: https://nx5494.your-storageshare.de/s/SJteWj3PPbg8jBA
重要: ご自身のマシンの lsass プロセスのダンプは送らないでください!!! ハッシュやパスワードを含むあなたのシークレットを見ることができてしまいます! 仮想テストシステムなど、誰かに資格情報を見られても構わないマシンからのダンプファイルを送ってください。(kerberos が設定されたテストドメインシステムがあれば、それが最適です)
また、スパムはご遠慮ください...
Python で mimikatz を作成するには、ネイティブコンパイラを使用した場合に自然に得られるビルドインのパーサーの助けなしに、無数の異なる構造体の構造定義を作成する必要があります(元のコードを確認してください)。問題は、たとえ1バイトのアライメントずれでも、これらの構造体の解析がエラーになることです。主な問題は32ビットと64ビットのアライメントに関するもので、32ビット Windows 版の lsass ダンプも歓迎します!
コードを検証し、すべてが正常に動作するまでパーサーに必要な変更を加えるためのデータが必要です。
実際のファイルなしでは、この GitHub ページに issue を送っても全く役に立ちません。また、GitHub は40〜300MBのファイル添付を好みません。
私の大きな Python プロジェクトのほとんどは、最大限の移植性を目指しており、必要な場合にのみサードパーティのパッケージを使用しています。
現時点では、さらに3つのパッケージが使用されており、この状態を維持するつもりです。
Python>=3.6
minidump
minikerberos
asn1crypto
Benjamin DELPY @gentilkiwi 氏、Mimikatz に対して
Francesco Picasso 氏、volatility 用 mimikatz.py プラグイン に対して
Alberto Solino (@agsolino) 氏、impacket に対して
Richard Moore 氏、AES モジュール に対して
Todd Whiteman 氏、DES モジュール に対して
David Buxton 氏、タイムスタンプ変換スクリプトに対して