
・ProcDumpって何ができるの?
・lsassってなに?
・認証情報・パスワードの取得方法は?
・企業のセキュリティ担当者として、どう防げば良いの?
こういった疑問に答えます。
ProcDumpで何できる?lsassのDumpから認証情報・パスワードの取得法とその防御法とは?
先日、こちらで少しハッキングについて触れましたが、最近は正規のログイン情報を取得した上で侵害するケースが増えてきています。
どういった環境(端末)から認証情報の取得するのかによって手法は様々ですが、何気なく記事を探していると以下のコメントを見つけました。
その後、有効な認証情報を使用してRDP経由でSQLサーバーにアクセスし、ProcDumpユーティリティをデプロイしてLSASSプロセスからメモリをダンプし、追加の認証情報を獲得します。
引用元:san.netsecurity.ne.jp
最近は認証情報の取得による被害が増加していますが、「実際そんなに簡単に認証情報って取得できるの?」と気になります。
今回は「Window10の環境でも本当に認証情報が取得できるのか?」を、実際に試してみたいと思います。
なお、検証では認証情報取得のためのプログラムを動かすためにWindows Defenderをオフにし、除外設定をしてプログラムが動くようにしますが、Windows 10 の標準環境であれば防御可能です。
検証環境の準備
今回はWindows 10 の端末をESXi上に用意します。
今回の検証ではマルウェアやランサムウェアを利用するわけではありませんが、このような検証は、必ず以下のような状態で実施を心掛けてください。
- 重要な情報が入っている端末はネットワークから切り離す
- 認証情報や個人情報が入っていない端末を利用する
- 検証完了後は端末をリフレッシュする(snapshotで以前の状態に戻す)
Windows 10 のメディアをお持ちでは無い方は手順に従ってダウンロードしてください。
Windows 10 ISOイメージのダウンロード方法
前述の通り、今回はWindows 10の環境でテストを行います。
「インストールメディアがない!」という方に向けに、インストールメディアの取得方法を画像付きで解説しますので、参考にしてください。
この手法を行うことで、ダウンロードするタイミングで最新版のWindows 10 のインストールメディアの入手が可能です。

『ツールを今すぐダウンロード』をクリックすると、MediaCreationTool21H1.exeがダウンロードされますので、クリックをして実行します。
exe名から分かる通り、Windows 10 21h1のイメージをダウンロードできます。





『完了』を押してダウンロードが完了です。

ITエンジニアの場合、何かしらの理由により古いバージョンのWindows 10が必要になる場合があります。
それぞれのバージョンのメディアを持っていると便利ですので、半年に一度はメディアをダウンロードしておくと良いでしょう。
Windows 10 のインストール
Windows 10 のESXi上へのインストールは、こちらで紹介しているWindows 2016 Server と大差はありません。

一点Tipsとして、インストール時にはネットワーク アダプタをオフにしてインストールすることで、Microsoftアカウントの作成をスキップできます。

なお、Windows10はProを指定します。


Windows 10のhomeとProの違いは個人向けか企業向けと考えるのが良いですが、テストでもProを選択するのが良いでしょう。

特にドメイン参加やリモートデスクトップでの接続は、homeではできません。
Windowsのインストールが完了したらインターフェース(NIC)を有効化して、アップデートを実施します。


Windows Updateが『最新の状態です』と表示されれば、アップデート完了です。

以上でWindows 10 のセットアップは完了です。
簡単ですね!
ProcDumpによる認証情報の取得
ここからは、実際にProcDumpを利用した認証情報の取得を行います。
この手法以外にも認証情報の取得方法はありますが、今回使用するのは、ProcDump、lsass、Windows SDKとmimikatzの4つです。
mimikatzについては、Windows Defenderをアンチウィルスベンダーで検知されるので、通常は利用できませんし、そういう意味では安心です。
今回は mimikatz が動くようにWindows Defenderをオフにします。
ProcDumpとは?
ProcDumpとは、Microsoft社が提供するコマンドユーティリティで、アプリケーションのメモリダンプを生成が出来ます。
メモリダンプとは、コンピュータが稼働中のある瞬間のメインメモリの内容の一部または全部をストレージに記録することで、今回はこのProcDumpを利用してlsass(アプリケーション)のメモリダンプを生成します。

