Files
MCPTrace/docs/validation.md
kwonta3wook fbcb4a92ac feat: add Windows MCPTrace Volatility 3 plugin
Carve MCP/JSON-RPC candidates with original bytes and provenance, conservative
ID correlation, opt-in argument policies, JSONL export, and scan coverage.
Add synthetic Volatility integration tests, CI, and Korean documentation.
2026-10-27 12:34:34 +09:00

3.8 KiB

검증 범위

이 문서는 실제 Windows 호환성 검증을 수행했다는 보고서가 아닙니다. 현재 테스트는 알려진 바이트를 메모리 레이어에 넣어 추출 결과와 비교합니다.

자동 검증

로컬 검증 환경: Linux, Python 3.12, Volatility 3 패키지 2.28.2. CI는 Ubuntu/Windows 분석 호스트와 Python 3.10/3.12 조합을 구성합니다. CI에서 Windows 호스트를 사용하더라도 테스트 데이터는 합성 버퍼입니다.

영역 검증 내용
원문 보존 UTF-8/UTF-16LE, 한글·이모지, 실제 주소·원문·SHA-256 일치
파싱 문자열 내부 중괄호·이스케이프·중첩, 뒤에 배치된 jsonrpc 멤버, 모든 청크 분할 위치
손상 중복 키, 잘못된 인코딩, 비정상 JSON-RPC ID, 비유한 숫자 거부; 조각에서 필드 추정 금지
메모리 경계 실제 BufferDataLayer 위의 누락 페이지 시뮬레이션, 인접 VAD 비결합
후보 연결 PID와 숫자/문자열 ID 분리, 복사본 보존, ID 충돌, 부동소수점 반올림으로 인한 오병합 방지
정책 디렉터리 경계, URL 사용자 정보·가짜 접미사, JSON Pointer, 미지원 입력·잘못된 규칙
어댑터 실제 TreeGrid, 프로세스별 제한·요약, 뒤쪽 VAD 읽기 오류 이후 기존 증거 보존
출력 실제 Volatility CLI 파일 핸들러, JSONL 원문 왕복·해시, 기존 파일 비덮어쓰기
로딩 새 CLI 프로세스에서 -p 경로로 플러그인 검색 및 도움말 생성

tests/test_plugin.py의 EPROCESS/VAD 열거 객체와 커널 모듈은 테스트용 대역입니다. Volatility의 Context, BufferDataLayer, TreeGrid, CLI 파일 핸들러는 실제 구현을 사용합니다. 따라서 CLI 검색·어댑터 출력까지는 검증하지만 커널 심볼 해석, 실제 페이지 테이블 변환, OS 빌드 호환성은 이 테스트만으로 입증할 수 없습니다.

실제 Windows 11 x64 이미지 확인 절차

  1. 격리된 테스트 VM에서 OS 빌드, MCP 클라이언트·서버 버전, 전송 방식, 프로세스 PID를 기록합니다.
  2. 정확한 요청·응답 JSON과 ID를 별도 기준 자료로 저장합니다. 정상 호출, 정책에 해당하는 호출, 같은 ID의 반복 사용, 문자열 ID, 긴 응답을 각각 포함합니다.
  3. 메모리를 수집하고 수집 도구·버전·시각·이미지 SHA-256, 호출부터 수집까지의 경과 시간을 기록합니다.
  4. 같은 이미지에서 windows.info.Info와 windows.pslist.PsList가 정상 동작하는지 확인합니다.
  5. 해당 PID에 대해 MCPTrace를 실행합니다. 처음에는 --suspicious-only 없이 전체 후보와 요약을 저장합니다.
  6. 내보낸 raw_base64를 디코딩하고 SHA-256을 확인합니다. 해당 프로세스 레이어의 가상 주소와 길이로 다시 읽은 원문과 일치하는지 확인합니다. 가상 주소를 이미지 파일 오프셋으로 사용하지 않습니다.
  7. 기준 자료와 비교해 누락·잘못된 추출·복사본·연결 모호함을 구분합니다. 예제/로그에 의도적으로 남긴 JSON과 일반 JSON-RPC 트래픽도 넣어 실제 통신 증거와 혼동되는 범위를 확인합니다.
  8. 기본 제한과 조정한 제한을 비교하고, 도달한 제한·누락 페이지·오류가 요약에 남는지 확인합니다.

재현 자료에는 명령 전체, MCPTrace 커밋, Python/Volatility 버전, OS 빌드, 정책 파일 및 그 해시, 입력 이미지 해시, 표준 오류 로그, JSONL을 포함합니다. 실제 증거·메모리 덤프는 저장소에 커밋하지 않습니다. 실제 이미지 결과가 확보되기 전에는 특정 클라이언트 지원, 정밀도·재현율, 세션 복원 성공률을 표시하지 않습니다.