ブログ

ドメイン管理者を探索するSharpHoundの検出

Secureworks Taegis XDR Tactic Graphs は、ドメイン管理者アクセスの獲得に使用される悪性ツールの存在を特定できる監視データを検索します。

※本記事は、https://www.secureworks.com/ で公開されている SNIFFING OUT SHARPHOUND ON ITS HUNT FOR DOMAIN ADMIN を翻訳したもので、 2023年8月1日執筆時点の見解となります。

Secureworks® Counter Threat Unit™ (CTU) では、Purple Team による「リサーチ スプリント」と呼ばれる演習を定期的に実施しています。これはまず最新の攻撃テクニックを把握し、次にそれを使用した攻撃を行って、Secureworks Taegis™ の保護性能を評価し、検知能力をさらに改善する余地を追求するものです。リサーチ スプリントでは、当社の脅威インテリジェンス調査から得た情報に加え、Secureworks Adversary Group (SwAG) による侵入テストや、Secureworks インシデント対応チームの活動から得た知見が活用されます。

サイバー攻撃では、攻撃者が高度な特権を持つアカウントを取得すると、システムやデータに自由にアクセスして、目的を達成することが容易になります。それを踏まえて、ある CTU™ リサーチ スプリントでは、攻撃者がドメイン管理者権限を取得する方法を重点的に調査しました。まず数百に及ぶ SwAG 侵入テスト レポートを調査し、お客様環境への侵入能力の高いドメイン管理者権限昇格ツールを特定しました。そして、このアクティビティを当社の制御環境でエミュレートして、これらのツールが使用されている場合にそれを検知する新しい方法を見つけ出しました。

最初に検討したのは、広く知られている BloodHound ツールセットと SharpHound データ コレクターです。これまで、Secureworks による SharpHound 対策プログラムは、Red Cloak™ などのエンドポイント エージェントが稼働しているシステム上で、ツール実行を検知することに重点を置いていました。しかし、この検知方法は、エンドポイント エージェントによる監視が行われていないシステム上で攻撃者がツールを実行した場合には効果がありません。このリサーチ スプリントの 1 つの目標は、実行されるシステムに依存せずに検知性能を改善できるように、SharpHound の監視データ全体をより深く理解することでした。

BloodHound

BloodHound ツールは、ターゲット環境内にある Active Directory (AD) オブジェクト間の関係を検出します。BloodHound は、グラフ理論に基づくツールであり、ターゲット AD 環境に関する情報をコレクターによって収集し、そのデータを取り込んで視覚的に表示します (図 1 を参照)。BloodHound を使用する攻撃者は、この視覚化されたターゲット AD 環境を検討して、管理者も気づいていないような経路で、特権アカウントを侵害したり、信頼関係を悪用したりする方法を素早く探し出します。攻撃者はその情報をもとに権限昇格攻撃を実行して、Kerberoasting に対して脆弱なユーザーを特定するなどの悪性アクティビティを行います。


図 1: BloodHound を使用した、ドメイン管理者権限を持つアカウントの検索(Source:Secureworks)

BloodHound は、複数種類のコレクター (別名、インジェスター) を使用して、目的の AD 環境から情報を収集できます。よく使われるコレクターに SharpHound があります。この名前は、開発者がコードベースに C# (C シャープ) を使用していることに由来しています。これとは別に、特定のタスクに対して Impacket フレームワークを使用する Python ベースのコレクター (BloodHound.py) もありますが、主に収集する情報は SharpHound と同じです。

SharpHound

このリサーチ スプリントでは、デフォルトの収集方法 (-c Default) を使用して Windows ワークステーションで SharpHound を実行し、ターゲット ドメイン (-d purplelabs.local) を指定しました (図 2 を参照)。コレクターの実行には、Windows ホスト上の侵害された管理者アカウント (pgustavo) を使用しました。


図 2: デフォルトの SharpHound 収集メソッドの実行(Source:Secureworks)

表 1 に、Windows ワークステーションで実行すると、このコレクターによって生成される監視データを示します。

