
Microsoft Configuration Manager용 BloodHound 수집기
SCCMHound는 Microsoft Configuration Manager(MCM)용 C# BloodHound 수집기입니다. Configuration Manager의 사용자와 컴퓨터에서 BloodHound 세션 정보를 수집할 방법을 찾고 있다면 바로 이 도구입니다!
다른 수집기(SharpHound, SOAPHound 등)의 데이터와 함께 수집된 데이터를 가져오는 것을 적극 권장합니다. 다른 데이터셋보다 먼저 또는 나중에 가져와도 상관없습니다. 이렇게 하면 Configuration Manager에서 수집한 정보로 보완된 대상 조직의 Active Directory 관계에 대한 광범위한 개요를 얻을 수 있습니다.
SCCMHound는 오픈 소스 프로젝트이지 CrowdStrike 제품이 아닙니다. 따라서 명시적이든 묵시적이든 공식적인 지원이 제공되지 않습니다.
SCCMHound는 Windows 10 버전 1607 이상과의 호환성을 보장하기 위해 .NET 4.6.2를 대상으로 합니다.
사용자 및 컴퓨터 정보를 쿼리할 수 있는 충분한 권한을 가진 MCM 관리자 계정이 필요합니다. 수집 방법에 따라 CMPivot 쿼리를 실행할 수 있는 권한도 필요합니다. 이 도구는 MCM "전체 관리자(Full Administrator)" 역할이 할당된 사용자로 테스트되었습니다.
서버와 사이트 코드는 MCM 콘솔에서 확인하거나 SharpSCCM과 같은 다른 도구를 사용하여 얻을 수 있습니다.

먼저 저장소를 클론해야 합니다. SCCMHound는 SharpHoundCommon을 서브모듈로 사용하므로 --recursive를 지정해야 합니다.
예: git clone [email protected]:CrowdStrike/sccmhound.git --recursive
로컬 복사본을 확보한 후 Visual Studio에서 SCCMHound.sln을 열고 컴파일하세요!
기본 수집 방법을 사용하려면 서버와 사이트 코드 인수를 지정하기만 하면 됩니다. SCCMHound는 호출된 실행 컨텍스트를 사용하여 MCM에 인증합니다. 예:
SCCMHound.exe --server <server> --sitecode <sitecode>
다른 사용자의 컨텍스트 또는 도메인에 가입되지 않은 컴퓨터에서 SCCMHound를 실행하려면 -u(--username), -p(--password), -d(--domain) 인수가 필요합니다. 예:
SCCMHound.exe --server <server> --sitecode <sitecode> -u <username> -p <password> -d <domain>
또는 SCCMHound를 호출하기 전에 runas /netonly를 사용할 수 있습니다:
runas /netonly /user:[email protected] cmd.exe
cd C:\path\to\SCCMHound
SCCMHound.exe --server <server> --sitecode <sitecode>
BloodHound 세션 데이터를 쉽게 수집하던 때를 기억하시나요? 음...

멋진 자격 증명 탈취 및 횡적 이동 그래프!!!

