레지스트리(Registry)
- Windows 운영체제에서 사용자, 시스템, 프로그램 실행과 관련된 수많은 설정들을 저장할 수 있는 계층형 데이터베이스*
- 디지털 포렌식 과정에서 기본적으로 수집하는 데이터인 분석 대상 시스템의 기본 정보, 시간 정보를 포함함
- 사용자의 응용프로그램 실행 흔적이나, USB 연결 흔적 또한 파악 가능하여 분석 가치가 큼
* 계층형 데이터베이스: 데이터가 트리 형태의 구조로 조직되어 반복적인 부모-자식 관계를 가지는 것
레지스트리 편집기(Regedit)
- Windows + r 창에서 regedit 입력하여 실행

레지스트리 경로, 레지스트리 값 확인 가능

값 직접 붙여 넣어 경로 찾기
컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
레지스트리 구조
- 5개의 루트 키(Root Key) 존재
- 루트 키는 윈도우 레지스트리 중 가장 상위 레벨에 있는 레지스트리 키 의미

루트 키의 역할

- 직접 값 입력할때 약어 사용 가능
- HKCU, HKLM 에 사용자 데이터 많이 저장
- 5개의 루트 키 서로 독립적 X
- HKCU(현재 로그인한 사용자 정보)는 HKU(모든 사용자 정보)의 하위 키로 존재
- HKCC는 HKLM과 데이터 대부분이 유사함

주요 레지스트리 경로
Timezone
- HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
- Bias 값은 현재 시스템 시간과 UTC 시간(국제 표준시)이 얼마나 차이 나는지를 분 단위로 나타냄

- Bias 값이 -540이므로 540분을 9시간으로 해석하여, 현 시스템 시간에서 9시간을 빼면 UTC가 된다고 이해하면 됨
(즉 Bias 가 -540이라는 것은 시스템 시간이 UTC+9 임을 나타냄)

Systeminfo
- 현재 시스템의 다양한 정보들을 알 수 있음
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

- InstallDate, InstallTime 필드는 시간 데이터 나타냄
- 시간 데이터를 저장하는 몇몇 형식들이 있는데, 이 값을 쉽게 변환할 수 있게 도와주는 DCode 도구가 있음
- 사용 방법
- 데이터 형식 설정
- 값 입력
- Decode 버튼 누르기
- 해당하는 값 적절히 선택
- 보통 원본 데이터로부터 얻은 값들은 Little-Endian, 도구로부터 획득된 값들은 Big-Endian 임
- InstallDate는 Unix timestamp* 방식 사용하므로 초 단위 이하 데이터는 제공 X
- InstallDate: 2023-11-28 23:12:26.0000000 +09:00
- InstallTime: 2023-11-28 23:12:26.2528285 +09:00
- 레지스트리로 얻은 값은 systeminfo 명령어로도 획득 가능
* Unix TimeStamp: 1970년 1월 1일을 기준으로 현재까지 흘러간 초를 계산해 시간 값 제공하는 방법
Autoruns
- 컴퓨터가 재부팅될 때 자동으로 실행하는 프로그램
- 악성코드가 침투했을 경우, 해당 경로에 실행 파일을 넣어두고 컴퓨터가 재부팅될 때마다 부활하기 위해 자주 사용됨
- 경로
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
- HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
- HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

사용자 계정
- 시스템에 존재하는 모든 사용자의 계정 목록 획득 가능
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

- 시스템 계정 (Windows 에서 기본으로 만들어주는 계정)
- S-1-5-18: systemprofile
- S-1-5-19: LocalService
- S-1-5-20: NetworkService
- 사용자 계정 (사용자가 만든 계정)
- S-1-5-21-2597749115-3850017851-3674950291-1001
- PrifileImagePath 필드 - 사용자 홈 디렉터리
- Sid 필드 - Windows 계정의 SID(Security ID) 값
- Sid는 하나의 Windows 시스템에서 사용자 별로 고유하게 부여되는 ID 값임 (맨 마지막 숫자 값 중요)
- 관리자 계정(Administrator) - 500
- 게스트 계정(Guest) - 501
- 일반 사용자 계정 - 1000 이상의 값
LocalProfileLoadTimeHigh 필드 + LocalProfileLoadTimeLow 필드 = 사용자 계정의 최종 로그온 시각
LocalProfileUnloadTimeHigh 필드 + LocalProfileUnloadTimeLow 필드 = 사용자 계정의 최종 로그오프 시각
High 값(0x01da7a06)과 Low 값(0x34dc09ea) 조합은 DCode 등의 도구를 통해 계산 가능

환경 변수
- 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
(프로세스가 컴퓨터에서 잘 동작할 수 있도록 시스템에 미리 설정해 둔 변수) - 악성코드에서 스크립트 실행할 때 특정 값 숨겨놓는 경우 있으므로 중요 수집 데이터임
- 사용자 계정 환경 변수 - HKCU\Environment
- 시스템 환경 변수 - HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
기기 연결 흔적
- 디지털 포렌식 분석 과정에서 가장 주목해야 할 데이터 중 하나
- 레지스트리 분석을 통해 USB 제품명, 시리얼 번호, 최초 연결 시각, 마지막 연결 시각 알 수 있음
- 기기 연결 흔적 저장하는 레지스트리 경로 (? 는 변할 수 있는 값)
- HKLM\SYSTEM\ControlSet00?\Enum\USB
- HKLM\SYSTEM\ControlSet00?\Enum\USBSTOR
- HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices
- C:\Windows\INF\setupapi.dev.log
1. HKLM\SYSTEM\ControlSet00?\Enum\USB