タイムスタンプ (UTC) 概要 種類 TX_BYTE_COUNT (ネット)
2023-04-18T18:28:23 10.0.2.12 :51317 から 10.0.2.11 :445 TCP へのネットフロー NET 11613
2023-04-18T18:28:23 10.0.2.12 :51316 から 10.0.2.12 :445 TCP へのネットフロー NET
2023-04-18T18:28:23 10.0.2.12 :51316 から 10.0.2.12 :445 TCP へのネットフロー NET
2023-04-18T18:28:23 10.0.2.12 :51315 から 10.0.2.11 :445 TCP へのネットフロー NET
2023-04-18T18:28:21 10.0.2.12 から 10.0.1.11 :53 UDP へのネットフロー NET 5412
2023-04-18T18:28:18 10.0.2.12 :51314 から 10.0.1.11 :445 TCP へのネットフロー NET 12924
2023-04-18T18:28:18 10.0.2.12 :51313 から 10.0.1.11 :445 TCP へのネットフロー NET
2023-04-18T18:28:18 10.0.2.12 :51312 から 10.0.1.11 :389 TCP へのネットフロー NET 5230
2023-04-18T18:28:18 10.0.2.12 :51311 から 10.0.1.11 :389 TCP へのネットフロー NET 115995
2023-04-18T18:28:18 10.0.2.12 :51310 から 10.0.1.11 :389 TCP へのネットフロー NET 2329
2023-04-18T18:28:18 10.0.2.12 :51309 から 10.0.1.11 :389 TCP へのネットフロー NET 2347
2023-04-18T18:28:18 10.0.2.12 :51308 から 10.0.1.11 :389 TCP へのネットフロー NET 2321
2023-04-18T18:28:18 127.0.0.1 から 127.0.0.1 :64700 UDP へのネットフロー NET 11
2023-04-18T18:28:18 10.0.2.12 :51307 から 10.0.1.11 :389 TCP へのネットフロー NET 2320
2023-04-18T18:28:16 10.0.2.12 :51306 から 10.0.1.11 :389 TCP へのネットフロー NET 22134
2023-04-18T18:28:16 10.0.2.12 :51305 から 10.0.1.11 :389 TCP へのネットフロー NET 395216
2023-04-18T18:28:16 10.0.2.12 から 10.0.1.11 :389 UDP へのネットフロー NET 447
2023-04-18T18:28:15 "D:\SharpHound.exe" -c Default -d purplelabs.local PROC

表 1: SharpHound をローカルで実行した後に Windows ワークステーション (WORKSTATION02 / 10.0.2.12) から収集された監視データ

表 2 に、ドメイン コントローラから収集した監視データを示します。SharpHound コレクターによる DNS ルックアップの結果、多数のネットフロー イベントが生成されたため、表にはアクティビティの一部のみを記載します。

タイムスタンプ (UTC) 概要 種類 TX_BYTE_COUNT (ネット)
2023-04-18T18:28:21 数百の DNS ルックアップにによるネットフロー イベント (一部) NET
2023-04-18T18:28:21 10.0.2.12 :50397 から 10.0.1.11 :53 UDP へのネットフロー NET 118
2023-04-18T18:28:21 10.0.2.12 :57013 から 10.0.1.11 :53 UDP へのネットフロー NET 117
2023-04-18T18:28:18 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:18 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:18 10.0.2.12 :51314 から 10.0.1.11 :445 TCP へのネットフロー NET 9997
2023-04-18T18:28:18 10.0.2.12 :51313 から 10.0.1.11 :445 TCP へのネットフロー NET
2023-04-18T18:28:18 10.0.1.11 :56099 から 168.63.129.16 :80 TCP へのネットフロー NET 156
2023-04-18T18:28:18 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:18 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:18 10.0.2.12 :51312 から 10.0.1.11 :389 TCP へのネットフロー NET 2729
2023-04-18T18:28:18 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:18 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:18 10.0.2.12 :51311 から 10.0.1.11 :389 TCP へのネットフロー NET 932649
2023-04-18T18:28:18 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:18 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:18 10.0.2.12 :51310 から 10.0.1.11 :389 TCP へのネットフロー NET 299
2023-04-18T18:28:18 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:18 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:18 10.0.2.12 :51309 から 10.0.1.11 :389 TCP へのネットフロー NET 299
2023-04-18T18:28:18 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:18 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:18 10.0.2.12 :51308 から 10.0.1.11 :389 TCP へのネットフロー NET 299
2023-04-18T18:28:18 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:18 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:18 10.0.2.12 :51307 から 10.0.1.11 :389 TCP へのネットフロー NET 299
2023-04-18T18:28:16 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:16 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:16 10.0.2.12 :51306 から 10.0.1.11 :389 TCP へのネットフロー NET 14911165
2023-04-18T18:28:16 4624:pgustavo による PURPLELABS.LOCAL へのログオン AUTH
2023-04-18T18:28:16 4672:pgustavo による新規ログオンに割り当てられた特別な権限 AUTH
2023-04-18T18:28:16 10.0.2.12 :51305 から 10.0.1.11 :389 TCP へのネットフロー NET 10442776
2023-04-18T18:28:16 10.0.2.12 :64701 から 10.0.1.11 :389 UDP へのネットフロー NET 176
2023-04-18T18:28:16 10.0.2.12 :64699 から 10.0.1.11 :389 UDP へのネットフロー NET 176

表 2: SharpHound の実行後にドメイン コントローラー (DC01 / 10.0.1.11) から収集された監視データ