유지관리자가 수집 데이터 소스를 확장하고 버그를 해결하는 동안 친절하게 대해주세요 :)
알겠어요, 알겠어요... 다음 명령은 모든 수집 방법(CMPivot 수집 방법 포함)을 호출합니다:
SCCMHound.exe --server <server> --sitecode <sitecode> -c All
--server Required. SCCM server hostname/IP address.
--sitecode Required. SCCM sitecode.
-c, --collectionmethods (Default: Default) (LocalAdmins, CurrentSessions, All)
--loop (Default: false) Enable loop collection.
--loopduration (Default: 00:30:00) Loop Duration.
--loopsleep (Default: 60) Sleep time between loops in seconds.
--hc (Default: false) Health check. Simply tests authentication and exits.
-u, --username SCCM administrator username.
-p, --password SCCM administrator password.
-d, --domain SCCM administrator domain.
-v, --verbose (Default: false) Print verbose information to help with troubleshooting.
--help Display this help screen.
--version Display version information.
기본 수집 방법(-c 인수 미지정/불필요)은 지정된 MCM 사이트 서버에 대한 WMI 연결만 사용하여 BloodHound 데이터셋을 구성합니다. 이 수집 방법은 다음을 수집합니다:
이 수집 방법은 MCM의 각 Computer 개체에 대해 현재 로그온한 사용자 정보를 수집합니다. 이 방법은 여러 사용자가 인증되었는지 여부와 관계없이 MCM에서 보고한 로그온 사용자만 수집한다는 제한이 있습니다.
SCCMHound는 자동으로 사용자(Users)에 대해서만 그룹 멤버십을 채웁니다. ConfigMgr의 Group 개체에는 하위 그룹 또는 상위 그룹 정보가 포함되어 있지 않은 것으로 보이므로 BloodHound의 그룹에는 User 구성원만 표시됩니다. 이 부분은 추가 조사가 필요하며 다른 데이터셋(SharpHound, SOAPHound 등)과 함께 가져오는 경우 문제가 되지 않습니다.
이 수집 방법으로 더 넓은 세션 범위를 확보하려면 --loop 인수를 사용하여 세션 정보를 주기적으로 수집할 수 있습니다.
이 수집 방법(-c LocalAdmins)은 "Default" 수집 방법의 동작을 수행하고, "All Systems" 컬렉션을 쿼리하여 MCM에서 관리하는 모든 컴퓨터의 로컬 Administrators 그룹 내용을 수집합니다.
참고 (1): 이 수집 방법은 온라인 상태인 장치만 쿼리합니다. --loop 인수와 함께 사용하면 더 나은 범위를 얻을 수 있습니다.
참고 (2): 이 수집 방법은 CMPivot을 사용하여 모든 구성원에 대해 쿼리를 실행합니다.
이 수집 방법(-c CurrentSessions)은 "Default" 수집 방법의 동작을 수행하고, "All Systems" 컬렉션을 쿼리하여 MCM에서 관리하는 모든 컴퓨터의 실시간 세션 정보를 수집합니다.
이 수집 방법은 현재 온라인 상태인 장치만 쿼리합니다. --loop 인수와 함께 사용하면 더 나은 범위를 얻을 수 있습니다.
참고 (1): 이 수집 방법은 온라인 상태인 장치만 쿼리합니다. --loop 인수와 함께 사용하면 더 나은 범위를 얻을 수 있습니다.
참고 (2): 이 수집 방법은 CMPivot을 사용하여 모든 구성원에 대해 쿼리를 실행합니다.
모든 수집 방법을 한 번에 실행하려면 수집 방법으로 All(-c All)을 지정하면 됩니다.
CMPivot 작동 방식을 더 잘 이해하려면 다음 Microsoft 문서를 읽어보시기 바랍니다: https://learn.microsoft.com/en-us/mem/configmgr/core/servers/manage/cmpivot
요약 - CMPivot 수집 방법은 최대 50,000개 클라이언트가 있는 환경에서 Microsoft에 의해 테스트되었으며 네트워크 전체에서 50MB 미만의 트래픽이 발생했습니다. SCCMHound의 수집 방법은 약 1,000대의 컴퓨터가 있는 환경에서 테스트되었으며 확인된 문제나 서비스 저하가 없었습니다.
대규모 환경에서 이러한 수집 방법에 대한 피드백이 있으면 언제든지 보고해 주세요. 여기에 반영될 수 있습니다.
훌륭한 세션 및 로컬 Administrator 범위에 더해, SCCMHound는 수집된 개체에 추가 속성을 채웁니다. 이 속성들은 BloodHound의 "Node Info" 탭에서 "sccm" 접두사가 붙은 형태로 확인할 수 있습니다. 예: sccmADSiteName.
수집되는 속성은 다음과 같습니다:
customqueries.json은 가져온 SCCMHound 데이터셋으로 실행할 수 있는 Cypher 쿼리를 제공합니다. SCCMHound에 추가 기능이 추가됨에 따라 확장될 예정입니다.
사용하려면 customqueries.json을 ~/.config/bloodhound/customqueries.json에 복사하고 BloodHound를 다시 시작하기만 하면 됩니다. 그러면 쿼리가 BloodHound의 "Analysis" 탭에 표시됩니다.