본문으로 건너뛰기

Ring3로 부족한 순간 ​

스크린셰어의 기본 검사 범위는 Ring3(유저모드) 아티팩트다. 하지만 행위자가 Ring3를 의도적으로 비켜 가는 경우, 또는 호스트 OS 바깥에서 메모리를 읽는 경우에는 Ring3만으로 부족하다. 이 페이지는 언제 Ring0·DMA/L0으로 올라가는지 그 조건과 순서를 정한다.

왜 Ring3만으로 부족한가 ​

Ring3 아티팩트(Prefetch, USN, BAM, 프로세스 목록, 서명 경로)는 모두 "호스트 OS가 파일을 열고 프로세스를 띄운 결과"다. 그런데 세 가지 상황에서는 이 아티팩트가 생성되지 않거나 아주 적게 생성된다.

  1. 커널 경로. 치트의 읽기·쓰기를 유저모드 프로세스가 아니라 드라이버가 수행하면, 유저모드에는 "치트.exe"가 없다. 남는 것은 드라이버 로드·서비스 생성·Code Integrity 이벤트 같은 커널 측 흔적이다.
  2. 외부 경로(DMA). PCIe 슬롯에 꽂힌 장치가 버스 마스터링으로 물리 메모리를 직접 읽고, 렌더링·오버레이를 두 번째 PC가 담당하는 구조에서는 호스트에 치트 프로세스도 파일도 존재하지 않을 수 있다.
  3. 정리된 Ring3. 실행 후 로더를 지우고 Prefetch·로그를 정리한 경우, Ring3 증거가 부분적으로만 남는다. 이 경우 남은 조각이 "설명되지 않는 실행"으로 보인다. 로그 무결성 흔적(비활성 채널·4616·ACL deny·공백 .pf)은 이 상황을 가리키는 징후다.

Ring3에서 "안 보인다"는 것은 "없다"가 아니다. 검사가 닿는 층에 흔적이 없다는 뜻이고, 닿지 않는 층의 존재를 배제하지 않는다.

반대 방향의 경계도 정해 둔다. 파일리스 실행·인젝션·로그 파괴 계열의 우회는 쓰였다는 흔적이 대부분 Ring3 안에 남는다 — 실행 주체의 .pf, ScriptBlock 로그, 인젝터 실행 기록, 프로세스의 unbacked 메모리 영역이다. 이런 우회는 진입 조건이 아니라 Ring3 축의 검사 대상이다. 디스크와 모듈 목록에서 근거가 소거된 경우(메모리 문자열까지 지우는 로더, 복제 프로세스에서 실행하는 주입)에는 표준 절차 T+30의 메모리 축 분기로 확인한다. 메모리 축은 Ring3 안의 선택 단계이고, Ring0·DMA 진입은 아래 조건표의 커널 경로·외부 경로 리드에서만 시작한다. "우회가 정교하다"는 사정 자체는 진입 조건이 아니다.

에스컬레이션은 판정이 아니다 ​

에스컬레이션은 더 깊은 층을 볼 수 있게 하는 진입 절차다. 진입 조건을 충족했다고 의심이 올라가지 않고, 올라간 층에서 아무것도 못 찾아도 그 사실 자체를 불리한 증거로 쓰지 않는다. 판정 라벨(Confirmed/Suspicious/Insufficient/Clean(조건부))과 별개의 운영 결정이다.

반대 방향도 성립한다. 진입 조건이 안 맞으면 올라가지 않는다. "혹시 몰라서" 커널 드라이버를 건드리거나 장치를 뜯는 것은 절차가 아니라 사고다.

선행 조건: Ring3 소결 ​

에스컬레이션 전에 Ring3 축을 끝내고, 쓰여진 소결을 남긴다. "대충 봤는데 없었다"는 소결이 아니다. 소결에는 최소한 다음이 들어간다.

  • 수행한 축과 각 축의 결과(이상 없음 / 단서 / 확인된 이상).
  • 스킵한 축과 그 사유. 칸을 비워 두면 나중에 재현이 끊긴다.
  • 아직 설명되지 않는 리드(재검증이 남은 단서·히트, 용어집)의 목록. 이 목록이 다음 층 진입 여부를 판단하는 근거다.

소결이 없는 에스컬레이션은 아래층을 보지 않은 채 헤매는 것과 같다.

Ring0 진입 조건 ​

다음 중 하나 이상이면 Ring0 깊이로 올라간다. Ring0 진입은 치트 확인이 아니다. 서명된 정상 드라이버가 대부분이고, BYOVD에서조차 파일은 합법 벤더 서명이다.

트리거구체
제보·증거가 커널 경로를 가리킴"드라이버로 읽는다", "매퍼를 썼다", "프로세스가 안 보인다"는 제보가 Ring3 결과와 모순됨
서명·경로 이상이 .sys에서 관찰Temp/AppData/게임 폴더의 드라이버, 서명 없음·해지됨, 이름이 시스템 드라이버를 모사
스캐너가 커널 힌트를 냄모듈 목록 불일치, 숨겨진 드라이버, 알려진 취약 드라이버 이름
짧은 수명의 서비스System 로그 7045(서비스 설치) 직후 삭제 흔적, 임시 경로의 .sys를 가리키는 서비스
비정상 .sys 발견Ring3 파일 시스템 축(USN·서명 검사)에서 드라이버 파일이 리드로 남음
CI·HVCI 이상 + 행동 제보타임라인 안의 메모리 무결성 변경이나 CodeIntegrity 차단·감사 이벤트가 행동 제보와 겹침
조직 정책사건 등급상 커널 축을 반드시 수행하도록 합의된 경우

