삭제해도 증거는 남는다 — 윈도우 아티팩트 3종 교차 검증

🛡️ 강사 제공 인가된 실습 환경에서 수행

침해당한 시스템의 아티팩트를 세 종류 도구로 분석해서, 백도어가 실행된 사실을 교차 검증으로 재구성한 기록이다. Win11 ARM64 VM(UTM) 환경에서 진행했다.

환경 세팅

호스트가 Apple Silicon(M3 Max)이라 ARM64 OS만 가상화가 된다. x64 ISO는 에뮬레이션만 가능해서 실습용으로 부적합했고, Microsoft 공식 Windows 11 ARM64 multi-edition ISO 로 진행했다. UTM에서는 Emulate 가 아니라 Virtualize 를 골라야 한다 (RAM 6GB, CPU 4코어, 디스크 80GB).

걱정했던 건 도구 호환이었는데, x64용 포렌식 도구들이 Win11 ARM64의 x64 에뮬레이션 레이어에서 전부 정상 구동됐다. REGA, NTFS Log Tracker, WinPrefetchView 모두 문제없었다.

도구분석 대상 아티팩트
WinPrefetchView프리패치(.pf) — 실행 흔적
REGA v1.6.0.0레지스트리 하이브 — 시스템 설정/상태
NTFS Log Tracker v1.4$MFT / $LogFile — 파일시스템 변경 이력

분석 대상 데이터는 레지스트리 하이브 5종(SAM, SECURITY, SOFTWARE, SYSTEM, NTUSER.DAT), 파일시스템($MFT 109MB, $LogFile 41MB, $UsnJrnl 0KB), 그리고 프리패치 파일 세트였다.

아티팩트마다 답하는 질문이 다르다

포렌식은 하나의 도구로 끝나지 않는다. 여러 아티팩트를 겹쳐서 사건을 재구성한다.

아티팩트답하는 질문비유
프리패치프로그램이 실행됐나? 몇 번?실행 로그
레지스트리(UserAssist)사용자가 직접 클릭 실행했나?고의성 증명
레지스트리(장치관리자)어떤 USB가 연결됐나?반입 경로
$MFT / $LogFile파일이 언제 생성·삭제됐나?CCTV 타임라인

REGA는 “시스템이 어떤 상태인가”를 보고, NTFS Log Tracker는 “언제 무슨 일이 있었나”를 본다. 다루는 아티팩트가 완전히 달라서 서로 보완 관계다.

프리패치 — 실행됐나

WinPrefetchView를 띄우고 프리패치 폴더를 로드했다.

  • BACKDOOR.EXE-500565FB.pf → Last Run 2021-06-20 19:42:18, Run Counter 1
  • BACKDOOR.EXE-D0C8C9F8.pf → Run Counter 2, 2021-06-20 20:41:19
  • 로드된 파일 목록에 BACKDOOR.BAT, BACKDOOR.EXE, CMD.EXE 가 함께 확인됨

프리패치에 남은 BACKDOOR.EXE 실행 흔적

.pf가 들고 있는 로드 파일 목록에 BAT과 CMD가 같이 보인다

여기서 “백도어가 실행됐다 + 몇 번 + 언제” 가 확보됐다.

레지스트리 — 누가, 고의로

REGA로 하이브 5종을 로드하고 도구 상자 기능을 썼다.

USB 연결 이력 (SYSTEM, 장치 관리자) — USB Mass Storage Device 가 다수 확인됐다. 외부 저장장치 연결 흔적이고 반입 경로 후보가 된다.

UserAssist (NTUSER, 응용프로그램 사용 로그)

  • \Backdoor.exe실행횟수 3회, 최종실행 2021-06-20 20:41:17
  • \Users\Bum\Desktop\Backdoor - 바로 가기.lnk → 3회

UserAssist에 남은 실행 횟수와 최종 실행 시각

UserAssist가 결정적인 이유가 있다. GUI로 직접 실행한 것만 기록된다. 자동 실행이나 스크립트 호출은 안 남는다. 즉 이건 사용자 Bum고의로 실행했다는 뜻이다.

