정보보안공부
디지털 포렌식_NTFS_BR분석, MFT 헤더 분석 본문
@@실습환경
- 16기가 하드를 추가하고 하나의 파티션으로 구성한다.
- 바탕화면에 test.txt / Testdir / testdirfile.txt 3개를 만들어놓고
- test.txt를 E드라이브로 복사
- Testdir을 E드라이브로 복사
- C:\Windows\iis6.log를 E드라이브로 복사
@@ NTFS ( New Technology File System )
- WinHex사용
- 16G 하드디스크 만든후 16G 전체를 파티션 한개로 생성
- 해당 하드디스크안에 test.txt 파일생성, Testdir 디렉토리생성, Testdir 디렉토리안에 testdirfile.txt 파일생성
*** NTFS 특징
- 데이터 복구기능
- 암호화 ( NTFS 5.0 부터 지원 )
- 압축
- 디스크 쿼터 ( NTFS 5.0 부터 지원 )
*** NTFS Layout 구조
- Boot Record : FAT File System보다 간단한 구조
- MFT : NTFS 파일시스템의 구조를 가지고 있음
- Data 영역 : 데이터가 저장되는 영역, Cluster 단위로 읽고 씀
*** MBR
-> BR을 구하기 위해 MBR먼저 분석
-> 디스크의 첫 512 Bytes, 0번섹터에 위치
** MBR분석
[ 첫 번째 파티션 분석 ]
0번 섹터에서 4개의 파티션중 첫 번째 파티션만 사용되는 것을 확인하고 분석을 진행한다.
07 : NTFS 파일시스템 의미
3F 00 00 00 : 63번 섹터에서 BR이 시작됨을 의미
E9 D5 FF 01 : 섹터의 총 개수는 33543657개 ( 33543657 x 512바이트 = 파티션용량 ) 약 16GB
[ Signature 분석 ]
-> 55 AA
** 분석시 주의사항
WinHex에서 보여지는 값은 리틀앤디안에 의해서 보여지는 값들로 십진수로 변환시 거꾸로 계산해서 분석해야한다.
예) 3F 00 00 00 -> 00 00 00 3F 이므로 63
예) E9 D5 FF 01 -> 01 FF D5 E9 이므로 33543657
*** Boot Record ( BR )
- Windows를 부팅시키기 위한 Boot Code와 NTFS의 다양한 설정값들이 들어있음
- 크기는 512Byte
- NTFS의 내용중 유일하게 고정되어 있는 구조체
- Boot Record를 이용하여 MFT에 접근
*** Boot Record 주요 내용
- 섹터당 바이트 수
- 클러스터당 섹터 수
- 볼륨의 크기
- MFT, MFT Mirror의 시작지점
- Boot Code
*** BR (Boot Record) 분석
** BR분석
- MBR 분석 후 BR의 시작위치가 63이므로 63번 섹터로 이동
- MBR 분석은 FAT와 같은 방식이다
[ BR 분석 ]
4E 54 46 53 20 20 20 20 : OEM Name으로 NTFS를 의미한다.
00 02 : Bytes Per Sector로 1개의 섹터가 512Byte를 의미한다.
08 : Sector per Cluster로 1개의 클러스터는 8개의 섹터를 의미한다.
E8 D5 FF 01 00 00 00 00 : 섹터의 총 개수는 33543657개 ( 33543657 x 512바이트 = 파티션용량 )
00 00 0C 00 00 00 00 00 : MFT 시작위치를 나타낸다. ( 단위가 클러스터이므로 x8 해야한다. )
786432 x 8 + BR의 시작위치 => 6291456 + 63 = 6291519
5E FD 1F 00 00 00 00 00 : MFT Mirror 위치를 나타낸다. ( 단위가 클러스터이므로 x8 해야한다. )
2096478 x 8 + BR의 시작위치 => 16771824 + 63 = 16771887
F6 : MFT Entry Size로 MFT Entry의 크기를 나타낸다. -10은 2^10 = 1024를 의미한다. => 1KB
01 : MFT Entry Size와 같은형식이다. => 1KB
** 분석시 주의사항
WinHex에서 보여지는 값은 리틀앤디안에 의해서 보여지는 값들로 십진수로 변환시 거꾸로 계산해서 분석해야한다.
** BR분석을 통해 알아낸 정보
-> 1개의 섹터는 512Byte, 1개의 클러스터는 8개의 섹터
-> 파티션 크기는 약 16G
-> MFT0번의 시작위치 : 6291519
-> MFT Mirror의 시작위치 : 16771887
-> MFT Entry 사이즈는 : 1KB ( 2섹터 )
*** MFT 레이아웃을 알아내는 순서
- BR에 기록된 MFT Entry 위치를 알아냄
- MFT Entry 첫 번째에 있는 Entry 0의 정보를 해석함
- MFT 전체 구조를 파악
- 볼륨이 존재하는 모든 파일과 디렉토리에 대한 정보를 담고 있는 테이블
- NTFS에서 가장 중요한 구조체
- 위치는 상관 없으나 주로 Boot Record 뒤에 위치
- 사이즈가 고정적이지 않음
- MFT는 여러개의 Entry로 구성되어 있음
- 파일이나 디렉토리는 최소 하나의 MFT Entry를 가져야 함
- Entry 0 ~ 15까지는 파일시스템관리를 위해 예약되어 있음
- Entry 24 이후부터 일반파일에 할당됨
*** MFT Entry값에 따른 위치 분석
-> BR분석을 통해 MFT의 시작위치를 구함
-> 한개의 MFT Entry는 1KB이므로 2개의 섹터
-> MFT Entry 0번 = MFT의 시작위치
-> MFT Entry 1번 = MFT의 시작위치 + 2
-> MFT Entry 2번 = MFT의 시작위치 + 4
-> MFT Entry 3번 = MFT의 시작위치 + 6
*** MFT Entry Header 분석
-> MFT Entry 맨 앞 42 Bytes
-> Entry의 상태를 담고 있음
** MFT Entry Header 분석
- Ctrl + F 이용해서 검색
- test.txt가 위치한 MFT Entry로 이동
: 부분
[ MFT Entry Header분석 ]
46 49 4C 45 : Signature로 "FILE"문자열을 의미 MFT Entry를 의미한다.
30 00 : Offset of Fixup Array으로 나중에 사용
03 00 : Count of Fixup Values으로 나중에 사용
01 00 : Sequence Value로 변경 사항이 생기면 값이 1씩 증가한다.
38 00 : Offset to First Attribute는 첫번쨰 속성의 시작위치를 알아낸다. MFT Entry시작부터 56바이트 뒤에 위치
01 00 : Flag값을 알아낸다. -> 1은 사용중을 의미 ( 2는 디렉토리를 의미 )
38 01 00 00 : Used Size of MFT Entry로 MFT에서 사용한 Byte 수를 저장한다. 8의배수로 저장
00 04 00 00 : Allocation Size of MFT Entry로 MFT Entry의 크기를 Byte로 저장한다. 1K로 고정
00 00 00 00 00 00 00 00 : File Reference to Base MFT Entry로 전부 0일경우 Base MFT Entry를 의미한다.
-> non-Base MFT Entry일 경우 자신의 Base MFT Entry 위치를 가지고 File Reference Address 형태로 저장
03 00 : Next Attr ID
** Base MFT Entry : 파일의 정보를 하나의 MFT Entry에 담지 못할 경우 여러개의 MFT Entry를 사용하게 되는데 이때 처음 MFT Entry
** non-Base MFT Entry : Base MFT Entry 이외의 MFT Entry
[ 굳이 따지자면 MFT Entry Header는 아니지만 분석 ]
1D 00 00 00 : MFT Entry번호를 29번으로 알수 있다.
** MFT Entry Header 분석을 통해 알아낸 정보
-> 29번째 MFT Entry
-> 수정번호 값 1
-> 첫번째 속성위치 : Entry 시작 위치로 부터 56Byte 뒤에서 첫번째 속성 시작
-> Flag : 사용중(0x01)
-> Base MFT Entry
'디지털 포렌식' 카테고리의 다른 글
디지털 포렌식_NTFS_MFT 0번 분석 (0) | 2019.01.09 |
---|---|
디지털 포렌식_NTFS_MFT 분석_기본개념정리 (0) | 2019.01.09 |
디지털 포렌식_NTFS_MFT 속성 분석 (0) | 2019.01.09 |