lsassとは?
Local Security Authority Subsystem Service (lsass) とは、マイクロソフト Windows の OS のプロセスで、Windowsに標準搭載されています。
Windows 10 では、以下の場所に保存されています。
C:\Windows\System32\lsass.exe

プロセス名から分かる通り、lsassはシステムにセキュリティポリシーを適用する役割を果たします。
重要なプロセスである一方で、検索する度々セキュリティ情報が提供されています。
ProcDumpのダウンロードとlsassのDump生成
ProcDumpはMicrosoft社から入手します。


ダウンロードをクリックすると『Procdump.zip』がダウンロードされるので、右クリックし『全て展開』を実行します。

これで準備は完了です。
以下のコマンドでlsassのDumpを取得します。
オプションとして『-ma』を指定することで、すべてのプロセスメモリを含むダンプファイルを書き込みます。
procdump.exe -ma lsass.exe lsass_dump
初めてprocdumpを実行する際にEULAの承認を求められます。

※-accepteulaオプションで、GUIでのEULAを表示させずに承認することもできます。
procdump を実行すると、指定したファイル名+.dmpでファイル作成されます。
C:\Users\ユーザ名\Downloads\Procdump>procdump.exe -ma lsass.exe lsass_dump
ProcDump v10.11 - Sysinternals process dump utility
Copyright (C) 2009-2021 Mark Russinovich and Andrew Richards
Sysinternals - www.sysinternals.com
[22:35:48] Dump 1 initiated: C:\Users\ユーザ名\Downloads\Procdump\lsass_dump.dmp
[22:59:52] Dump 1 writing: Estimated dump file size is 48 MB.
[22:59:53] Dump 1 complete: 49 MB written in 1444.3 seconds
[22:59:54] Dump count reached.
これで、認証情報を含むダンプファイルが作成されました。
次に、このダンプファイルから「認証情報が本当に含まれるのか?」を確認していきます。
認証情報の取得の攻撃を実践
障害対応やトラブル解析など正規な対応であれば、認証情報の確認は必要な解析作業の一部となりますが、ハッキングなどに悪用することもできます。
今回は、ダンプファイルから認証情報を取得するためにmimikatzを利用しますが、mimikatzは悪用も可能なため、Windows Defenderを始めアンチウィルスベンダーで検知されます。
ですので、Windows Defenderで検知・隔離されないために事前準備としてWindows Defenderの無効化と除外設定を行います。
Windows 10 でWindows Defenderの「有効/無効」の切り替えとフォルダー除外の設定
最近はWindows 10 に標準で搭載されているWindows Defenderや他のアンチウィルス製品により、アプリケーションをテストを実行したい場合にアンチウィルスで検知・隔離され、必要な検証が出来ない場合があります。
ここでは、Windows 10 21h1のWindows Defenderで無効化する方法をご紹介します。
逆の手順を行うことで無効化を有効化に戻すこともできます。
Windows Defenderの無効化は『ここに入力して検索』にdefenderと入力し『ウィスルと脅威の防止』を選択します。

次に、『ウィルスと脅威の防止設定』の設定の管理を選択します。

ウィルスと脅威の防止設定で以下の4つをオフにします。
- リアタイム保護
- クラウド提供の保護
- サンプルの自動送信
- 改ざん防止

上記の設定を変更しても完全にはWindows Defenderはオフにならず、ファイルの検知・隔離される場合があります。
そこで、除外設定を行いファイルの検知・隔離がされないようにします。