여기서 “누가 + 고의성” 이 확보됐다.

파일시스템 — 언제, 그리고 은폐

NTFS Log Tracker는 경로 매칭에서 한 번 걸렸다.

  • $LogFile File Path$LogFile
  • $MFT File Path (Option) → $MFT이걸 채워야 Full Path 컬럼이 나온다
  • $UsnJrnl 은 0KB라 미사용

파싱 결과가 20,566건이었다. 전체를 스크롤할 수는 없으니 Search에서 File Name에 BACKDOOR 를 걸어 좁혔다.

19:41:59  Backdoor 바로가기.lnk 생성   (\Users\Bum\Desktop\)
19:42:18  Backdoor.bat 생성 → 실행 → 삭제
          BACKDOOR.EXE-500565FB.pf 생성  (\Windows\Prefetch\)
20:41:07  Backdoor.bat 재생성 → 실행 → 삭제
          BACKDOOR.EXE-D0C8C9F8.pf 생성
20:41:19  Backdoor.bat 재생성 → 삭제 (반복)

$MFT·$LogFile에서 복원한 생성·실행·삭제 타임라인

Backdoor.bat생성 → 실행 → 삭제 반복이 그대로 보인다. 흔적 인멸 시도 패턴이다.

여기서 “타임라인 + 은폐 시도” 가 확보됐다.

처음엔 NVIDIA .chm 파일이 대량 삭제된 걸 보고 의심했다. 그런데 파일 계열이 일관되고(드라이버 도움말) 삭제 시각이 한 순간에 몰려 있어서 드라이버 업데이트 시 정상 정리로 판별했다. 정상 노이즈를 걸러내는 것도 분석 스킬이다.

사건 재구성

요소내용근거 아티팩트
누가사용자 BumUserAssist, $MFT 경로
무엇을Backdoor.exe / Backdoor.bat3종 모두
언제2021-06-20 19:42(1차), 20:41(2차)3종 모두
몇 번실행 3회, 프리패치 2종UserAssist, 프리패치
어디서Bum 바탕화면 → 실행UserAssist, $MFT
은폐.bat 반복 생성/삭제NTFS Log Tracker

교차 검증이 왜 힘을 갖나

프리패치, UserAssist, $MFT서로 독립적인 메커니즘으로 기록된다. 하나가 다른 하나를 참조하지 않는다.

그런데 이 셋이 같은 결론을 가리켰다. 하나는 조작하거나 삭제할 수 있어도, 세 개가 일치하면 반박하기 어렵다. 그게 증거능력이다.

삭제해도 증거는 남는다

공격자가 Backdoor.bat 을 삭제했는데도 이렇게 남았다.

  • 프리패치 → 실행 흔적 잔존
  • UserAssist → 실행 횟수 잔존
  • $LogFile“삭제했다”는 기록까지 잔존

삭제 행위 자체가 새로운 증거가 된다. 흔적이 여러 곳에 중복 기록되기 때문에, 일부만 지우면 오히려 인멸 정황으로 포착된다.

도구 쓰면서 걸린 것

  • NTFS Log Tracker는 $MFT 를 반드시 Option의 $MFT File Path에 넣어야 Full Path가 표시된다. 이걸 놓치면 파일명만 나와서 경로 추적이 안 된다
  • 대량 레코드는 Search 필터로 좁혀서 본다. 2만 건을 스크롤할 수는 없다
  • 정상 시스템 활동을 노이즈로 걸러내는 판별력이 필요하다

방어 관점으로 옮기면

  • 탐지 — EDR/로그 수집으로 UserAssist·프리패치·파일시스템 변경을 상시 모니터링
  • 최소권한 — 일반 사용자가 임의 실행파일을 바탕화면에서 구동하지 못하도록 통제
  • 매체 통제 — USB Mass Storage 연결 정책으로 반입 경로 차단
  • 증거 보존 — 침해 의심 시 원본 이미지를 확보하고 사본으로 분석 (chain of custody)