레지스트리
- 온라인 레지스트리
- 활성시스템에서의 레지스트리 분석
- RegEdit, RegEdt32 를 통해 분석 가능
- 오프라인 레지스트리
- 비활성시스템(포렌식 복제 드라이브나 이미지)에서의 레지스트리 분석
- 레지스트리 하이브 파일* 의 수집이 필요
- 운영체제 버전별 하이브 파일의 정확한 위치를 사전에 숙지
- 포렌식 분석 대상의 대부분 차지
* 하이브(Hive) 파일: 레지스트리 정보를 저장하는 물리적인 파일, 일반적인 방법으로는 접근 불가

HKEY_CLASSES_ROOT (HKCR)
- 별도의 하이브 X, 다른 루트키의 하위키로 구성됨
- HKLM\SOFTWARE\Classes + HKU\<SID>_Classes
HKEY_CURRENT_USER (HKCU)
- 하위키 구성: HKU (HKEY_USERS) - 현재 로그인한 사용자의 하위키

HKEY_LOCAL_MACHINE (HKLM)
- 하위키 구성: 시스템의 다양한 하드웨어, 소프트웨어, 환경 설정 정보
- BCD00000000 – Boot Configuration Data 관리 (XP의 Boot.ini 대체)
- COMPONENTS – 설치된 Components와 관련된 정보 관리
- HARDWARE – 시스템 하드웨어 디스크립션과 모든 하드웨어의 장치 드라이버 매핑 정보 (Volatile hive)
- SAM – 로컬 계정 정보와 그룹 정보 (시스템 계정만 접근 가능)
- SECURITY – 시스템 보안 정책과 권한 할당 정보 (시스템 계정만 접근 가능)
- SOFTWARE – 시스템 부팅에 필요 없는 시스템 전역 구성 정보 (소프트웨어 정보)
- SYSTEM – 시스템 부팅에 필요한 시스템 전역 구성 정보
부팅 시 HKLM\SYSTEM 하이브는 물리 메모리로 로드되기 때문에 하이브 파일 크기에 제한
- HKLM\SYSTEM\CurrentControlSet
- 시스템 환경 설정 정보
- ControlSet00?에 대한 링크
- Select 키의 Current 값에 따라 현재 사용 중인 ControlSet 확인 가능

HKEY_USERS (HKU)
- 하위키 구성: 모든 사용자의 프로파일과 사용자 클래스 등록 정보

HKEY_CURRENT_CONFIG (HKCC)
- 하위키 구성
- 별도의 하이브 파일 가지지 X
- 현재 활성화되어 있는 하드웨어 프로파일 정보 참조
- HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current 의 링크
HKEY_PERFORMANCE_DATA (HKPD)
- HKPD 성능 카운터
- 시스템의 성능 측정하여 관리하는 메커니즘 > 운영체제, 응용프로그램에서 활용
- RegQueryValueEx() 같은 레지스트리 함수 통해 접근 가능 (레지스트리 편집기로 접근 불가)
Transactional Registry (TxR)
- 레지스트리 트랜잭션 정보는 파일로 저장
- %SystemRoot%System32%config\TxR
- %FILE%{%GUID%}.TM.blf
- %FILE%{%GUID%}.TMContainer00000000000000000001.regtrans-ms
- %FILE%{%GUID%}.TMContainer00000000000000000002.regtrans-ms
- %FILE%{%GUID%}.TxR.blf
- %FILE%{%GUID%}.TxR.0.regtrans-ms
- %FILE%{%GUID%}.TxR.1.regtrans-ms
- %FILE%{%GUID%}.TxR.2.regtrans-ms
- 로그 정보는 TxR.{0|1|2}.regtrans-ms 파일에 저장

레지스트리 획득
- 온라인 하이브 파일 획득
- 보통 실행 중이라 획득 불가
- 직접 파일시스템을 해석하거나 DeviceIoControl() API 이용
- HKLM\SYSTEM\CurrentControlSet\Control\hivelist (하이브 목록 확인)
- 오프라인 하이브 파일 획득
- 복제한 저장매체 혹은 이미징 데이터에서 하이브 파일 추출
- 버전별 파일 위치 확인 필요 > %SystemRoot%\System32\Config
- %UserProfile% 목록 확인 > HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

