2021年1月23日

Lsass メモリからのパスワード盗難の手口の高度化

プロセスのメモリ空間に格納されているドメイン、ローカルユーザ名、パスワードは、LSASS(Local Security Authority Subsystem Service)と名付けられています。エンドポイント上で必要となる権限さえあれば、ユーザーにLSASSへのアクセス権を与え、そのデータを抽出

プロセスのメモリ空間に格納されているドメイン、ローカルユーザ名、パスワードは、LSASS(Local Security Authority Subsystem Service)と名付けられています。エンドポイント上で必要となる権限さえあれば、ユーザーにLSASSへのアクセス権を与え、そのデータを抽出して横方向への移動や特権のエスカレーションを行うことができます。

LSASSのメモリダンプファイルがネットワーク経由で攻撃者に送信して、こっそりとクレデンシャルを抽出するのが一般的になってきています。エンドポイント上でMimikatzを実行する方法もあるのですが、これはローカルのウイルス対策ソフトウェアによってブロックされたり検出されたりする可能性があるためです。

実際、LSASSダンプは、非常に普及しているTrickbotのマルウェアキャンペーンでも確認され、大規模ネットワークへのボットのアクセスを止めるために、アメリカサイバー軍では多くの労力が必要となりました。また同時期には、マイクロソフトは他のパートナーと一緒に、TrickbotのC2サーバーをダウンして制御するために裁判所の命令を確保しなければならない事態となりました。

間違いなく、レッドチームや脅威行為者のためにWindowsを取り巻く環境で最も悪名高いツールは、LSASSからユーザ名とパスワードを抽出するために使用されるツール、Mimikatzです。その作成者であるベンジャミン・デルピーは、Windowsの認証プロセスを徹底的に研究し、LSASSプロセスに保存されているWindowsの資格情報を抽出する機能を持つオープンソースのツールをリリースしました。彼は、LSASSのメモリ空間内のメモリ構造を読み取るか、LSASSのフルメモリダンプファイルを読み取ることでこれを行っています。

この記事では、LSASS ダンプを単体で分析するのではなく、より広範な攻撃チェーンの一部として分析し、攻撃ベクトルとしての LSASS ダンプを詳細に分析しています。複数の情報源を集約することで、LSASSのダンプファイルを取得するために今日知られている数多くの方法に焦点を当てています。近日公開予定の別の記事では、Deep Instinctの脅威リサーチチームで発見した、特にステルス性が高いことが判明したLSASSダンプの新しい方法を紹介しています。

MITRE テクニック: T1003.001

 

LSASSをダンプするための既知の方法

マイクロソフト正規ツール

利用可能なすべてのオプションのうち、マイクロソフトが署名したバイナリを使用することは、LSASSのメモリダンプをこっそり取得するための非常に便利な方法です。ProcDumpのようなものはブラックリストに追加するのに問題があるので、これらの方法を使うことでブルーチームを抑止することができます。これらのツールはすべて、最終的に「カスタムダンプツール」のセクションで述べたAPIを呼び出します。

タスクマネージャ

組み込みのタスクマネージャは、プロセスのダンプ機構を持っています。

Dump file

ダイアログが表示され、ダンプファイルは<プロセス名>.DMPとしてTEMPフォルダに配置されます:

プロセスエクスプローラー

SysinternalsツールProcExp.exeツールは、プロセスダンプにも使用できます:

ダンプファイルの場所と名前(拡張子を除く、.dmpでなければならない)は、"名前を付けて保存 "ダイアログで設定できます。

ProcDump

SysinternalsのツールProcDump.exeは、そのコマンドライン機能のため、LSASSプロセスをディスクにダンプするためにマルウェアが最も多く使用するツールであると思われます。".dmp"という拡張子は必要ですが、ダンプファイル名の残りの部分は引数で制御することができます:

ProcDump With Clone Flag

"-r" スイッチを使用すると、ProcDump は lsass.exe のクローンを作成し、そのクローンをディスクにダンプします。

SQLDumper

SQLDumper.exeはMicrosoft SQLとOfficeの両方に含まれており、完全なダンプファイルを作成する機能を持っています。

最初のパラメータは、ダンプするプロセスのPIDです。ダンプファイルはカレントディレクトリ(私の場合は "C:\users\windows")に置かれ、ダンプファイル名はSQLDmprxxxx.mdmpのパターンになります。

Comsvcs.dll

