판정 루브릭
라벨은 네 개다. 올리는 것보다 잘못 올리지 않는 것이 절차의 신뢰다. 이 페이지는 각 라벨의 정의와, Confirmed로 올리기 전에 반드시 통과해야 하는 조건을 정리한다.
라벨 정의
| 라벨 | 언제 |
|---|---|
| Confirmed | 독립된 축 2개 이상이 같은 스토리로 수렴하고, 합리적인 정상 설명이 붕괴한다 |
| Suspicious | 유의미한 신호는 있으나 교차가 부족하거나 정상 설명이 남아 있다 |
| Insufficient | 권한·시간·휘발·도구·동의 범위 때문에 필수 축을 닫지 못했다 |
| Clean(조건부) | 합의된 범위에서 계획한 축을 수행했고 유의미한 이상이 없다. 무죄 선언이 아니라 범위 한정 진술이다 |
"거의 확정"이나 "느낌상 치트"는 라벨이 아니다. Suspicious로 내리거나 근거를 보강한다.
Confirmed로 올리기 전 체크
네 조건을 모두 충족해야 한다. 각 조건이 요구하는 것은 다음과 같다.
- 독립 축 ≥2. "독립"은 서로 다른 방식으로 실패하는 아티팩트 계열이라는 뜻이다. PF는 실행 기록, USN은 파일시스템 변경 기록, PROC는 메모리 관찰이다. 한 파서가 같은 파일에서 읽은 두 필드는 한 축이다. 스캐너 히트는 축이 아니라 리드(재검증 전 단서, 용어집)다 — 히트가 가리킨 것을 다른 축이 받쳐야 한다.
- 제보 시간대 정렬. 증거의 시각이 신고된 세션과 겹쳐야 한다. 일주일 전의 실행은 다른 문제다. 같은 이름의 파일이라도 시간대 밖이면 이 제보의 증거가 아니다.
- 합리적 정상 설명 붕괴. 정상 설명 후보를 하나씩 실제로 검토해 남은 것이 없어야 한다. 소거법으로 결론을 앞당기지 않는다. 정상 설명이 하나라도 살아 있으면 Suspicious다. 이 조건에는 파일 정체 확인이 들어간다. 실행되거나 생성된 파일이 치트라는 근거를 판정 문장에 적는다. 파일이 남아 있으면 해시와 서명을 확인하고, 스캐너 규칙을 그 파일에 다시 적용해 재검증한다. 파일이 지워졌으면 남은 근거를 적는다. 함께 받은 압축 파일이나 사본에 남은 다운로드 출처 표시(Zone.Identifier), 알려진 치트 이름, 메모리 문자열이 여기에 든다. 이름이 알려진 치트와 같다는 것만으로는 약한 근거다.
- FP 베이스라인 통과. FP 베이스라인에 해당 행이 있으면 그 행이 요구하는 추가 증거를 충족해야 한다. 해당하지 않아도 기록은 남긴다.
Confirmed를 금지하는 근거
아래 중 하나라도 해당하면 Confirmed가 아니다.
| 금지 | 이유 |
|---|---|
| 단일 축 단독 | 독립된 축이 둘 이상 필요하다. 파서 버그·FP·상관 오류 하나에 확정이 무너진다 |
| Ring0 단독 | 카탈로그 해시 일치·드라이버 로드 증거가 있어도 설치만 증명한다. Ring3 실행 흔적과 교차해야 한다 |
| DMA/L0 단독 | Insufficient가 기본이다. SS 범위 밖 장비의 소견만으로 로컬 판정을 내리지 않는다 |
| 커뮤니티 단독 근거 | 세 건이 일치해도 안 된다. 커뮤니티 정보는 방향 제시일 뿐 증거가 아니다 |
| 스캐너 히트 단독 | 히트는 단서다. 축으로 세지 않는다 |
| 무서명 DLL 단독 | 정당한 무서명 소프트웨어가 많다 |
| IOMMU·HVCI off 단독 | 환경 가중치일 뿐이다 |
| malfind 단독 | 디스크 타임라인과 교차하지 않으면 안 된다. 게임이 만드는 정상 RWX와 구분이 안 된다 |
| 우회 흔적 단독 | 채널 비활성·4616·ACL deny·공백 .pf는 "지우려 했다"를 증명할 뿐 "무엇을 실행했는가"를 증명하지 않는다 |
추가로, 삭제·정리로 생긴 공백을 "없음 = 정상"으로 착각하지 않았는지, 증거 패키지에 재현 가능한 포인터(경로·이벤트 ID·스크린샷)가 있는지 확인한다. 하나라도 실패하면 라벨을 내리거나 Insufficient로 둔다.
Confirmed의 검토
Confirmed는 검토를 거쳐 닫는다. 검토자는 분석자의 설명 없이 증거 패키지만 보고 같은 결론에 이르는지 확인한다. 독립 축의 수, 제보 시간대 정렬, FP 기각, 파일 정체 근거를 패키지의 경로·export·스크린샷으로 다시 따라간다. 같은 결론에 이르면 07-verdict.md의 Sign-off에 서명한다. 결론이 달라지면 라벨을 내리거나 부족한 축을 보강한다. 검토자를 둘 수 없으면 검토자가 없다는 사실을 판정 파일에 적는다.
우회 시도 흔적의 위치
채널 비활성화·이벤트 4616·로그 경로 변경·ACL deny·공백 .pf·RunMRU 정리 같은 우회 흔적은 치트의 직접 증거가 아니라 조작 시도의 증거다. 다만 부재가 아니라 관찰 가능한 상태이므로, 안티포렌식(AF) 축으로서 독립 축 하나를 구성한다.
조합 규칙은 기존 틀 그대로다. 우회 흔적 축과 치트 실행을 가리키는 다른 독립 축(PF·USN·BAM·메모리 등)이 제보 시간대에 수렴하면 Confirmed의 축 수 요건을 채운다. 우회 흔적만으로는 "무엇을 실행했는가"가 비어 있어 Suspicious를 넘지 않는다. 반대로 부재 기반 판독("로그가 비어 있다")은 우회 흔적이 아니다. 로그 무결성 확인에서 비활성·경로 변경이 확인된 채널의 공백은 상태 기록이지 증거가 아니고, Insufficient의 사유가 될 수 있다.
Suspicious가 되는 경우
유의미한 신호가 있지만 Confirmed의 네 조건 중 하나 이상을 닫지 못했을 때다. 대표적인 경우는 다음과 같다.
- 스캐너 리드가 강하고 디스크 증거가 일부만 받쳐 준다. 예를 들어 히트가 가리킨 파일의 실행 흔적이 한 축에만 있다.
- 안티포렌식 패스에서 "너무 깨끗함"이 보이고 클리너 잔여가 일부 남아 있다.
- Ring0·DMA 게이트에 들어갔지만 시간이나 권한 때문에 끝내지 못했다.
- 매크로가 정책상 금지 형태일 수 있지만 온보드 검증을 하지 못했다.
Suspicious 판정 문장에는 다음 조치를 적는다. 추가 검사, 재소환, 에스컬레이션 중 무엇을 권고하는지와 그 이유다.
Insufficient가 되는 경우
확인해야 할 축을 닫지 못했을 때다. 대표적인 경우는 다음과 같다.
- 도구 2종이 모두 실패해 "비어 있음"을 확인하지 못했다.
- USN 저널이 랩돼 제보 시간대의 기록이 이미 밀려났다.
- 판정에 메모리 덤프가 필요한데 동의 범위가 덤프를 허용하지 않는다.
- 핵심 축을 여러 개 건너뛰었다.
- 시계 변경·타임존 불일치나 계정 혼선 때문에 증거를 제보 시간대와 대상자에 맞출 수 없다.
Insufficient는 확인을 끝내지 못했다는 진술이다. "합의한 범위에서 찾았고 없었다"는 Clean(조건부)의 진술이므로 둘을 섞지 않는다. 판정 문장에는 재검사 조건을 적는다. 다른 도구, 넓힌 동의 범위, 다음 제보 때의 즉시 호출처럼 무엇이 갖춰지면 다시 볼 수 있는지다.
Clean(조건부)의 요건
Clean(조건부)은 "없다"가 아니라 "합의된 범위에서 찾았고 없었다"는 뜻이다. 모두 충족해야 한다.
- 필수 Ring3 축(SCAN 또는 동등한 수동 확인 + PF + USN 조회 시도 + BAM + AF + 판정 관련 SIG/PROC)을 완료했거나, 스킵한 축의 사유가 문서화돼 있다.
- 잔여 Suspicious 리드가 없다. 있었다면 전부 FP 베이스라인으로 기각되고 기록됐다.
- Ring0/DMA 에스컬레이션이 필요 없다고 판단한 사유가 문서화돼 있다.
- 환경 이슈(HVCI off 등)는 환경 노트로 분리됐다. 치트 판정과 규정 이슈는 별개다.
Clean이 금지되는 경우
- 필수 Ring3 축을 스킵하고 이유를 적지 않았다.
- 시간이 부족해 절반만 보고 종료했다.
- 제보가 DMA·2PC인데 환경과 진술 기록 없이 "로컬은 깨끗"이라고 한다.
- 로그 무결성 이상(채널 비활성·4616·경로 변경·ACL deny)이 설명되지 않은 채 남았다.
- 증거 폴더가 없다.
이런 경우에는 Insufficient나 Suspicious가 맞다.
환경 점수
환경 설정은 가중치이지 확정 근거가 아니다. 환경이 나쁘다는 이유만으로 라벨을 올리지 않는다.
| 관찰 | 취급 |
|---|---|
| 메모리 무결성·HVCI off | 컨텍스트·가중치 |
| Kernel DMA·IOMMU off | 컨텍스트·가중치. 구형 보드·BIOS 미지원이 흔하다 |
| 플랫폼(FACEIT 등) 요구 미충족 | 환경 노트. 규정 이슈와 치트 확정을 분리 |
| 2PC·캡처 카드 진술 | 맥락 기록. 단독 확정 금지. DMA 에스컬레이션 필요 여부를 검토한다 |
| 가상화(VM 드라이버·가상 NIC) | 맥락 노트. 개발·테스트 용도가 흔하다 |
검사 거부·중단·세션 중 조작
대상자가 검사를 거부하거나 중간에 끊은 것, 세션 중에 파일을 지우거나 검사 도구·프로세스를 종료하려 한 것은 라벨과 별개로 사실로 기록한다. 시각, 관찰한 행동, 녹화의 해당 구간을 07-verdict.md에 적는다. 라벨은 그때까지 모은 증거로 이 루브릭을 따라 정하고, 끝내지 못한 축은 Insufficient의 사유로 적는다.
세션 중에 관찰한 삭제·종료 시도는 녹화와 함께 안티포렌식 축의 근거가 된다. 관찰된 조작이므로 우회 흔적과 같은 조합 규칙을 따른다. 치트 실행을 가리키는 다른 독립 축과 제보 시간대에 수렴하면 Confirmed의 축 수에 들어가고, 단독이면 Suspicious를 넘지 않는다. 거부·중단에 대한 제재 여부는 운영 정책이 정한다. 기록 절차는 표준 절차에 있다.
예시 케이스
아래는 이 루브릭을 적용한 판정 예다.
| # | 상황 | 라벨 | 이유 |
|---|---|---|---|
| 1 | 스캐너 hit + PF last-run + USN create 동일 창, FP 기각 | Confirmed | 독립 축 ≥2(PF + USN). 스캐너는 리드일 뿐 |
| 2 | Echo류 히트만, 경로 없음, 아티팩트 없음 | Insufficient 또는 FP 기록 후 계속 | 히트는 축이 아니다 |
| 3 | Prefetch 거의 공백 + SysMain off + 긴 세션 설명됨 | Insufficient/환경 | 와이프 단정 금지. 서비스 상태가 환경 설명이다 |
| 4 | Prefetch 공백 + Security 1102 + 클리너 PF | Suspicious (축 보강 시 Confirmed 가능) | AF 클러스터. "무엇을 지웠나"를 지지할 다른 축이 필요 |
| 5 | 무서명 DLL in AppData, 실행 아티팩트 없음 | FP 기록 후 계속 | 서명·경로 단독 금지 |
| 6 | malfind 히트만, 디스크 클린 | Suspicious max 또는 Insufficient | 메모리 단독 금지 |
| 7 | HVCI off만, Ring3 정상, 에스컬레이션 필요 여부 기록됨 | Clean(조건부) + 환경 노트 | 환경 ≠ 치트 |
| 8 | 매크로 SW에 금지 바인딩 화면, 온보드 2회 테스트 미실시 | Suspicious | 온보드(장치 내장 메모리, 용어집) 검증 미완 |
| 9 | 매크로는 허용 리매핑뿐, 정책 허용 | Clean(조건부) (정책 주석) | 정책 확인 + 존재 기록 |
| 10 | Ring3 전부 정상, DMA 제보 + 숨김 장치 미조사 | Insufficient 또는 Suspicious | 에스컬레이션 필요 여부 미기록 시 Clean 금지 |
| 11 | USN "비어 있음"을 도구 1개로만 주장 | Insufficient | 도구 2종 확인 규칙 미충족 |
| 12 | Ring0 카탈로그 해시 일치 + 로드 증거, Ring3 교차 없음 | Suspicious | Ring0 단독 Confirmed 금지 |
| 13 | 위 + Ring3 로더 PF/USN/BAM 교차 + FP 배제 | Confirmed | 독립 축 ≥2 (Ring3 × Ring0) |
| 14 | 채널 비활성 + 4616 + .pf ACL deny, 실행 증거 없음 | Suspicious | 우회(AF) 축 단독. 조작은 보이지만 치트 행위를 가리키는 두 번째 축이 없다 |
| 15 | 위 흔적 + 제보 시간대 치트 실행의 PF·USN 교차 | Confirmed | 독립 축 ≥2 (AF × PF/USN) |
이 예시들의 공통점은 라벨이 "무엇을 봤는가"보다 "무엇을 닫았는가"에서 나온다는 것이다.
문구 템플릿
Confirmed:[도구/행위]에 대해 Prefetch·USN(또는 명시 축)에서 제보 시간대와 정렬된 실행·파일 증거가 확인됨. 파일 정체: [해시·서명·규칙 재검증 또는 다운로드 출처·문자열]. FP 베이스라인 기각. 검토: [검토자 / 없음]. 라벨: Confirmed.
Suspicious:… 유력 리드이나 [부족 축]. 권고: [추가 검사 / 재소환 / 에스컬레이션]과 이유. 라벨: Suspicious.
Insufficient:… [원인]으로 축 미완. Clean(조건부) 아님. 재검사 조건: [무엇이 갖춰지면 다시 보는가]. 라벨: Insufficient.
Clean(조건부):합의 Ring3 축 검사 완료, 잔여 리드 없음, Ring0/DMA 미해당 사유 기록. 환경: […]. 라벨: Clean(조건부).
흔한 실수
- 스캐너 히트를 축으로 센다. 히트는 리드이며, 그것이 가리킨 파일·실행이 다른 축에 있어야 한다.
- "거의 확정"을 라벨로 쓴다. 네 개뿐이다.
- 부재를 Confirmed의 근거로 쓴다. 부재는 사유 설명이 필요한 신호다.
- Ring0·DMA 단독으로 확정한다. 기본값은 Insufficient다.
- Clean(조건부)을 무죄 선언으로 쓴다. 범위 한정 진술이며, 범위를 문장에 적는다.
- 파일 이름이 알려진 치트 이름과 같다는 것만으로 파일 정체를 확정한다.
- Insufficient에 재검사 조건을 적지 않는다.
- 거부나 중단을 라벨로 대신한다. 사실은 따로 기록하고 라벨은 증거로 정한다.