- 백업되거나 로그로 생성된 하이브 파일
- 운영체제에 의해 하이브 파일은 백업되거나 관련 로그가 생성됨
- 로그 파일도 동일한 하이브 구조를 가짐
- 백업이나 로그 하이브 파일은 기존 하이브 파일의 일부 정보만 저장
레지스트리 내부
하이브 구조
- 하이브 블록 (Hive Block)
- 하이브에서 사용하는 논리적인 할당 단위
- 크기: 4,096 byte
- 새로운 데이터가 하이브에 추가되면 항상 블록 단위로 증가
- 하이브의 첫 번째 블록은 베이스 블록 (base block)
- 시그니처, 갱신 순서 번호, 마지막 수정 시간, 레지스트리 복원/복구에 관한 정보, 하이브 포맷 버전 번호, 체크섬, 파일명
- 하이브 빈 (Hive Bin)
- 블록 단위로 크기 증가
- 데이터 저장 크기 4,096 byte
- 레지스트리 로드 시 하이브 빈 단위를 기준으로 로드
- 모든 하이브 빈은 “hbin” 이라는 시그니처 값으로 시작


- 셀 (Cell)
- 하이브 내의 데이터는 셀 구조로 저장 (8 byte의 배수)

- 셀 맵 (Cell Map)
- 레지스트리 접근 시 매번 하이브 파일에 접근 X > 하이브 일부분을 메모리에 매핑
- 메모리 내의 불연속적인 하이브 데이터를 참조하기 위해 셀 맵을 이용한 셀 인덱스 사용

레지스트리 복구
삭제된 레지스트리 복구
- 레지스트리 하이브 내부로부터 삭제된 레지스트리 복구
- 윈도우 레지스트리 API를 이용해서 키를 삭제하는 경우 해당 키와 관련된 링크 정보만 삭제
- 해당 키와 관련된 실제 데이터는 하이브 파일 내의 비할당 영역에 그대로 유지됨
레지스트리 데이터 카빙
- 물리 메모리로부터 레지스트리 데이터 카빙
- 커널 영역에 레지스트리 데이터에 대한 캐시 영역 존재 > 물리적인 하이브 파일과 매핑되어 있음
- 응용프로그램 수행 과정에서 사용된 레지스트리 정보는 레지스트리에 존재
- 각 프로세스 영역을 통해 특정 프로세스가 사용한 레지스트리 정보 확인
- CMHIVE 카빙 - Volatility Plugin
- 저장 매체의 비할당 영역으로부터 레지스트리 데이터 카빙
- 파일시스템 포맷으로 인해 이전 시스템의 레지스트리 데이터가 저장 매체의 비할당 영역에 존재할 가능성
- 시스템 복원지점 생성 시 레지스트리 복사 후 폴더 압축에 의해 비할당 영역에 존재할 가능성
- 셀들은 고유한 시그니처 가짐

레지스트리 분석
- 기본 시스템 정보 - HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
- 활성 정보 수집 시 systeminfo 명령 사용
- ProductName – 운영체제 이름
- ProductId – 운영체제 식별자
- BuildLab(Ex) – 운영체제 세부 버전
- InstallDate – 운영체제 설치 날짜 (유닉스 시간 형식)
- SystemRoot – 운영체제 설치 루트 폴더
- 컴퓨터 이름 - HKLM\SYSTEM\ControlSet00?\Control\ComputerName\ActiveComputerName
- 시스템 마지막 종료 시각 - HKLM\SYSTEM\ControlSet00?\Control\Windows
> ShutdownTime - 마지막 종료 시각 저장 - 표준 시간 - HKLM\SYSTEM\ControlSet00?\Control\TimeZoneInformation
- 날짜 변경 흔적 - 날짜 및 시간 등록 정보 대화상자가 활성화된 횟수
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count
- HRZR_EHAPCY:gvzrqngr.pcy > ROT-13: UEME_RUNCPL:timedata.cpl
- 0 - 3: 세션 변호
- 4 - 7: 작업 표시줄을 통해 대화상자를 연 횟수 (초기값 5)
- 8 - 15: 대화상자가 마지막으로 열린 시각 (변경된 시각을 의미하지는 않음)
- 응용 프로그램 사용 로그 (ROT-13 인코딩) - 프로그램 종류, 최종 실행 시각, 실행 횟수, 세션 아이디 확인 가능
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count
- DFRC > QSEP
- 7 로그 포맷
0 - 3 : 세션 번호
4 - 7 : 응용프로그램 실행 횟수 (초가값은 프로그램마다 다름)
60 - 67 : 응용프로그램 마지막 실행 시간
사용자 계정 정보
시스템 사용자 목록
- HKLM\SAM\SAM\Domains\Account\Users\{RID}
- 각 사용자의 계정 정보는 Users의 하위키인 {RID} 폴더의 F, V 값에 저장 (V 값 - 이름, 해쉬 / F 값 - 그 외)
시스템 사용자 프로필 목록
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\{SID}
- 사용자 {SID} 별로 사용자 프로필 정보 저장

