피드로 돌아가기
Deep inside the COM: Reading Windows ROT Without Asking Permission. Detective story
Dev.toDev.to
Security

Public API 제약을 우회한 Memory 분석으로 ROT 엔트리 22개 전수 추출

Deep inside the COM: Reading Windows ROT Without Asking Permission. Detective story

Pastukhov Aleksey2026년 5월 10일6advanced

Context

Windows COM의 GetRunningObjectTable API가 보안 정책 및 AppContainer 필터링으로 인해 실제 등록된 객체 일부만 반환하는 제약 존재. API 호출 없이 rpcss 메모리 영역을 직접 분석하여 필터링 되지 않은 전체 ROT(Running Object Table) 뷰를 확보하려는 시도.

Technical Solution

  • Ghidra 기반 역공학을 통한 CScmRot 및 CScmRotEntry 구조체 오프셋 정밀 분석
  • ReadProcessMemory를 활용한 svchost 프로세스 내 rpcss.dll 글로벌 포인터(gpscmrot) 추적
  • LOAD/STORE 인스트럭션 차이에 따른 글로벌 변수 접근 지점의 불일치 해결
  • 다수 svchost 프로세스 중 ROT가 실제 초기화된 활성 인스턴스를 식별하는 검증 로직 도입
  • 하드코딩된 RVA 대신 Mutex 호출 및 해시 테이블 접근 패턴을 기반으로 한 Behavioral Scorer 설계
  • 251개 버킷으로 구성된 Rolling Hash 테이블 구조를 분석하여 엔트리 전수 스캔 수행

1. 역공학 시 기호(Symbol)보다 생성자(Constructor)의 필드 초기화 순서를 통해 정확한 구조체 오프셋 산출

2. 메모리 스캔 시 LOAD와 STORE 인스트럭션의 차이로 인한 포인터 불일치 가능성 검토

3. 동일 DLL이 여러 프로세스에 로드된 경우, 포인터 NULL 여부를 통해 실제 데이터가 초기화된 활성 프로세스 선별

4. 바이너리 분석 시 정적 주소보다는 불변의 동작 패턴(Behavioral Pattern)을 가중치 기반으로 점수화하여 타겟 식별

원문 읽기