- VID_XXXX&PID_XXXX 구조에서 VID는 USB 제조사 ID, PID는 제품 ID 의미 (MI는 멀티 인터페이스)
> VID와 PID를 통해 연결된 USB 장치 식별할 수 있음 - 예시로 하나를 검색해 보면, VID_IC7A&PID_05A5는 주로 삼성 노트북에서 사용되는 Koga Touch Co., Ltd. 사의 HID 방식 터치스크린 기기를 의미함
2. HKLM\SYSTEM\ControlSet00?\Enum\USBSTOR
- USB 중 저장 장치는 이 경로에 저장됨
- Ven_XXXXX&Prod_XXXXX&Rev_XXX 구조 (순서대로 제조사, 제품, 버전)
3. HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices
- FiendlyName 필드에서 시스템에 마운트 된 볼륨 이름 확인 가능
- 고유 인스턴스 ID: 같은 모델이라도 제품마다 고유하게 부여된 장치의 번호로, 시리얼 번호를 이용해 생성한 값임
- 시리얼 번호가 있을 때: #{SerialNumber}&{?}#
- 시리얼 번호가 없을 때: #{?}&{RandomNumber}&{?}#

4. C:\Windows\INF\setupapi.dev.log
- 레지스트리 이외의 파일에서도 USB 연결 흔적과 관련된 정보 획득할 수 있음
레지스트리 파일(레지스트리 하이브)
- 윈도우에서 여러 개의 파일들로 나뉘어 저장됨
- 레지스트리 편집기에서는 이러한 파일들을 모아서 보여줌
- 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
레지스트리 수집 방법
- 시스템 파일이기 때문에 시스템이 동작하고 있을 때 일반적인 방법으로는 복사할 수 X
- 가장 쉬운 방법은 FTK Imager 이용하여 추출하는 것
- 위 경로의 파일들을 추출해서 별도의 경로에 저장해 줌 (C:\ 대신 [root] 사용)
- 수집 대상 파일에 대응되는 .LOG1, .LOG2 파일* 같이 수집해야 함 (없으면 안 해도 됨)
- 파일들 export 한 다음에 하나의 폴더로 모아주기
* .LOG1, .LOG2 파일: 레지스트리 파일을 변경하기 이전의 트랜잭션 데이터를 잠시 보관하는 파일
레지스트리 수집 후 처리
- 위 방법대로 수집하면 사용 중이던 레지스트리가 정리되지 않은 상태로 시스템에 복사됨 > dirty 상태
- dirty 상태인 레지스트리 속 LOG1, LOG2 파일에는 아직 쓰이지 않은 데이터가 남아 있음, 따라서 남아 있는 데이터를 레지스트리에 통합하는 과정을 거쳐야 함
- RLA 도구 이용하여 통합 (다운)
- -f 옵션: 파일 단위로 통합
- -d 옵션: 폴더에 속한 파일 전체에 대해 통합

Registry Explorer
- 레지스트리를 분석할 수 있는 GUI 도구
- 검색 기능 지원, 북마크 지정 가능, 시스템 사용 중일 때는 접근 어려운 레지스트리 값도 획득 가능
> 레지스트리 편집기보다 짱
Regripper
- CLI 기반의 레지스트리 분석 도구
- 원본 데이터에서 필요하다고 생각되는 부분들을 직접 분석해 결과 출력함 < 장단점 명확
- Hive File - 수집한 레지스트리 하이브 파일, Report File - 수집된 로그가 저장될 파일

[실습 1 - Find the USB]
- 레지스트리를 분석하여 사건 발생 당시 연결된 USB 정보 찾기
- FLAG = {DH{VID_PID_DeviceSerialNumber}

FTK imager에서 다운받은 DiskImage.E01 을 열고 추출해야 할 파일들 추출해 줌 (log 파일 포함)

추출한 파일들을 dirty 폴더에 넣고 rla 실행시켜서 clean 폴더에 넣게 함
clean 된 파일들을 register explorer 로 열기
USB 흔적을 찾는 것이기 때문에
- HKLM\SYSTEM\ControlSet00?\Enum\USB
- HKLM\SYSTEM\ControlSet00?\Enum\USBSTOR
분석해야 함


사건 발생 시점이 4월이라 하였고 Last Removed 된 애 같으므로
USB 에서 > VID_058F&PID_6387
USBSTOR 에서 > Serial Number: 03A49E66&0
정답은? DH{058F_6387_03A49E66}
[실습 2 - Auturuns]
- 컴퓨터 재부팅마다 계산기 프로그램 실행 문제
- FLAG = {DH(MD5(File))} < 자동 실행되고 있는 exe 파일을 MD5 해시로 계산한 값
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
- HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
- HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

검색해서 찾아보다 발견

exe 를 추출해야 하므로 ftk imager 에서 export 한 다음 HashCalc 로 계산해 주기
정답은? DH{302021d31f2d0bce01d7afc26bfe2ba2}
'SWUFORCE > Dreamhack' 카테고리의 다른 글
| [드림핵 스터디] 6주차 - 시스템 로그, Track_the_file (0) | 2026.05.19 |
|---|---|
| [드림핵 스터디] 4주차 - 파일시스템 (0) | 2026.05.06 |
| [드림핵 스터디] 3주차 - 디지털 데이터와 디지털 장치 (0) | 2026.04.07 |
| [드림핵 스터디] 2주차 - 디지털 증거 (0) | 2026.03.31 |
| [드림핵 스터디] 1주차 - 소개, 디지털 포렌식 기초 (0) | 2026.03.24 |