마지막으로 로그인한 사용자
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
- DefaultUserName 값이 마지막으로 로그인한 사용자를 나타냄
윈도우 검색어 목록
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery
- 윈도우 탐색기에서 검색할 경우 검색어 목록 > MRUListEx 확인

최근 열어본 파일
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
- 최근 열었던 문서, 그림, 음악 등의 파일
최근 실행한 명령
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
- 시작 > 실행 or Ctrl + R 통해서도 명령 목록 확인 가능
- MRUList 의 알파벳 순서가 최근 실행한 명령 순서
- 아래 사진에서 cba: regedit > msinfo32 > cmd

USB 장치 연결 정보
- 로그 파일(setupapi.log) 및 레지스트리를 통해 USB 장치 흔적 파악 가능
- Enum\USB, Enum\USBSTOR 확인
- 연결된 볼륨명
- HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices
- 하위키 중 제품명 또는 시리얼 번호를 포함하는 키 검색
- FriendlyName
- 장치명 설정 O > 설정한 장치명
- 장치명 설정 X > 연결된 볼륨명
- 부팅 이후 최초 연결 시각
- Disk
: HKLM\SYSTEM\ControlSet00X\Control\DeviceClasses\{53F56307-B6BF-11D0-94F2-00A0C91EFB8B} - Volume
: HKLM\SYSTEM\ControlSet00X\Control\DeviceClasses\{53F5630D-B6BF-11D0-94F2-00A0C91EFB8B} - USB
: HKLM\SYSTEM\ControlSet00X\Control\DeviceClasses\{A5DCBF10-6530-11D2-901F-00C04FB951ED} - Windows Portable Devices
: HKLM\SYSTEM\ControlSet00X\Control\DeviceClasses\{6AC27878-A6FA-4155-BA85-F98F491D4F33}
- Disk
- 마지막 연결 시
- HKLM\SYSTEM\ControlSetXXX\Enum\USB\VID_####&PID_####
- HKU\{USER}\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoint2
- 마지막 연결/해제 시간
- HKLM\SYSTEM\ControlSet00X\Control\DeviceClasses\{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}\##?#USBSTOR#....[Serial Number]....{\|\#\}Control
- HKLM\SYSTEM\ControlSet00X\Control\DeviceClasses\{53F5630D-B6BF-11D0-94F2-00A0C91EFB8B}\##?#USBSTOR#....[Serial Number]....{\|\#\}Control
- HKLM\SYSTEM\ControlSet00X\Control\DeviceClasses\{A5DCBF10-6530-11D2-901F-00C04FB951ED}\##?#USBSTOR#....[Serial Number]....{\|\#\}Control
- HKLM\SYSTEM\ControlSet00X\Control\DeviceClasses\{6AC27878-A6FA-4155-BA85-F98F491D4F33}\##?#USBSTOR#....[Serial Number]....{\|\#\}Control
- 장치가 연결/해제되면 Control 키의 시간이 변경됨
- Control 키의 마지막 수정 시간 (Control 키는 활성 상태에서만 유지되므로 오프라인 레지스트리 분석 불가)
- USB 연결 상태: USB의 마지막 연결 시간
- USB 해제 상태: 마지막 연결 해제 시간
마운트 된 저장 장치
- HKLM\SYSTEM\MountedDevices
- 같은 디스크에 속한 드라이브끼리는 시그니처의 앞부분이 동일

외부 시스템 연결 정보
- 원격 데스크톱 연결 정보 (RDP)
- HKU\{USER}\SOFTWARE\Microsoft\Terminal Server Client\Default
- MRU# - 숫자가 작을수록 최근 연결한 IP임
- 네트워크 드라이브 연결
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MRU
- MRUList: 네트워크 드라이브 연결 순서 확인
- 마운트 포인트
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{GUID}
- 마운트 된 저장장치(HKLM\SYSTEM\MountedDevices) 정보와 연결하여 마운트 한 사용자 확인
감사 정책
- HKLM\SECURITY\Policy\PolAdtEv
- 레지스트리 값 확인을 위해 security 파일 우클릭 > 사용 권한 > 모든 권한 부여



이벤트 로그
- HKLM\System\ControlSet00X\Services\eventlog
- 로그 파일 경로, 로그 파일 최대 크기, 로그 유지 기간 등의 정보 확인