SharpHound は、ドメイン コントローラーに対して一連の LDAP クエリを発行して、コンピューター名、グループ、ユーザー アカウントなどの AD オブジェクトを列挙します。この LDAP クエリは暗号化された LDAP セッションを介して発行される可能性があるため、必ずしもネットワーク検査で検知できるとは限りません。ただし、Windows ライブラリを利用して LDAP クエリを生成するツールは、Windows のイベント トレース (ETW) を介して監視できます。表 3 に、SharpHound ツールの実行中に作成された ETW トレース セッションが捕捉した SharpHound LDAP クエリを示します。

LDAP クエリ 説明
(|(samaccounttype=268435456)(samaccounttype=268435457)(samaccounttype=536870912)(samaccounttype=536870913)(primarygroupid=*)) プライマリ グループ ID を持つセキュリティ グループ、非セキュリティ グループ、エイリアスと非エイリアス オブジェクトのグループ メンバーシップを検出します
(&(sAMAccountType=805306369)(!(UserAccountControl:1.2.840.113556.1.4.803:=2))) 有効なコンピューター アカウントを検出します
(|(samAccountType=805306368)(samAccountType=805306369)(samAccountType=268435456)(samAccountType=268435457)(samAccountType=536870912)(samAccountType=536870913)(objectClass=domain)(&(objectcategory=groupPolicyContainer)(flags=*))(objectcategory=organizationalUnit)) 列挙されたオブジェクトのセキュリティ情報が格納されているアクセス制御リスト (ACL) を検出します
(|(samaccounttype=268435456)(samaccounttype=268435457)(samaccounttype=536870912)(samaccounttype=536870913)(samaccounttype=805306368)(samaccounttype=805306369)(objectclass=domain)(objectclass=organizationalUnit)(&(objectcategory=groupPolicyContainer)(flags=*)))

さまざまな AD グループ、ユーザー アカウント、コンピューター アカウント、グループ ポリシーを検出し、分析に役立つ多様なフィールド名を取得します。

(|(&(&(objectcategory=groupPolicyContainer)(flags=*))(name=*)(gpcfilesyspath=*))(objectcategory=organizationalUnit)(objectClass=domain)) AD コンテナとリンクされたグループ ポリシー オブジェクト (GPO) を検出します
(&(samaccounttype=805306368)(serviceprincipalname=*)) サービス アカウントのすべてのサービス プリンシパル名 (SPN) を検出します
(|(samAccountType=805306368)(samAccountType=805306369)(objectclass=organizationalUnit)) 返されたオブジェクトについて、他のすべての子ユーザー、コンピューター、組織単位 (OU) オブジェクトを検出します
(objectclass=container) 返されたオブジェクトについて、すべての子コンテナ オブジェクトを検出します
(|(samAccountType=805306368)(samAccountType=805306369)) ユーザー オブジェクトとコンピューター オブジェクトをすべて検出します
(objectclass=trusteddomain) 信頼されたドメインをすべて検出します

表 3: SharpHound が発行した LDAP クエリ

LDAP 接続の結果、生成されたリモート Windows 認証ログオン イベント (イベント ID 4624) のうち、複数がログオンに成功しました。LDAP クエリから返された結果により、さらに追加のアクティビティが生成されます。たとえば、特定された各コンピューター アカウントの DNS ルックアップや、TCP 445 テスト接続を実行するアクティビティ、さらにテスト接続に成功した場合に、リモート プロシージャ コール (RPC) を介して SMB 経由のセッション情報を列挙するアクティビティなどです。セッション情報を列挙するには管理者権限が必要であることに注意してください。このアクティビティにより、数百回に及ぶドメイン コントローラーへの DNS ルックアップ リクエストと、数百回に及ぶ複数ホスト間でのポート 445 接続が、短時間の間に発生します。

Taegis Tactic Graphs 検知機能による SharpHound への対応

CTU リサーチ チームは、環境内で生成されるあらゆる監視データを把握した上で、この調査スプリントの成果として、SharpHound を特定する脅威への対策プログラム「Taegis XDR Tactic Graphs™」を開発しました。この脅威への対策プログラムでは、認証とネットフロー イベントを使用して、SharpHound コレクターと一致する監視データ プロファイルのインスタンスを検出します。Taegis は、SharpHound の実行などの個々の悪性イベントだけでなく、攻撃に関するその他の情報を提供する一連のイベントを併せて検出します。Taegis XDR は、CTU が調査で得た脅威インテリジェンスを追加して継続的に更新されることで、ノイズ、正当な使用、実用的なアラートを区別するのに役立ちます。

Taegis XDR をプレビューして、攻撃者のツールとテクニックへの対応をご確認ください。


ABOUT THE AUTHOR
カウンター・スレット・ユニット・リサーチチーム

The Secureworks Counter Threat Unit™ (CTU) is a dedicated threat research team that analyzes threat data across our global customer base and actively monitors the threat landscape.
ブログ記事一覧ページに戻る

今すぐ Taegis を試す

ご確認ください。 Taegis がどのようにリスクを軽減し、既存のセキュリティ投資を最適化し、人材不足を解消ことができるかをデモでご覧ください。