
SCCM 데이터베이스 탐색 및 공격을 위한 전용 MSSQL 클라이언트입니다.
$ pipx install git+https://github.com/synacktiv/sccmsqlclient/
저장소를 클론하고 의존성을 설치하여 설치할 수 있습니다.
$ git clone https://github.com/synacktiv/sccmsqlclient
$ cd sccmsqlclient
$ python3 -m venv .venv && source .venv/bin/activate
$ python3 -m pip install -r requirements.txt
sccmsqlclient.py는 동일한 TDS(Tabular Data Stream) MSSQL 프로토콜 구현을 기반으로 하므로 Impacket의 mssqlclient.py와 동일한 인증 모델 및 구문을 사용합니다.
이미 Impacket 도구에 익숙하다면 사용법과 로그인 형식은 동일합니다.
$ python3 sccmsqlclient.py -windows-auth 'DOMAIN/USER:password'@mp.local
멀티사이트 계층 구조에서 SCCM 사이트와 서버를 나열합니다.
> sccm_sites
> sccm_servers
계층 구조 내에서 SCCM 인프라 서버와 할당된 역할을 열거합니다.
> sccm_sysreslist [ROLE_NAME]
> sccm_mp
> sccm_dp
이 명령 집합은 인프라 구성 요소와 그 역할을 파악하기 위해 SCCM 시스템 리소스 및 역할 할당 데이터를 조회합니다.
sccm_sysreslist → 등록된 모든 SCCM 시스템 리소스와 해당 역할을 나열합니다.sccm_sysreslist [ROLE_NAME] → 역할 이름으로 결과를 필터링합니다(예: 관리 지점(Management Point), 배포 지점(Distribution Point)).sccm_mp → 모든 관리 지점을 나열하는 바로가기입니다.sccm_dp → 모든 배포 지점을 나열하는 바로가기입니다.이름 또는 IP 주소로 부분 필터링하여 알려진 디바이스를 나열합니다.
> sccm_devices [FILTER]
BGB / 알림 채널 상태(OnlineStatus=0|1)와 함께 클라이언트를 나열합니다.
> sccm_devices_bgbstatus [FILTER]
Run Scripts 기능을 악용하여 관리 대상 디바이스에서 PowerShell 스크립트를 실행합니다.
문자열에서 직접 PowerShell 스크립트를 정의합니다.
> set_ps1_script "<string>"
예시:
> set_ps1_script "Get-Process | Select-Object -First 10"
로컬 .ps1 파일에서 스크립트를 로드합니다.
예시:
> load_ps1_script ./script.ps1
이전에 정의한 스크립트를 대상 SCCM 리소스에 대해 실행합니다.
> sccm_run_script <RESOURCE_ID>
예시:
> sccm_run_script 16777219
실행 시 이 명령은 두 개의 GUID를 생성합니다:
이 식별자는 자동으로 메모리에 저장되며 다음 명령에서 재사용됩니다:
last_task_outputllast_task_output_printlast_task_clean이를 통해 GUID를 수동으로 지정하지 않고 가장 최근 실행을 대상으로 작업할 수 있습니다.
sccm_run_script로 시작된 가장 최근 작업의 결과를 표시합니다.
> last_task_output
이는 마지막 SCCM Run Script 실행에서 메모리에 저장된 원시 실행 출력을 검색합니다.
마지막 작업의 실행 출력을 사람이 읽기 쉬운 형식으로 표시합니다.
> last_task_output_print
이 명령은 마지막 SCCM Run Script 실행의 원시 출력을 읽고 해석하기 쉽도록 형식을 정리합니다.
작업 또는 스크립트의 실행 상태를 검색합니다.
> sccm_ScriptsExecutionStatus [TASK_GUID|SCRIPT_GUID]
예시:
> sccm_ScriptsExecutionStatus
> sccm_ScriptsExecutionStatus 4F3A1B2C-AAAA-BBBB-CCCC-1234567890AB
가장 최근에 추적된 SCCM 작업을 제거합니다.
> last_task_clean
특정 BGB(Background Group) 작업을 제거합니다.
> sccm_BGB_Tasks_clean <TASK_GUID>
예시:
> sccm_BGB_Tasks_clean 4F3A1B2C-AAAA-BBBB-CCCC-1234567890AB
SCCM에서 Run Script 객체를 삭제합니다.
> sccm_script_delete <SCRIPT_GUID>
예시:
> sccm_script_delete 7F2C9D11-1111-2222-3333-ABCDEF987654
이 명령들은 NAA(Network Access Account), Client Push 자격 증명, Azure AD 애플리케이션 구성과 같은 민감한 SCCM 관련 비밀 정보를 열거하고 추출할 수 있게 해줍니다. 복호화는 SCCM Run Scripts를 통해 원격 스크립트를 실행하는 방식에 의존합니다.
NAA(Network Access Account) 또는 Client Push 설치 계정과 같은 권한 있는 작업에 사용하도록 구성된 SCCM 사용자 계정을 검색합니다.
> sccm_useraccounts
SCCM 내에 저장된 Azure AD 애플리케이션 구성을 열거합니다.
> sccm_add_apps
저장된 비밀 Blob을 복호화하기 위해 SCCM 관리 지점(Management Point) 또는 관리 대상 클라이언트에서 원격 스크립트를 실행합니다.
> sccm_decrypt_blob [RESOURCE_ID] [HEXBLOB]
이 명령은:
RESOURCE_ID가 필요합니다(sccm_devices_bgbstatus 참조).sccm_add_apps 또는 sccm_useraccounts에서 검색한 16진수 인코딩 Blob을 복호화합니다.실행은 원격으로 수행되며, 복호화된 결과는 SCCM Run Script 실행 채널을 통해 반환됩니다.