레지스트리는 헤더와 여러 개의 hive bind으로 구성되어 있다.
논리적인 할당 단위 블록 크기 4096byte로 일정하게 구성되어 있다.
- 레지스트리 헤더
레지스트리 헤더 또는 하이브 헤더 라고 한다. 시그니처, 갱신 순서 번호, 마지막 수정시간, 레지스트리 복구에 관한 정보, 하이브 포맷 버전 번호 등의 정보가 있다.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | |
0x00 | Signature “regf” | Sequence Num1 | Sequence Num2 | Timestamp | ||||||||||||
0x10 | Major Version | Minor Version | Unknown | |||||||||||||
0x20 | Unknown | Start of Root Cell | Start of last hbin | Always 1 | ||||||||||||
0x30 | Hife file path or name (Unicode, 64 bytes) | |||||||||||||||
0x40 | ||||||||||||||||
0x50 | ||||||||||||||||
0x60 |

* Sequence Num1: 시퀀스 번호2. 하이브에 문제가 없다면 시퀀스 번호 1과 같아야 한다.
* Timestamp: 64비트 형식의 윈도우 타임스탬프
* 메이저 버전: 상위 버전의 번호
* 마이너 버전: 하위 버전의 번
* Start of Root Cell : 루트 셀 오프셋으로 0x20이다. 하이브 헤더 길이는 4096(0x1000) 바이트이다. 이것은 첫 번째 hbin 셀이 절대 오프셋 0x1000에서 발견된다는 것을 의미하고 루트 셀의 상대 위치인 0x20에 0x1000을 더해야 한다. 즉, 0x20 + 0x1000 = 0x1020 오프셋이 생성되고 해당 오프셋을 보면 루트 셀의 데이터 구조를 볼 수 있다.
* 길이: 레지스트리 하이브의 길이는 오프셋 0x28에 있다.
* 파일 이름: 이름은 최대 길이가 64인 UTF-16 리틀 엔디안 형식으로 저장된다. 문자열은 NUL(문자열 끝) 문자로 종료된다. 위 그림의 파일 이름은 System을 알 수 있을 것이다.


* Hive Bin(하이브 빈)
- 셀(Cell)을 포함하는 모든 레코드의 "컨테이너"로서 hbin 시그니처로 시작한다.
- hbin 셀은 4096(0x1000)바이트의 고정크기를 가지며 몇 가지 중요한 정보 서명, 파일 오프셋, 크기 등을 가지고 있다.
* 셀(Cell): 하이브 내의 다양한 데이터는 셀 구조로 저장(8바이트의 배수)하며 실제 데이터를 저장하는 단위로 데이터 유형을 저장한다.
레코드 유형 | 설명 |
키셀(Key Cell) | nk로 시작하며 키에 대한 값이 들어있으며 타임스탬프, 부모키 인덱스, 서브키 인덱스, 키 이름 저장 |
값셀(Value Cell) | vk로 시작하며 값, 유형, 이름 등을 저장 |
하위키 목록 셀(Subkey-list Cell) | If, Ih, ri 3가지 타입이 있으며 부모키의 모든 하위키 셀의 인덱스 목록 저장 |
값 목록 셀(Value-list Cell) | 부모키의 모든 값 셀의 인덱스 목록 저장 |
데이터 셀(Data Cell) | 데이터를 저장하는 셀 (Big Data Cell, Normal Data Cell) |
보안기술자 셀(Security-descriptor Cell) | sk로 시작하며 보안기술자 저장 |
*참고 문헌: 디지털포렌식 한 권으로 끝내기<이중, 바른북스>
'컴퓨터개론 > Windows' 카테고리의 다른 글
Registry(TimeZone Information) (0) | 2023.03.24 |
---|---|
Rigistry(System Information) (0) | 2023.03.21 |
Registry Analysis(2) (0) | 2023.03.13 |
Registry Analysis(1) (0) | 2023.03.12 |
Windows 환경 변수 설정 방법 (0) | 2023.03.11 |