1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「見える化」が「支配」を加速させる。TryHackMe "AD: Enumeration" 実戦的列挙プロセス備忘録

1
Posted at

はじめに

Active Directory (AD) 環境への侵入に成功した際、次に攻撃者が行うべきことは 「列挙 (Enumeration)」 です。
「誰が偉いのか?」「どこにドメインコントローラがあるのか?」「どのグループに入れば管理者になれるのか?」
これらを把握せずに闇雲に攻撃を仕掛けるのは、目隠しをして迷路を走るようなものです。

本記事では、TryHackMeの "AD: Basic Enumeration" および "AD: Authenticated Enumeration" で学んだ、認証済みユーザー権限で行うAD偵察の手法(Living off the Land, PowerShell, BloodHound)をまとめます。

1. 思考の転換:リストからグラフへ

AD攻略において最も重要な概念の一つが、John Lambert氏の以下の言葉です。

"Defenders think in lists. Attackers think in graphs."
(防御側はリストで考え、攻撃者はグラフで考える)

Firefly_Gemini Flash_Abstract 3D infographic of a complex digital organizational structure, glowing interc 702873.png

防御側は「Domain Adminsグループのメンバーリスト」を管理しますが、攻撃者は「AさんがBさんのPCにログインしており、BさんのPCにはCさんの認証情報が残っていて、CさんはDomain Adminである」という 関係性のパス(グラフ) を探します。

この「グラフ」を視覚化するツールが BloodHound ですが、まずは基本となるCUIツールから見ていきます。

2. Living Off The Land (環境寄生型偵察)

攻撃ツール(nmapなど)を持ち込むと検知されるリスクがあります。そのため、Windows標準搭載のコマンド (net.exe など) を使って偵察を行う手法が基本となります。

基本コマンド:NET コマンド

最も基本的ですが、強力なツールです。/domain オプションの有無が決定的な違いを生みます。

目的 コマンド 解説
ドメインユーザー一覧 net user /domain ドメイン全体のユーザーを表示。ここからターゲットを選定する。
ユーザー詳細 net user <User> /domain 特定ユーザーの所属グループやパスワードポリシーを確認。
ドメイングループ一覧 net group /domain "Domain Admins" などの特権グループを探す。
グループメンバー確認 net group "<Group>" /domain 特定グループに誰が所属しているかを確認。
ローカルユーザー確認 net user (注意) /domain なしだと、現在ログインしているマシンのローカル情報を表示。

3. PowerShellによる高度な偵察 (PowerView)

コマンドプロンプトはテキストベースで見にくい上に、複雑なフィルタリングができません。
PowerShellを使えば、オブジェクトとして情報を扱えるため、「名前に"admin"が含まれるグループを抽出」といった操作が容易になります。

ここでは、Windows標準の ActiveDirectory モジュールと、攻撃用フレームワーク PowerSploit の PowerView モジュールを比較します。

モジュールのインポート

# PowerViewの読み込み (パスは環境による)
Import-Module .\PowerView.ps1

コマンド比較チートシート

目的 ActiveDirectory (公式) PowerView (ハッカー向け) PowerViewの利点
ユーザー列挙 Get-ADUser -Filter * Get-DomainUser 詳細な属性情報が見やすい
グループ列挙 Get-ADGroup -Filter * Get-DomainGroup *admin* 等のフィルタが容易
PC列挙 Get-ADComputer -Filter * Get-DomainComputer OS情報なども即座に取得
SPN確認 (複雑なフィルタが必要) Get-DomainUser -SPN Kerberoasting攻撃の標的を即座に特定

PowerViewの実践例

# "admin" という文字が含まれるグループを探し、その数を数える
Get-DomainGroup "*admin*" | Measure-Object

# コンピュータ名だけをリストアップする
Get-DomainComputer | Select-Object Name

4. 最強の可視化ツール:BloodHound

前述の「グラフで考える」を実現するツールです。
SharpHound (データ収集) と BloodHound GUI (可視化・分析) の2つで構成されています。

Step 1: データ収集 (AttackBox / Linuxからの場合)

Windows環境がない場合や、Linuxの攻撃機から実施する場合は Python版 (bloodhound-python) を使用します。

# ドメインコントローラ(DC)を指定して全情報を収集し、ZIP化する
bloodhound-python -u <User> -p <Pass> -d <Domain> -ns <DC_IP> -c All --zip

⚠️ トラブルシューティング (DNSエラー)
bloodhound-python 実行時に dns.resolver.NoResolverConfiguration エラーが出る場合、攻撃機側のDNS設定 (/etc/resolv.conf) が空になっている可能性があります。
echo "nameserver 8.8.8.8" > /etc/resolv.conf 等でDNSを指定すると解決します。

Step 2: データのインポートと分析

収集した .zip ファイルを BloodHound GUI にドラッグ&ドロップでインポートします。

よく使う分析クエリ:

  • Find all Domain Admins: ドメイン管理者を特定。
  • Shortest Paths to Domain Admins: 一般ユーザーから管理者権限を奪取するための最短ルートを表示。
  • Node Info (Edge): 線(エッジ)をクリックすると、MemberOf (所属) や GenericAll (全権限)、ForceChangePassword (パスワード変更権限) などの関係性がわかります。

まとめ

Active Directoryの偵察は、以下の3段階で深めていくのが定石ということを学びました。

  1. 侵入直後: net コマンドで自分の立ち位置とドメインの規模を把握する
  2. 詳細調査: PowerView を使い、管理者グループや重要なサーバーを特定する
  3. 攻略パスの特定: BloodHound で可視化し、複雑な権限委譲やセッション情報を利用した攻撃ルート(Attack Path)を見つけ出す

ツールはあくまで手段です。「防御側が見落としている『隠れた関係性』を見つけ出す」という視点を持つことが、AD攻略の鍵となります。


参考リンク

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?