
DCSYNC 및 DCSHADOW 공격을 모니터링하고 이러한 이벤트에 대한 사용자 지정 Windows 이벤트를 생성합니다.
이 도구는 도메인 컨트롤러(Domain Controller) 동기화 시도를 알리기 위해 도메인 컨트롤러에 배포할 수 있는 애플리케이션/서비스입니다. 동기화 시도가 감지되면 도구는 Windows 이벤트 로그에 이벤트를 기록합니다. 이러한 이벤트는 SIEM에서 상관 분석할 수 있습니다. 또한 이 도구는 유효한 DC IP 목록을 사용할 수 있으며, 이 설정에서는 도메인 컨트롤러(DC) 동기화 시도가 DC가 아닌 IP에서 발생한 경우에만 경고합니다. 이 도구는 Microsoft ATA나 고급 IDS/IPS 같은 상용 도구 없이도 Blue Team이 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를 권장합니다.
이제 도구를 실행할 수 있습니다. 하지만 다음 두 가지 방법 중 하나로 실행할 수 있습니다:
이 모드에서 도구는 지난 5분 동안 보지 못한 새 IP가 도메인 컨트롤러에 대해 DC SYNC를 시도할 때마다 Windows 응용 프로그램 이벤트 로그에 DCSYNCALERT Warning 이벤트를 기록합니다. 여기에는 도메인 컨트롤러 간의 정당한 동기화 활동도 포함됩니다.
"dc_ip_list.conf"라는 설정 파일을 도구와 같은 디렉토리에 배치할 수 있습니다. 이 파일이 존재하면 한 줄에 하나의 IPv4 (또는 긴 형식의 IPv6) 주소가 포함되어야 합니다. 도구는 시작 시 이 목록을 읽어들입니다. 이 모드에서는 일치하는 IP 주소의 DC Sync 시도에 대해 이벤트가 기록되지 않습니다. 그러나 다른 IP 주소에서 DC Sync 시도가 발생하면 Windows 응용 프로그램 이벤트 로그에 DCSYNCALERT Error 이벤트가 기록됩니다.
참고: 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 버전은 프로덕션 환경에 배포해서는 안 됩니다. 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 라이선스(MIT License)로 제공됩니다 (라이선스 파일 참조)
도구는 Shelby Spencer가 작성했습니다:
FusionX는 이 도구를 업데이트하고 개선할 시간과 발표 플랫폼을 아낌없이 제공해주었습니다. 그러나 이 프로젝트는 전적으로 제가 소유하고 개발했습니다.
제안, 피드백 및 PR은 언제나 환영하며 권장합니다.