mimikatzとは?
Defenderの設定が完了したところで、認証情報の取得が可能かを実際に試してみます。
利用するツールはmimikatzで、mimikatzについてはこちらで紹介されています。
mimikatzはWindows向けの有名なエクスプロイトツールで、メモリーに格納されているパスワード、ハッシュ、PIN、Kerberosチケットなどの取得が可能です。
mimikatzのダウンロード
mimikatzをダウンロードしますが、IEでもGoogle Chromeでも悪意のあるツールとして認識されており、個別に許可をしないとダウンロードできません。
GitHubのmimikatzのページに行き、『Code』から『Download ZIP』を選択してmimikatzをダウンロードします。

Download ZIP を選択すると『mimikatz-master.zip』がダウンロードされるので解凍します。
解凍したら『\mimikatz-master\mimikatz-master\x64 以下』にmimilib.dllが入っていることを確認しましょう。

後述するWindows 10 SDKで mimilib.dll を読み込ませて利用します。
Windows 10 SDK のダウンロードとインストール
Windows 10 SDK は、Windows 10 アプリを構築するためのツール群を提供しており、今回はWinDbg(デバッグツール)を利用します。
WinDbg については、以下に解説があります。

では、実際にダウンロードをしてインストールを行います。

『インストーラーをダウンロードする』をクリックすると、インストーラー『winsdksetup.exe』がダウンロードされるので実行します。
インストールパスを聞かれますが、そのまま『Next』を選択します。

次に、品質向上のためのデータ送付の確認があります。
『匿名(annoymous)での送付』ですので、Yes(デフォルト)のまま『Next』を選択します。

ライセンスの同意が求められますので『Accept』を選択して同意します。

次にインストールするソフトウェアを選択します。
今回は『Debugging Tools for Windows』のみを選び『Install』を選択します。

インストールが完了したら『Close』を選択して終了となります。

以上で、デバッグツールのインストールは完了です。
mimikatzによる認証データの取得
最後に、 WinDbg(デバッグツール) からmimikatzをロードして認証情報の取得を行います。
WinDbg の起動は、『Windows Kits』から『WinDbg(X64)』、『その他』そして『管理者として実行』を選択します。

次に『Open Crash Dump』を選び、先ほどProcDumpで出力したファイルを選択して読み込みます。

ダンプファイルを読み込みました。

次に、mimikatzのモジュール(mimilib.dll)をロードし、認証情報の取得を行います。
最下段の枠に入力するコマンドは4つです。
- .symfix c:\symbols、.reload を実行してシンボルをロード
- .load <mimilib.dll へのパス> を実行してmimikatz をロード
- !mimikatzを実行
1.の『.symfix c:\symbols』と『.reload』をそれぞれ実行しました。

次に、2.と3.を実行します。

ずらずらと情報が流れますが、その中に認証情報が出力されているのが分かります。

ということで、記事にある認証情報の取得ができました。
企業環境などで、より安全な環境のためには?
今回使用したmimikatz自体はWindows Defenderでもブラウザでも検知・隔離されます。
ただし、ProcDumpは前述の通りMicrosoft社が提供するツールですので、lsassを指定してのメモリダンプの生成ができます。
もし、あなたがより安全を考慮して、メモリダンプの行為自体をそもそも実施されれないようにしたいのであれば、
- アンチウィルスベンダーのメモリ防護などの機能を利用する
- EDR製品での監視、防御
などのを検討しましょう。
EDR製品によっては検知が出来てもブロックが出来ないか、もしくは大量のログに流されてしまう可能性があるので、しっかりと動作確認や監視を行いましょう。
まとめ
今回は少しテクニカルな記事となりましたが、scan.netsecurityで紹介されていた記事を元に実際に認証情報の取得が可能かを試してみました。
実際にやってみると「どのポイントでブロックされるのか?」を理解でき、企業のセキュリティレベルの向上に繋がります。
セキュリティを担当されている場合には、検証環境などで試してみると良いかもしれません。
最後に、本ブログではこういったエンジニアの小技を紹介していますので、参考に頂ければ幸いです。