공유 폴더 목록
- HKLM\SYSTEM\ContolSet00X\Services\LanmanServer\Shares
- net share 명령 통해 공유 폴더 확인
- 사용자가 직접 추가한 항목만 관리함 (기본 항목 X)
시스템 설정 정보
- HKLM\SYSTEM\ContolSet00X\Services\{sub folder}
- driverquery 명령으로 확인 가능한 드라이버 목록
- Type 값에 따라 특성 정의
- 0x1 - 커널 장치 드라이버
- 0x2 - 파일시스템 드라이버 (커널 장치 드라이버에도 해당)
- 0x04 - 어댑터에 대한 인수 집합
- 0x10 - 서비스 컨트롤러에 의해 시작되는 Win32 프로그램 (프로세스로 동작)
- 0x20 - 다른 Win32 서비스 프로세스와 공유 가능한 Win32 서비스
네트워크 정보
- 네트워크 인터페이스
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards
- HKLM\SYSTEM\ControlSet00X\Services\Tcpip\Parameter\Interfaces\{GUID}
- ipconfig /all 명령으로 확인 가능 (추가적인 정보 포함)

- 무선랜 접속 정보
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Wireless
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signature\Unmanaged
- 하위키에서 무선 네트워크 식별자(Wireless Identifier) 확인 가능

- 무선 AP 마지막 접속 시간 구하기
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profile\{GUID}

위 값을 2바이트씩 엔디안 변환해서 해석하면

