LDAP Reconnaissance
偵察(reconnaissance)は、あらゆる成功した攻撃の重要な要素です。大きく2つの形態があります。1つは、攻撃者が組織に侵入する前に行われる初期または外部の偵察。もう1つは、組織の環境に関する追加情報や文脈(コンテキスト)を見つけるための内部の偵察です。
LDAP の偵察(reconnaissance)は、攻撃者が Active Directory 内のユーザー、グループ、コンピューターを発見するために用いる内部の偵察手法です。攻撃者は LDAP クエリを使用して環境への理解を深め、それによって標的を見つけ、攻撃の次の段階を計画しやすくなります。この手法は、すでに組織に侵入している対抗者によって使用されるため、外部(ではなく)内部の偵察手法に分類されます。
脅威の概要
対象:Active Directory
ツール:BloodHound、PowerSploit、SharpHound、Spray
ATT&CK® 戦術:Discovery
ATT&CK テクニック:T1087.002
難易度
検知:難しい
緩和:難しい
対応:中
LDAP を使用した偵察の実施
STEP 1:足場を確保する
攻撃者は、フィッシング、ウォータリングホール攻撃、パスワードスプレー攻撃など、さまざまな手法を用いて組織の IT 環境に足場を築きます。ここでは、考えられるユーザー名のリストを入手した攻撃者が、複数のプラットフォームでパスワードスプレー攻撃を実行するために作られた bash スクリプト「Spray」を使って、組織の仮想プライベートネットワーク(VPN)サーバーに対してパスワードスプレー攻撃を行う方法を示します:
[attacker@machine ~]$ spray.sh -cisco vpn.org.com usernames.txt passwords.txt 1 35
Valid Credentials joed Summer2020
STEP 2:LDAP を使用して偵察を行う
攻撃者は侵害された認証情報を使ってVPNに認証し、ネットワークへのアクセス権を取得した後、同じ認証情報を使って Active Directory を照会します。ActiveDirectory PowerShell モジュールを使って Active Directory を列挙することも、BloodHound のようなツールPowerSploit を使って、発見を自動化することもできます。この例では、攻撃者が PowerShell を使ってユーザーの説明(description)属性にある可能性のあるパスワードを探します:
PS> Import-Module ActiveDirectory
PS> Get-ADObject -LDAPFilter "(&(objectClass=user)(description=*pass*))" -property * | Select-Object SAMAccountName, Description, DistinguishedName
SAMAccountName DescriptionDistinguishedName
-------------- ----------------------------
AlicePassword: P@ssw0rd123!CN=Alice,OU=Users,DC=domain,DC=com
PS>
ステップ3:情報を活用して目標をさらに進める
攻撃者は見つけた認証情報を使い、BloodHound や SharpHound のようなツールで、さらに内部偵察を行います。これらは、複雑に絡み合った権限の関係をほどくのに役立ちます。この情報を使うことで、攻撃者はドメイン支配(domain dominance)などの目的につながる経路をマッピングできます。
下の図は例を示しています。攻撃者がユーザーアカウント Alice の認証情報を入手したと仮定しましょう。そのアカウントにはユーザー Eve に対する WriteDACL および WriteOwner の権限があるため、Alice は自分自身に対して Eve のアカウントへのアクセスを付与できます。Eve はアカウント Bob のパスワードをリセットする権利を持ち、Bob は権限(AdminSDHolder の伝播を通じて付与される)を持っているため、Domain Admins グループを変更できます。したがって、Alice のパスワードを見つけることは攻撃者にとって非常に価値があったのです!
結果
攻撃者は SharpHound.exe -C All でデータを収集した後、そのデータセットを BloodHound に読み込み、ドメイン支配(domain dominance)へ至る経路を調べることができます。
検知、軽減、対応
検知
難易度:難しい
LDAP プロトコルは Active Directory で頻繁に使用されるため、悪意のあるクエリと正当なクエリを切り分けることは困難です。さらに、Active Directory には、受信した正確なクエリをログに記録するための仕組みがありません。ただし、イベント 4662 のサブカテゴリ「Audit Directory Service Access」を使用することで、特定の属性へのアクセスに関するある程度のプロファイリングと監視を実現できます。
ドメイン コントローラーが特定の LDAP クエリに対して受信するネットワーク トラフィックを監視すると、対手の活動を検知できる可能性があります。次の表は、通常の運用では頻度が低いはずなのに、対手の活動を強く示唆し得るクエリの種類を少量サンプリングしたものです:
Query | Information Collected |
|---|---|
|
(&(ObjectClass=user)(servicePrincipalName=*)) |
All user objects that have a ServicePrincipalName configured |
|
(userAccountControl:1.2.840.113556.1.4.803:=65536) |
Objects that have Password Never Expires set |
|
(userAccountControl:1.2.840.113556.1.4.803:=4194304) |
Objects that do not require Kerberos pre-authentication |
|
(sAMAccountType=805306369) |
All computer objects |
|
(sAMAccountType=805306368) |
All user objects |
|
(userAccountControl:1.2.840.113556.1.4.803:=8192) |
All domain controller objects |
|
(primaryGroupID=512) |
All Domain Admins using PrimaryGroupID |
軽減
難易度:難しい
LDAP は通常の Active Directory の運用において不可欠な役割を果たしているため、組織は単純にその利用をブロックすることはできません。代わりに、そもそも侵入を防ぐための緩和策に注力してください。例として、ユーザーへの周知とトレーニング、エンドポイント侵害の検知と対応、フィッシングの検知と防止、メール セキュリティ、多要素認証(MFA)などがあります。
対応
難易度:中
環境内で LDAP の偵察が検知された場合は、インシデント対応プロセスを有効化し、インシデント対応チームに通知してください。
攻撃者の存在が確認された場合:
- 偵察(reconnaissance)を行っているユーザーアカウントのパスワードをリセットし、アカウントを無効化します。
- フォレンジック調査(forensic investigation)および根絶(eradication)と復旧(recovery)のために、送信元のコンピューターを隔離します。
共有する
Entra ID アプリケーション権限の悪用—仕組みと防御戦略
AdminSDHolder の改変――仕組みと防御戦略
AS-REP Roasting 攻撃—仕組みと防御戦略
Hafnium 攻撃—仕組みと防御戦略
DCSync 攻撃の解説:Active Directory セキュリティへの脅威
パス・ザ・ハッシュ(PtH)攻撃を理解する
Golden Ticket 攻撃とは?仕組み、検知、予防
gMSA の悪用攻撃と Golden gMSA 攻撃の解説
DCShadow 攻撃—仕組み、実例、そして防御戦略
ChatGPT プロンプトインジェクション:リスクの理解、例、予防
NTDS.dit 抽出攻撃の解説
Kerberoasting 攻撃—仕組みと防御戦略
Pass-the-Ticket 攻撃の解説:リスク、例、そして防御戦略
パスワードスプレー攻撃を理解する
平文パスワードの抽出(Plaintext Password Extraction)解説:リスク、例、予防
Zerologon 脆弱性を解説:リスク、悪用、緩和策
ランサムウェア攻撃の完全ガイド
Skeleton Key 攻撃:仕組みと検知方法
ラテラルムーブメント(Lateral Movement):それは何か、仕組み、予防策
中間者(MITM)攻撃:それが何で、どうやって防ぐのか
なぜ攻撃者は PowerShell をこれほどまでに好むのでしょうか?
クレデンシャルスタッフィング(Credential Stuffing)とは?
PowerUpSQL で SQL Server を侵害する
Mousejacking(マウス・ジャッキング)攻撃とは?そして防御方法
Security Support Provider(SSP)を使った認証情報の窃取
レインボーテーブル攻撃:仕組みと防御方法
パスワード攻撃を総合的に理解し、止める方法
Silver Ticket 攻撃
Pass-the-Cookie 攻撃で MFA を回避する
Golden SAML 攻撃の究極ガイド