
2018年1月24日のMicrosoft BlueHatセキュリティカンファレンスで、研究者のBenjamin DelpyとVincent Le TouxはActive Directoryインフラストラクチャに対する新しい攻撃技術を実証しました。
新しい攻撃手法の名前はDCShadowです。 このような攻撃により、攻撃者はActive Directory環境で偽のドメインコントローラーを作成し、悪意のあるオブジェクトを作業中のActive Directoryインフラストラクチャに複製することができます。
まず第一に、この攻撃は、その作成者がWindows環境でパスワードを抽出するための最も一般的なユーティリティの1つである
mimikatzユーティリティの
作成者であるという点で注目に
値します。 それに基づいて、Windows環境での操作後の多くのユーティリティとフレームワークが機能します。 かつて彼女は多くの騒ぎを起こし、Windowsユーザーのパスワードをクリアテキストで取得できるようにしました。
DCShadow攻撃は、DrsReplicaAddトリガー(
DRSR 4.11.19.2)を使用してレプリケーションを開始します。 これにより、ドメインコントローラーのreplTo属性を変更し、すぐにレプリケーションを実行できます。
DCShadow攻撃の主なベクトルは、Configurationセクションで新しいサーバーとnTDSDSAオブジェクトを作成することです。 攻撃手法は、次の図によく表されています。

DCShadowを使用すると、データをレプリケートする必要がなくなります。ターゲットインフラストラクチャに新しいドメインコントローラーを登録して、Active Directoryオブジェクトを実装するか、既存のオブジェクトを変更します(属性の内容を置き換える)。 偽のドメインコントローラーの概念は新しいものではなく、既に攻撃に使用されていましたが、侵襲的な方法(たとえば、Windows Serverでの仮想マシンのインストール)が必要でした。
サーバーをドメインコントローラーにするには、次の機能を実行する必要があります。
- LDAPプロトコルを介して情報を複製できるデータウェアハウスを使用し、MS-DRSRおよびMS-ADTSの仕様を満たします。
- Kerberos、NTLM、Netlogon、またはWDigestを介して利用可能な認証ソースであること
- グループポリシー管理システムを使用する
- DNSプロバイダー(オプションの役割)。
これらのサービスをホストすることに加えて、作成プロセス中にドメインコントローラーをディレクトリインフラストラクチャに登録する必要があります。これは、複製ソースとして他のドメインコントローラーによって受け入れられる必要があります。 データ複製は、知識整合性チェッカー(KCC)と呼ばれる統合NTDサービスプロセスを使用して編成されます。 KCCの主な機能は、レプリケーショントポロジを作成および維持することです。 デフォルトでは、KCCは15分ごとに複製を開始し、一貫した定期的な更新を保証します。

DCShadow手法の作成者は、新しいサーバーをレプリケーショントポロジに導入するために必要な最小限の変更セットを決定しました。 これを実現するために、DCShadow攻撃は、ターゲットActive Directoryインフラストラクチャデータベースを変更して、偽のサーバーがレプリケーションプロセスの一部になるようにする必要があります。
MS-ADTS仕様によると、ドメインコントローラーはActive DirectoryデータベースでクラスnTDSDSAのオブジェクトとして表されます。これは常にドメイン構成の名前付けのコンテキストにあります。 NTDS-DSAオブジェクトは、子サーバーオブジェクトとしてのみ作成できます。子サーバーオブジェクトは、組織またはサーバーオブジェクトの一部にしかできません。 したがって、DCShadow攻撃の目標は、スキームの「構成」セクションに新しいサーバーとnTDSDSAオブジェクトを作成することです。
ただし、オブジェクトを追加するだけでは、偽のサーバーがレプリケーションを開始するのに十分ではありません。 レプリケーションプロセスに参加するには、次の2つの要件を満たす必要があります。
- 他のサーバーを信頼する
- 他のサーバーを偽のサーバーに接続してデータを複製するための認証サポートを提供します。
有効なアカウントを使用すると、偽のサーバーを信頼できるActive Directoryサーバーと見なすことができます。 Kerberos SPN属性は、他のドメインコントローラーの認証サポートを提供します。
この要件は、Kerberos(SPN)を使用して満たされます。 SPNは、Kerberos(KDC)によって使用され、SPNに関連付けられたコンピューターアカウントでKerberosチケットを暗号化します。 DCShadowテクニックを使用すると、認証に使用されるSPNを追加できます。
攻撃の作成者は、レプリケーションプロセスを完了するために必要なSPNの最小セットを特定しました。 彼らの調査結果は、2つのSPNが偽のサーバーに接続するために別のドメインコントローラーを必要とすることを示しています。
DCShadowでは、RPC関数DRSAddEntryを使用して、攻撃しているコンピューターにこれら2つのSPNをインストールできます。 偽のドメインコントローラーを登録して、レプリケーションプロセスに参加し、別のドメインコントローラーで認証できるようになりました。
DCShadow攻撃の最後の手順は、レプリケーションプロセスを開始することです。 以下が必要です。
- 別のドメインコントローラーのKCCプロセスがレプリケーションプロセスを開始するまで待ちます(15分)。
- DRSReplicaAdd RPC関数を呼び出して複製を作成します。これにより、repsTo属性の内容が変更され、すぐにデータ複製が開始されます。
IDL_DRSReplicaAdd RPCを使用した強制複製は、DCShadow攻撃の最後のステップです。 これにより、ターゲットADインフラストラクチャに任意のデータを入力できます。 同時に、管理グループなどに新しいユーザーを追加することが可能になります。
DCShadowは脆弱性ではなく、不正なデータをActive Directoryインフラストラクチャに導入する革新的な方法であることに注意してください。 これにより、攻撃者は、攻撃に成功したシステムで秘密のピン留めの新しい方法を使用できます。