하드웨어 정보
- HKLM\SYSTEM\ControlSet00X\Control\Class
- HKLM\SYSTEM\ControlSet00X\Enum
인터넷 사용 흔적
- Internet Explorer 설정 정보
- HKU\{USER}\SOFTWARE\Microsoft\Internet Explorer\Main
- 시작 페이지, 동작 시간 정보, 검색 페이지 정보 등 다양한 설정 정보 저장
- Internet Explorer 타이핑한 URL 목록
- HKU\{USER}\SOFTWARE\Microsoft\Internet Explorer\TypedURLs
- 사용자가 익스플로러 주소창에 직접 타이핑하여 이동된 페이지 목록
- 인터넷 옵션 > 히스토리 항목 삭제를 할 경우 해당 내용도 삭제됨
- Internet Explorer 다운로드 경로
- HKU\{USER}\SOFTWARE\Microsoft\Internet Explorer
- Download Directory - 익스플로러를 통해 파일을 다운로드했을 경우 최종 다운로드 경로
- Internet Explorer 자동 완성
- HKU\{USER}\SOFTWARE\Microsoft\Internet Explorer\Main
- Internet Explorer 즐겨찾기 목록
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Favorites
- Order - 즐겨찾기 목록 저장, 하위키 - 즐겨찾기 폴더 이름
대화상자(Dialog) 사용 흔적
- 최근 접근한 폴더 목록
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidMRU
- MRUListEx 를 통해 최근 접근한 폴더 순서 확인
- 최근에 읽거나 저장한 파일 목록
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidMRU
- 추가적인 대화상자 흔적 .\ComDlg32\[LastVisitedPidMRULegacy, CIDSizeMRU, FirstFolder]
레지스트리 편집기 사용 흔적
- 레지스트리 편집기에서 마지막으로 접근한 키
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Regedit
- LastKey 값에 마지막으로 접근한 키 경로 저장
- 레지스트리 편집기의 즐겨찾기에 추가한 키
- HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favorites
- 즐겨찾기에 추가한 각 키 값과 경로 저장
NtfsDisableLastAccessUpdate
- 파일 접근 시간 업데이트 여부
- HKLM\SYSTEM\ControlSet00X\Control\FileSystem
- NtfsDisableLastAccessUpdate
- 0: 접근 시간 업데이트
- 1: 접근 시간 업데이트 하지 않음 (default) < 디렉터리 리스팅 시 속도를 빠르게 하기 위함
NukeOnDelete
- 휴지통 우회
- HKU\{USER}\Software\Microsoft\Windows\CurrentVersion\Explorer\Bitbucket\Volume\{GUID} NukeOnDelete
- 0: 파일 삭제 시 휴지통으로 이동 (default)
- 1: 파일 삭제 시 바로 삭제
CleaerPageFileAtShutdown
- 시스템 종료 시 페이지 파일 삭제
- HKLM\SYSTEM\ControlSet00X\Control\Session Manager\Memory Management
- 0: 시스템 종료 시 페이지 파일 유지 (default)
- 1: 시스템 종료 시 페이지 파일 삭제
레지스트리 도구
모니터링 도구
- Process Monitor - 실시간 모니터링 가능
- Regshot: 레지스트리 스냅숏을 통해 두 시점 간의 레지스트리 비교
- InCtrl5: 레지스트리, 파일 스냅샷을 통해 두 시점간의 레지스트리, 파일 비교
분석 도구
- RegRipper - 펄(Perl) 기반의 레지스트리 파일(하이브) 분석 도구
- REGA - MFC 기반의 GUI 레지스트리 분석 도구
[분석 예제]
Q1) Forensics 300
- We are investigating the military secret's leaking. we found traffic with leaking secrets while monitoring the network. Security team was sent to investigate, immediately. But, there was no one present. It was found by forensics team that all the leaked secrets were completely deleted by wiping tool. And the team has found a leaked trace using potable device. Before long, the suspect was detained. But he denies allegations.
- Now, the investigation is focused on potable device. The given files are acquired registry files from system. The estimated time of the incident is Mon, 21 February 2011 15:24:28(KST). Find a trace of portable device used for the incident.
- The Key : "Vendor name" + "volume name" + "serial number" (please write in capitals)
A1) writeup
- Vendor: Corsair
- Volume name: PR0N33R
- Serial number: ddf08fb7a86075&0
- Answer: CORSAIRPR0N33RDDF08FB7A86075
Q2) Forensics ‘GEOL’ or ‘YUT’
- we are investigating the military secret's leaking.
- It seems that the suspect used a portable device.
- Find a signature of mounted E: drive. (please write in capitals)
레지스트리 보안
키 권한 설정
- RegCreateKeyEx (
- __in HKEY hKey,
- __in LPCTSTR lpSubKey,
- __reserved DWORD Reserved,
- __in_opt LPTSTR lpClass,
- __in DWORD dwOptions,
- __in REGSAM samDesired, /* 키 보안 및 접근 권한 mask 설정 */
- __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
- __out PHKEY phkResult,
- __out_opt LPDWORD lpdwDisposition );
- RegOpenKeyEx()
- RegCreateKeyTransacted()
- RegOpenKeyTransacted()
악성코드
- 자동 시작 목록 (Auturuns, Microsoft 등)
- Appinit_DLLs - GUI 응용프로그램에 의해 로드되는 DLL
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
- AppInit_DLLs - GUI 응용프로그램 실행 시 자동으로 로드되는 DLL
- 보통 비어있기 때문에, 값이 존재한다면 악성코드일 가능성이 큼
- Image File Execution Options - 자동 디버그 연결 정보
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
- 하위 키로 디버깅하고자 하는 응용프로그램 추가
- Debugger 값으로 해당 응용프로그램 실행 시 연결시킬 디버거 지정 (디버거 검증 안 함)
- 특정 응용프로그램을 다른 프로그램으로 리다이렉트 가능
- Command Processor\AutoRun - 명령프롬프트 실행 시 자동 시작되는 응용프로그램
- HKLM(HKCU)\SOFTWARE\Microsoft\Command Processor
- AutoRun – 값 생성 후 특정 응용프로그램을 지정하면 명령 프롬프트 실행 시 자동으로 함께 실행
- exefile\shell\open\command – 실행 파일 실행 시 정상적인 매개변수
- HKLM\SOFTWARE\Classes\exefile\shell\open\command
- Default – 기본값은 [ “%1” %* ]를 가져야 함
- 악성 코드에 의해 실행 파일 실행 시 다른 프로그램 수행
- exefile 외에 comfile, batfile, htafile 등에도 동일하게 적용
완전 삭제 (wiping)
- 삭제된 레지스트리 개체를 복구 불가능하도록 완전 삭제하는 것
- 레지스트리 직접 삭제나 API 이용 X
- 삭제 시 하이브 파일 내에서 해당 레지스트리 데이터 완전 삭제
'SWUFORCE > Inflearn' 카테고리의 다른 글
| [인프런 스터디] 6주차 - 바로가기 파일 포렌식(.lnk) 개념 및 실습 (0) | 2026.05.19 |
|---|---|
| [인프런 스터디] 5주차 - Windows Registry (0) | 2026.05.12 |
| [인프런 스터디] 4주차 - 디지털 증거 획득 & 증거 수집 방안 (0) | 2026.05.05 |
| [인프런 스터디] 3주차 - 섹션 2, 3 (0) | 2026.04.29 |
| [인프런 스터디] 3주차 - 메모리 포렌식 (0) | 2026.04.28 |