Ring0에서 하는 일은 열거·서명·로그 읽기다. 하지 말아야 할 것(로드·언로드·exploit 재현)은 아래 "하지 말 것"에 있다.

DMA/L0 진입 조건 ​

다음 중 하나 이상이면 DMA/L0 깊이로 올라간다. DMA는 매번 하는 검사가 아니며, 트리거가 없으면 하지 않는다.

트리거구체
Ring3가 제보를 설명 못 함"상대 시야·탄착·위치를 안다"는 제보가 있는데 프로세스·파일·네트워크 어디에도 근거가 없음
숨은 장치·드라이버 실패 흔적장치 관리자에 알 수 없는 장치, 로드 실패 드라이버, 문제 코드 장치. 이것은 맥락이지 증거가 아니다
2PC·캡처 장치 정황두 대의 PC, 퓨저(두 PC 화면을 합성하는 장치)·캡처 카드 구성, 원격 제어 흔적
외부 입력 장치·캡처 정황설명되지 않는 USB 입력 장치(추가 마우스·키보드, USB 시리얼 장치)나 반복 연결 이력에 "조준·반응이 비정상"이라는 행동 제보가 겹침. 영상 캡처와 외부 입력 장치로 조준하는 구성(AI 픽셀봇)은 게임 PC에 입력 장치 이력 정도만 남긴다. 장치 이력은 연결 사실만 말하므로 단독으로는 판정 근거가 되지 않는다
플랫폼 정책 + 행동 제보플랫폼이 DMA 보호·IOMMU를 요구하는데 꺼져 있고, 행동 제보가 동시에 존재

환경이 약하다는 사실 자체는 진입 조건이 아니다. IOMMU·HVCI·Secure Boot가 꺼져 있어도 그것만으로 Suspicious나 Confirmed 판정의 근거가 되지 않는다. 환경 약점은 "접근 가능성"을 말할 뿐 "사용"을 말하지 않는다. 진입 여부는 항상 행동·장치·로그 쪽의 구체적 리드에서 시작한다.

최소 검사 순서 ​

올라갔다면 이 순서를 따른다. 어느 층이든 한 번에 다 뜯지 않고 읽기 쉬운 것부터 진행한다.

Ring0:

  1. 로드된 드라이버 열거(driverquery /v, Autoruns Drivers, System Informer)와 서비스 열거(sc query type= driver state= all).
  2. 각 항목의 경로·서명 위생 확인. Temp/AppData/게임 폴더의 .sys는 바로 리드.
  3. Code Integrity Operational 로그 확인. 서명 검증 실패·정책 차단 이벤트를 시간순으로.
  4. 발견된 .sys의 SHA256을 LOLDrivers와 대조.
  5. 서비스 생성·삭제 시간(7045 등)을 Prefetch·USN 타임라인에 겹쳐 본다.

DMA/L0:

  1. 장치 관리자에서 숨김 장치까지 열고, 알 수 없는 장치·문제 코드 장치를 확인.
  2. pnputil /enum-devices(Windows 10 1903+)로 장치 목록을 텍스트로 확보.
  3. Kernel-PnP·setupapi 타임라인에서 세션 전후의 설치·제거 패턴을 본다. USB 입력 장치도 포함한다(HID 장치 확인).
  4. Kernel DMA Protection·IOMMU·메모리 무결성 상태를 캡처한다.
  5. 2PC·캡처·원격 접근 맥락을 확인하고, 호스트 헬퍼(.sys, 매퍼)가 있는지 Ring0 쪽을 다시 본다.

각 단계의 산출물은 캡처·텍스트로 남긴다.

증거 위치 ​

Ring0·DMA 에스컬레이션의 수집물은 08-escalation/에 둔다. 06-af/는 안티포렌식 슬롯이므로 거기에 Ring0·DMA 증거를 넣지 않는다. 환경 상태(DMA Protection·IOMMU·HVCI·VBS·Secure Boot)는 09-platform-env/에 둔다. 폴더를 섞으면 나중에 "어디서 찾은 증거인지"가 끊긴다.

하지 말 것 ​

  • 취약 드라이버를 로드·설치·언로드하거나, 그 방법을 안내한다.
  • exploit을 재현하거나 PoC를 실행한다.
  • DMA 장치의 구매·펌웨어·설정 절차를 서술한다.
  • 대상 시스템의 설정을 바꾼다(드라이버 제거·로그 삭제·보안 기능 토글).
  • 동의된 범위를 넘어 "혹시 있을지 몰라" 전체 디스크를 뒤지거나 메모리 전체를 덤프한다.

판정으로 돌아오기 ​

에스컬레이션 결과는 07-verdict.md의 축으로 돌아간다. 정리 규칙:

  • Ring0 단독으로 Confirmed 불가. 커널 흔적만으로는 최소 두 개의 독립 축(예: Ring3 실행 아티팩트 + Ring0 로드·서명·타임라인 일치)이 수렴해야 한다.
  • DMA 단독으로 Confirmed 불가. 장치·환경·행동 중 어느 하나만으로는 부족하다. DMA 관련 단서만 있으면 기본값은 Insufficient다.
  • Clean(조건부) 은 합의된 축을 모두 수행했고, 문서화된 진입 절차를 거쳤으며, 잔여 리드가 없을 때만 가능하다. 진입해서 검사했는데 그 안에서 무엇을 봤는지 기록이 없으면 Clean(조건부)도 Confirmed도 아닌, 기록이 끊긴 상태다.

Sources ​

Next ​