"comsvcs.dll"は、すべてのWindowsシステムに存在し、プロセスをPIDでダンプするために使用できるエクスポートを持っています。これはマルウェア作者の間でもよく使われています。コマンドラインは以下のように記述する必要があります:

rundll32.exe comsvcs.dll MiniDump <lsass PID> <out path> full

なお、プロセスにはデバッグ権限が必要であり、そのためにこのコマンドにはPowerShellを使用しています。

PowerSploit Out-MiniDump

PowerSploitのモジュールの一つであるOut-MiniDumpは、Powershellベースの侵入ツールキットで、プロセスのフルメモリダンプを作成するオプションがあります:

その他のツール

Process Hackerはメモリダンプを作成するためのもう一つの素晴らしいツールです:

"ファイルの保存"ダイアログが開き、拡張子を含む任意のファイル名を指定することができます。

 

フルメモリダンプ

LSASSからクレデンシャルを取り出すには、RAM全体をディスクにダンプするという方法もあります。この方法はあまり好まれない傾向にありますが、完全なダンプを作成すると時間がかかり、ディスク上のスペースを大量に消費するため、攻撃者にとっては通常好ましくありません。

ライブメモリダンプ

ここに挙げられているフルメモリダンプのオプションの中で、この方法は攻撃者にとっておそらく最も実用的です。メモリ全体を調べてディスクにダンプすることができる署名付きカーネルドライバがいくつかあります。例えばWinPmemはGoogleによって署名されており、フルメモリダンプを作成することができます。Physmem2profitは、C2サーバでWinPmemを利用して、フルメモリをディスクに落とすことなく、WinPmemドライバを介してLSASSメモリを読み込めるようにしています。

ハイバネーションファイル

hiberfil.sysをRawCopyのようなツールでコピーすると、ハイバネーションファイルから資格情報を取り出す方法についての説明がありますので、それを利用して資格情報を取り出すことができます。

VMEM/VMSN ファイル

仮想マシンのスナップショットを取得したとき、または仮想マシンをサスペンドしたときに作成されたメモリファイルから完全なメモリダンプを抽出することができます。ハイバネーションファイルやVMEMファイルからLSASS資格情報を抽出する方法の説明を参照してください。

カスタムダンプツール

上記のオプションはLSASSのダンプファイルを取得する良い機会を提供していますが、これらのツールはコマンドラインや出力ダンプファイルによって検出されることが多いです。例えば、ProcDumpは "-ma" オプションを必要とし、Task Managerはファイル名 "lsass.DMP" をハードディスクに落とします。これらの成果物は証拠となるものであり、単純な脅威狩りでこれらの活動を捕らえることができます。このため、LSASSプロセスを手動でダンプするプログラムを書くことが望ましいです(これを行うツールの1つがDumpErtです)。以下に、これを実現する2つの方法の例を示します:

MiniDumpWriteDump メソッド

dbghelp.dllの中にMiniDumpWriteDumpと呼ばれる関数があります:

内部的には、MiniDumpWriteDumpは、ドキュメント化されていないNtReadVirtualMemory APIを使用してターゲットのプロセスメモリを読み込みます。

MiniDumpWriteDump + PssCaptureSnapshot

LSASSへの特権ハンドルを開いてMiniDumpWriteDumpに渡すと犯罪になる可能性があるので、よりステルスな方法は、MSDNでも文書化されているPssCaptureSnapshot APIを使用してLSASSのプロセススナップショットを作成することです。実際、このプロセスダンプの方法はMSDNの独自ページで文書化されています。

メモリダンピングの以前のカテゴリに記載されているすべてのツールは、この2つの方法のいずれかを使用しています(フルメモリダンピングの方法を除く)。

まとめ

この記事では、クレデンシャル抽出のために lsass.exe プロセスをダンプする既知のすべての方法を紹介しています。EDR製品によって lsass.exe のメモリ・ダンプを検出する方法も異なるため、IT セキュリティ実務者にとっては、すべての悪意ある試みを確実に捕捉するために、すべての方法を認識しておくことが重要です。ここで説明されているクレデンシャル盗用方法の1つを特定すると、この攻撃ベクトルを緩和する方法がMITRE ATT&CKフレームワークで詳細に説明されています。しかし、Deep Instinct製品のバージョン2.5ではこのようなLSASSからのクレデンシャル・ダンピングを検知する新しい振る舞い検知機能をリリースしますので、当社のすべての顧客はこのタイプの悪意のある活動から保護されます。このシリーズのパートIIでは、これまで分析されていなかった新しいダンピング方法を紹介しますので、どうぞご期待ください。