
DCSYNCおよびDCSHADOW攻撃を監視し、これらのイベントに対してカスタムWindowsイベントを作成します。
このツールは、ドメインコントローラに展開して、ドメインコントローラの同期試行を警告するアプリケーション/サービスです。試行が検出されると、ツールはWindowsイベントログにイベントを書き込みます。これらのイベントはSIEMで相関させることができます。さらに、このツールは有効なDC IPのリストを受け取り、その構成では、DC SYNC試行が非DC IPから発生した場合にのみ警告します。このツールは、Microsoft ATAのような商用ツールや高度なIDS/IPSを使わずに、ブルーチームがDC SYNC攻撃やDC SHADOW攻撃に対抗する方法を提供することを目的としています。
簡単なYoutubeビデオ: https://www.youtube.com/watch?v=oLND9QZfaJc
このツールをインストールするには、事前ビルドされたバイナリを使用するか、自分でビルドすることができます。事前ビルドされたバイナリへのリンクはこちら:
32ビットサービス: https://github.com/shellster/DCSYNCMonitor/raw/master/Release/DCSYNCMONITORSERVICE.exe
64ビットサービス: https://github.com/shellster/DCSYNCMonitor/raw/master/x64/Release/DCSYNCMONITORSERVICE.exe
ドメインコントローラにWinpcapまたはNpcapをインストールする必要があります。Winpcapでも動作するはずですが、パケットキャプチャの方法がNpcapほど効率的または完全ではないため、推奨されません。このツールはWinpcapでは簡単にテストされただけです。
Npcapをインストールするには、インストーラをこちらからダウンロードしてください: https://nmap.org/npcap/
以下のオプションがチェックされていることを確認してください:
インストール後、ドメインコントローラを再起動する必要があります。
NpcapはサポートライブラリDLLをシステムのDLL検索パスにインストールしないため、インストール後に以下の作業を実行する必要があります:
copy "%WINDIR%\System32\Npcap\*.dll" "%WINDIR%\System32\"
#該当する場合 (64ビットシステム上の32ビットサービス):
copy "%WINDIR%\SYSWOW64\Npcap\*.dll" "%WINDIR%\SYSWOW64\"
注意: 前の手順を実行しないと、ツールの実行時にwpcap.dllまたはPacket.dllが見つからないというエラーが発生します。
次に、このプロジェクトからDCSYNCMONITOR.EXEを適切な場所にコピーします。32ビットシステムまたは64ビットサービスを実行する64ビットシステムの場合は%WINDIR%\SYSTEM32を、64ビットシステム上で32ビットサービスを使用する場合は%WINDIR%\SYSWOW64を推奨します。
これでツールを実行できます。ただし、次の2つの方法のいずれかで実行できます:
このモードでは、過去5分間に確認されていない新しいIPがドメインコントローラに対してDC SYNCを実行しようとするたびに、DCSYNCALERT WarningイベントがWindowsアプリケーションイベントログに書き込まれます。これには、ドメインコントローラ間の正当な同期アクティビティも含まれます。
"dc_ip_list.conf"という設定ファイルをツールと同じディレクトリに配置できます。このファイルが存在する場合、1行に1つのIPv4アドレス(または長形式のIPv6アドレス)を含める必要があります。ツールは起動時にこのリストを読み込みます。このモードでは、一致するIPアドレスからのDC SYNC試行に対してイベントは書き込まれません。ただし、他のIPアドレスからDC SYNC試行が発生した場合は、DCSYNCALERT ErrorイベントがWindowsアプリケーションイベントログに書き込まれます。
注意 dc_ip_list.confファイルへの変更は、サービスが停止され再起動されるまで有効になりません。
このツールの通常の使用方法は、サービスとしてインストールすることです。ツールを適切なフォルダに配置した後、以下を実行することで簡単にインストールできます:
DCMONITORSERVICE.exe -install
サービスをインストールしたら、Services.mscメニューから手動で開始するか、適切なnetコマンドまたはscコマンドを使用して開始する必要があります。将来の再起動時に自動的に開始されます。
サービスをアンインストールする必要がある場合は、次のコマンドを実行します:
DCMONITORSERVICE.exe -remove
最後に、サービスをインストールせずにスタンドアロンモードでツールを実行する場合(特にデバッグに便利):
DCMONITORSERVICE.exe -standalone
有効なDC IPのリストが提供されていない場合、または有効なDC IPからDC SYNCが発生した場合に、DC SYNC Warningイベントが発生します:

有効なDC IPのリストが提供され、他のIPアドレスからDC SYNCが発生した場合に、DC SYNC Errorイベントが発生します:

Visual Studio 2015以降が必要です。Community(無料)エディションで十分です。プロジェクトを開くと、32ビット版と64ビット版の両方で、Dev版とRelease版をすぐにビルドできるはずです。Debug版は本番環境に展開しないでください。これらは、monitor.cppファイル内の次の行をコメント解除すると、tcpパケットダンプを含む詳細なエラーおよびデバッグ情報を出力します:
#ifdef _DEBUG
//debug_print("TCP SRC IP: %s\nData:\n", tcppacket.source_ip.address.c_str());
//print_payload((const u_char *)tcppacket.data, tcppacket.data_length);
#endif
Release版ははるかに小さく、デバッグステートメントを自動的に削除します。
このツールには次の既知の制限があります:
このツールはMITライセンスの下で提供されます(LICENSEを参照)
ツールはShelby Spencerによって書かれました:
FusionXはこのツールの更新と改良、および発表の場を提供する時間を惜しみなく与えてくれました。ただし、このプロジェクトは私が単独で所有し開発しています。
提案、フィードバック、PRはすべて歓迎し、推奨します。