본문 바로가기

드림핵

[드림핵] 윈도우 포렌식 - 레지스트리, find the USB, Autoruns

윈도우 포렌식 | Unit | Dreamhack

 

윈도우 포렌식 | Unit | Dreamhack

0% 진행중 총 0개 항목 완료 강의 0 /16 워게임 0 /8 잠긴 강의는 플랜을 업그레이드하거나 Unit을 별도 구매하여 수강할 수 있어요.

dreamhack.io

 

1. 레지스트리

 

< 레지스트리 >

1) 레지스트리란?

레지스트리(Registry) 는 Windows 운영체제에서 사용자, 시스템, 프로그램 실행과 관련된 다양한 설정값을 저장하는 계층형 데이터베이스입니다.

여기에는 시스템 시간, 사용자 계정, 프로그램 설정, 하드웨어 연결 이력 등 중요한 정보가 담겨 있으며, 특히 디지털 포렌식 분야에서는 아래와 같은 정보를 확인하는 데 활용됩니다:

  • 시스템의 기본 정보 및 시각 정보
  • 사용자의 응용 프로그램 실행 기록
  • USB 연결 이력 등 사용 흔적

 

2) 레지스트리 편집기

레지스트리는 트리 구조의 계층형 데이터베이스이며, 부모-자식 관계로 연결되어 있습니다.
Windows + R → regedit 입력 → 레지스트리 편집기 실행

편집기에서는 다음을 확인할 수 있습니다:

  • 레지스트리 경로: 예) HKEY_LOCAL_MACHINE\SYSTEM\...
  • 레지스트리 값: 키(Key)에 대한 실제 데이터 (예: REG_SZ, REG_DWORD 등)

 

3) 레지스트리 구조 

레지스트리는 총 5개의 루트 키(Root Key) 로 구성되어 있습니다. (루트 키는 서로 독립적이지 않음)

 

 

< 주요 레지스트리 경로 >

1. Timezone

경로:
HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

주요 키:
Bias – 현재 시스템 시간과 UTC 시간의 차이를 분 단위로 표시

 

 

 

 

2. Systeminfo

경로:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion 

 

InstallDate, InstallTime은 시간 포맷 변환이 필요하며 DCode 도구 등을 통해 변환 가능

 

 

3. Autoruns

컴퓨터 부팅 시 자동 실행되는 프로그램 목록.
악성코드가 자신을 자동 실행하도록 설정할 때 자주 사용하는 경로이기도 함.

 

경로:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

 

 

4. 사용자 계정

 

SID: 사용자 고유 ID (예: S-1-5-21-xxxxxxxx)

ProfileImagePath: 사용자 홈 디렉터리 경로

LocalProfileLoadTimeHigh/Low: 마지막 로그인/로그아웃 시간 (DCode로 해석 가능)

 

 

경로:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

 

 

5. 환경 변수

 

사용자 환경 변수:
HKCU\Environment

시스템 환경 변수:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

포렌식 활용:
악성 스크립트가 환경 변수에 값을 설정하는 경우 흔적을 남길 수 있음

 

 

 

6. 기기 연결 흔적

경로:

 

HKLM\SYSTEM\ControlSet001\Enum\USB

HKLM\SYSTEM\ControlSet001\Enum\USBSTOR

HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices

C:\Windows\INF\setupapi.dev.log

 

연결된 USB 장치의 VID/PID 정보, 장치명, 시리얼번호, 연결 시각 등을 확인할 수 있음

 

 

 

< 레지스트리 수집 방법 >

1. 레지스트리 파일

레지스트리는 다음과 같은 파일에 분산 저장되며, 이를 통틀어 레지스트리 하이브(Registry Hive) 라고 부릅니다:

C:\Users\[UserName]\NTUSER.DAT
C:\Users\[UserName]\AppData\Local\Microsoft\Windows\UserClass.dat
C:\Windows\System32\config\DEFAULT
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SECURITY
C:\Windows\System32\config\SOFTWARE
C:\Windows\System32\config\SYSTEM

 

일반 복사로는 수집 불가

이들 파일은 시스템이 부팅 중일 경우 잠금(lock) 상태이기 때문에 일반적인 방법으로는 복사할 수 없습니다.
→ 에러 메시지: “파일을 사용할 수 없습니다.”

 

 

