DCSyncの概要
DCSyncを簡単に説明すると、Windows Active Directoryの複製(レプリケート)機能を悪用し、ドメインユーザの資格情報をダンプする行為です。
ADの複製機能に関しては、下記のURLが分かりやすかったですのでご参考にしてください。簡単にいうと、ネットワークにおいてADの冗長化を構成するために、複数のADを導入することが一般的です。この時、1つのADで何らかの変更が生じた場合に、他のADに対して変更内容を同期する機能のことを複製やレプリケートといいます。
DCSyncにおいては、この複製機能を悪用し、ユーザのパスワードハッシュを取得します。
DCSyncの前提条件に関しては、下記の権限を持つドメインユーザを掌握している必要があります。これらは複製を実施するための権限ですが、Administrators, Domain Admins, Enterprise Admins, およびDomain Controllerグループのメンバーには、デフォルトでこれらの特権があります。
Replicating Directory Changes All
Replicating Directory Changes
特権ユーザが奪取された場合にドメインユーザの認証情報が奪取されるのは、DCSync以外でもDomain Controllerに対するパスワードダンプ等で可能ですが、問題はこれらの権限がDomain Usersグループや、意図しないユーザに付与されている場合です。この場合、Domain Adminsグループのユーザを含めて全ユーザのパスワードハッシュの取得、及び成りますしが可能となります。
脆弱性の検証
システム環境と前提条件
- [OS]Windows Server 2016
- [攻撃側ユーザ]client01u1 (上記権限付与済み)
- [攻撃対象ユーザ]krbtgt, Administrator, ….. (全ドメインユーザが対象となる)
検証の流れ~BlueTeam側~
まず、Active Directory側でclient01u1の設定を行います。
ダッシュボードからツール>Active Directory ユーザのコンピュータを開きます。
表示>拡張機能にチェックを押します。
ドメイン(cyberlab.local)を右クリックし、プロパティを開きます。
攻撃側ユーザを設定します。セキュリティタブからclient01u1の「ディレクトリの変更のレプリケート」と「ディレクトリの変更をすべてにレプリケート」の両方を許可します。
これで、client01u1はADの複製機能が使用できるようになりました。
検証の流れ~RedTeam側~
攻撃者は何らかの方法により、client01u10というユーザに対するアクセス権を得たとします。
次に攻撃者はDCSyncを実施するために、mimikatzを使用してActive Directoryにユーザの資格情報の複製を要求します。
DCsyncを行うには下記のコマンドを入力します。今回は攻撃者の目的をゴールデンチケットの取得として、krbtgtのパスワードハッシュの取得を行います。
Invoke-Mimikatz -Command '"lsadump::dcsync /user:cyberlab\krbtgt"'
DCsyncに成功すると下記のようにNTLMが得られます。
個人的な見解、リスク低減策
DCSyncのリスクに関しては、一般ユーザ等に複製権限を与えている場合は要注意ですが、そのような設定になっていることは少ないと思うので、それほど高くないといった印象です。
ただし、krbtgtのパスワードハッシュが攻撃者に入手され、ゴールデンチケットが悪用される場合、それ以降の攻撃の検知が非常に困難になるので、下記のリスク低減策を中心に対策を行っておくべきです。
- 複製権限を持つユーザを最小限する
- 上記権限を持つユーザを定期的に取得し、正当かどうかを確認する
- 複製権限に変更があった場合に、イベントログ等でアラートする
コメント