こんにちは、ぎんたです。
IT・フォレンジック・セキュリティアナリスト関連業務を8年ほどやっております。
本記事では、サイバー攻撃者によく使われるmimikatzというツールについて紹介したいと思います。
攻撃者が使うツールについて知ることはサイバー防御において必要となります。
外部に対しては決して使用せず、試行する場合は仮想環境などの自身が構築した環境内で実施ください。
このツールを使うことで、平文のパスワード、パスワードハッシュなどの認証情報を取得することができます。
また、
- mimikatzを使ったパスワードを取得する具体的な方法を知りたい!
- mimikatzがパスワードハッシュを取得するメカニズムってなんだろう。
- パスワードハッシュを取得するのに必要な権限って何だろう?
という疑問や要望もあるかもしれませんね。
そこで今回は、
- Windows端末に侵入後に行われること
- パスワードハッシュって何?
- Windowsの認証のメカニズム
- mimikatzを使用したパスワードハッシュ取得方法
について順番に解説していきます。
スポンサーリンク
Windows端末に侵入後に行われること
攻撃者が何らかの方法で、一般ユーザの端末に侵入したとします。
ドメインに参加したユーザであれば、組織の方針にもよると思いますが、端末の管理者でないとできないような操作が制限されていることが多いです。
例えば、
- 一般ユーザが許可されていないアプリケーションの実行・インストール
- 端末の設定変更
- 重要なファイルへのアクセス
- 他システムへのアクセス、ファイルの実行(いわゆる横展開)
などが挙げられます。
よって、攻撃者はこれらの制限を回避するため、さまざまな手法を使用して特権ユーザへの昇格を狙います。
そして特権ユーザに昇格した後は、認証情報の取得が一般的に行われます。
認証情報を窃取する際に使われるツールの一つがmimikatzです。
パスワードハッシュって何?
パスワードハッシュとは、パスワードを暗号化する手法の一つで、元のパスワードを復元することができないように変換することです。
これにより、パスワードが漏洩しても、ハッシュ化されているため、第三者による不正アクセスを防止することができます。
例えば、”password1234″ というパスワードを SHA-256 ハッシュ関数でハッシュ化すると、次のようなハッシュ値が生成されます:
d23bafa8d516e52dc27b41263f1aeb10d9d85f3203b3a3c56a95d3096c399b6f
このハッシュ値は、元のパスワードを知っていない限り、パスワードを復元することができません。
ハッシュ値は一方向性があり元のデータを復元することができないため、一度ハッシュ化したパスワードは平文のパスワードよりも安全に管理することができます。
パスワードハッシュが漏れたっていうニュースを聞くことがあるけど、大丈夫ってことかしら?
ブルートフォース攻撃などの手法を使って元のパスワードを推測されることもあるから、セキュリティ上のリスクはあるよ。
特に、推測されやすい弱いパスワードを使っていると解読されたりするから注意が必要だね。
スポンサーリンク
Windowsの認証のメカニズム
Windowsは、SAM(Security Accounts Manager)データベースに様々な認証情報を保存します。
一般的に、ユーザーパスワードなどの資格情報は、SAMデータベース内にハッシュとして保存されます。
SAMデータベースに保存されているハッシュのうち、最も一般的な2つのハッシュは以下のとおりです。
LAN Manager (LM) | このハッシュは、レガシーシステムのために残されているWindowsが使用する最も古いパスワード保存の形式 |
NT LAN Manager (NTLM) | 最新のWindowsシステムでは、パスワードの保存にこのハッシュアルゴリズムを使用 |
ユーザがローカルの Windows マシンにログオンすると、Local Security Authority Subsystem Service (LSASS) プロセスが SAM データベースからユーザの認証情報を取得します。
ユーザーが入力したパスワードのハッシュが、SAMデータベースに保存されているパスワードのハッシュと一致する場合、ユーザーは正常にログオンすることができます。
ユーザーがログオンに成功すると、LSASSプロセスはユーザーの認証情報をメモリに保存します。
mimikatzを使用したパスワードハッシュ取得方法
それでは、mimikatzを使用したパスワードハッシュの取得方法について解説します。
攻撃者はmimikatzを使用して、LSASSプロセスに保存されているパスワードハッシュをダンプすることができます。
LSASSプロセスはSAMデータベースと対話しメモリに資格情報を保存する必要があるため、通常では特権ユーザーのような標準ユーザーよりも高い権限で実行されます。
これらのことから、mimikatzを使ってパスワードハッシュをダンプする際には特権ユーザーが事前に必要なんだよ。
mimikatzには、メモリからさまざまな種類の認証情報を抽出し、これらの認証情報を使用してユーザーアカウントにアクセスするために使用できる、さまざまなモジュールがあります。
今回は、sekurlsaモジュールを使用することにします。
コマンドプロンプトでPowerShellを実行し、mimikatzを実行します。
次のコマンドを使用し、プログラムを実行するのに適切な権限があるかどうかを確認します。
適切な権限があることを確認し、sekurlsaモジュールを使ってLSASSメモリからパスワードをダンプします。
このモジュールは、LSASSメモリから様々な認証情報を抽出するために使用されます。
このモジュールを使用するには、Administrator アクセスまたは SYSTEM アカウントが必要です。
このモジュール内では、logonpasswords関数を使用して、現在ログインしているユーザーの認証情報を抽出することができます:
マシンにログインしているユーザのNTLM ハッシュを取得することができたことが確認できます。
ここでは、Administratorのアカウントの認証情報を取得していますが、別ユーザが管理目的のためにログインしていた場合、そのアカウントのNTLMハッシュ値も出力される恐れが充分にあります。
後は、得られたハッシュ値をパスワードクラックし、平文のパスワードを取得することができます。
スポンサーリンク
まとめ
mimikatzを使用したパスワードハッシュ取得方法について解説しました。
- mimikatz はLSASSプロセスに保存されているパスワードハッシュをダンプする
- mimikatzでパスワードハッシュを取得するためにはAdministratorのような高い権限が必要である
- パスワードをダンプするためのmimikatzのコマンドを紹介
パスワードハッシュの取得についてイメージを持っていただけたら幸いです。
以上、ぎんたでした。
サイバーセキュリティを学ぶ上で必要な攻撃と解析に関する他の記事は、以下のリンクで確認できます。
学習に関しましては、以下のセキュリティの勉強法、おすすめの学習本・動画の記事が多くの方に読まれています。
資格の記事については以下の記事がおすすめです。
ITエンジニアへの転職については以下の記事がおすすめです。
その他学習・転職関連に関しましては、以下の記事もあわせて読まれています。
ぜひご覧ください!