2. 레지스트리 수집 방법

  1. FTK Imager 실행 → Logical Drive → C 드라이브 선택
  2. 위 경로에 있는 하이브 파일들을 찾아 Export (복사)
  3. .LOG1, .LOG2 파일도 함께 수집해야 함
    → 이는 트랜잭션 로그로, 레지스트리가 완전히 기록되지 않은 상태를 정리할 때 필요함

 

3. 레지스트리 수집 후 처리 (Dirty to Clean)

수집된 레지스트리 파일은 dirty 상태일 수 있음. 이는 .LOG1, .LOG2 파일에 있는 데이터가 아직 반영되지 않았다는 뜻입니다.

 

RLA(Relay Log Analyzer) 도구 사용:

역할: 로그를 반영하여 레지스트리를 정상 상태(clean) 으로 복원

 

명령어: rla.exe -f "SAM" -d "output_folder"

실행 후 registry_clean 폴더에서 복원된 하이브 확인 가능

 

 

4. Registry Explorer

GUI 기반 도구

주요 기능:

  • 트리 구조 탐색
  • 검색
  • 중요 경로 북마크

→ 수집된 하이브 파일을 Load Hive 메뉴로 불러오면 분석 가능

 

 

5. Regripper

 

CLI 기반 분석 도구

명령어 기반으로 하이브에서 다양한 정보를 추출

다양한 플러그인이 있어 원하는 정보만 빠르게 수집 가능

 

 

 


실습들........디스크이미지 파일 다운 받아야 실습 가능한데........흠냐..............

2. 실습 find the USB

문제

누군가가 드림이 USB 저장 장치를 연결했다가 해제함.

사건 발생 시간: 2024년 4월

Windows 레지스트리 분석해서 연결된 USB 정보 찾아내기.

 

DH{VID_PID_DeviceSerialNumber} 형태의 Flag 찾기

 

풀이

1. 하이브 파일 추출하기.

FTK Imager 도구를 사용하여 DiskImage에서 파일 추출

아래 경로로 하이브 파일 추출 (함께 존대하는 로그 파일도 함께) - 이 모든 파일 .\registry 폴더에 저장

C:\Users\[UserName]\NTUSER.DAT
C:\Windows\System32\config\DEFAULT
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SECURITY
C:\Windows\System32\config\SOFTWARE
C:\Windows\System32\config\SYSTEM

 

2. 레지스트리 clean 처리

rla 사용

rla.exe -f .\registry --out .\registry_clean 터미널에 입력

결과는 .\registry_clean 폴더에 저장됨.

-> clean 하이브 파일 분석 가능해짐

 

3. Registry Explorer로 USB 흔적 분석

File → Load Hive → SYSTEM 선택 → Load Key Name은 SYSTEM으로 입력

 

- USB 장치 목록

SYSTEM\ControlSet001\Enum\USB

- USB 저장장치 목록

SYSTEM\ControlSet001\Enum\USBSTOR

 

각 폴더 내부에서 VID_XXXX&PID_XXXX\SerialNumber 형태를 확인

-> LastWriteTime 이 찾던 거

 

 

 


3. 실습 Autoruns

문제

드림이의 컴퓨터에 누군가 USB 저장장치를 연결해서 자동 실행되는 프로그램을 심어둠.

 

이 .exe는 컴퓨터 재부팅 시 자동 실행됨.

우리는 레지스트리에서 자동 실행되는 프로그램을 찾아야 함.

그 프로그램의 파일을 꺼내서 → MD5 해시값 계산 → DH{MD5} 형태로 플래그 제출.

 

 

풀이

1. .E01 이미지 분석 시작 (FTK Imager)

Logical drive로 C:\ 드라이브 확인

레지스트리 하이브로 경로 이동:

C:\Windows\System32\config\SYSTEM
C:\Windows\System32\config\SOFTWARE
C:\Users\[USERNAME]\NTUSER.DAT

(위 파일들과 함께 .LOG1, .LOG2도 함께 추출)

 

2. RLA 도구로 레지스트리 Clean 

rla.exe -f .\registry --out .\registry_clean

 

3. Registry Explorer로 자동 실행 프로그램 찾기

 

egistry Explorer 실행 → File → Load Hive

로드할 파일: registry_clean\SYSTEM과 SOFTWARE

 

 

경로:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

 

4. 해당 .exe 실제 위치 찾기

FTK Imager에서 해당 경로로 이동해서 .exe 파일을 추출

 

5. 추출한 .exe의 MD5 해시값 구하기

CertUtil -hashfile badprogram.exe MD5