Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Hello Security World

Digital Forensic [NTFS 파일 시스템] 본문

정보보안/Forensic

Digital Forensic [NTFS 파일 시스템]

프로앱등이 2020. 5. 3. 18:03

NTFS 소개

Windows NT에서 사용하기 위한 파일시스템으로 서버로 가기 위해 서는 FAT는 적절치 못해서 새롭게 개발된 파일 시스템

NTFS 1.0 : WinNT 3.1에서 지원. 최초의 버전

NTFS 1.2 : WinNT 4.0에서 지원. 주로 NTFS라 하면 이 버전을 의미함 (NTFS 4.0이라고도 함)

NTFS 3.0 : Win2K에서 지원. 암호화 및 보안이 개선. (NTFS 5.0이라고 도 함)

NTFS 3.1 : 윈도 XP, 윈도 서버 2003, 윈도 비스타, 윈도 서버 2008, 윈도 7

NTFS 특징

데이터 복구 기능: 모든 작업을 트랜잭션(Transaction) 단위로 기록 하고 시스템 장애로 인한 문제 발생시 복구

암호화: EFS(Encryption File System), NTFS 5.0 이후 지원

압축: ZIP 형식의 LZ77 변형 압축 기술 사용

디스크 쿼터: 디스크 사용량 제한, NTFS 5.0 이후 지원

ADS (Alternate Data Stream): 다중 스트림으로서 하나의 파일이 여 러 이름의 데이터를 가질 수 있음

Sparse 파일: 파일 내용이 0으로 채워진 경우 해당 영역을 표시만 하고 실제 데이터 영역을 할당하지 않음

대용량 지원: 이론적으로 2 64(Exa Byte)까지 표현 가능

NTFS 기본 구조

Boot Record : 1’st 섹터에 위치하며 해당 볼륨의 여러가지 설정 값, 부팅을 위한 실행 코드 포함

Master File Table(MFT) : 존재하는 모든 파일과 폴더에 대한 정보 저 장

Data 영역: MFT를 포함하고 파일 또는 폴더 등의 데이터가 저장되며 Cluster 단위로 접근

 

 

Boot Record 구조

 

 

MFT (Master File Table)

메타 데이터 파일(Meta Data File)과 일반 파일 또는 디렉터리에 대 한 정보를 저장 하고 있는 MFT Entry (Metadata)로 구성

 

 

Meta Data File (1/2)

NTFS 파일시스템 관리 파일로 예약되어 있으며 MFT Entry Number 0부터 15번까지 총 16개가 존재.

 

 

Meta Data File (2/2)

 

 

Base MFT Entry와 non-base MFT Entry

어떤 파일에 대한 정보가 너무 많아서 하나의 MFT Entry에 담기가 불가능할 경우 여러 개의 MFT Entry 사용

Base MFT Entry: 첫번째 MFT Entry

Non-base MFT Entry: 두번째 이상의 MFT Entry

 

 

Cluster Runs

Non-Resident 방식으로 속성의 내용이 저장되어 있는 경우 MFT Entry의 Attribute Content에 Cluster Runs 구조를 통해서 실제 속 성 내용의 클러스터 위치 확인

LCN (Logical Cluster Number): 볼륨에서의 클러스터 번호

VCN (Virtual Cluster Number): 파일내에서 클러스터 번호

 

 

Sparse

$DATA 속성 (실제 파일의 내용 저장)에서 사용

클러스터의 데이터가 모두 0일 때 해당 클러스터를 실제 할당하지 않음

 

 

파일과 속성

 

 

파일의 생성 (1/2)

$MFT Entry(Entry Num 0)의 $BITMAP 속성 처리: Free MFT Entry 검색

앞서 검색한 Free Entry에 대한 MFT Entry 할당 (Set to 1)

할당된 MFT Entry에 $STANDARD_INFORMATION, $FILE_NAME 속성 추 가

할당된 MFT Entry에 $DATA 속성 추가

- $Bitmap 파일의 $DATA 속성을 Read하여 할당되지 않은 클러스터 검색

- 할당되지 않은 클러스터를 할당($Bitmap 파일 내용 변경: set to 1)

- 저장할 Data를 해당 클러스터에 Write

- $DATA 속성 Update (Data 저장 클러스터 정보 Update)

$INDEX_ROOT, $INDEX_ALLOCATION 처리 (계층 구조 형성)

Quotas 기능이 활성화되어 있을 경우 “\$Extend\$Quota”에 사용 량 update

저널링: $LogFile, \$Extend\$UsrJrnl

파일의 생성 (2/2)

 

 

파일의 삭제 (1/2)

Index에서 파일 관련 entry 삭제 (re-sorted)

파일에 대한 MFT Entry 삭제 (cleaning in-use flag: set to 0)

삭제된 MFT Entry에 대하여 $MFT Entry $Bitmap 속성 변경: set to 0

파일에 할당된 Cluster에 대한 $Bitmap 파일 변경 (Set to 0): 파일 에 할당된 Cluster를 Unallocated로 변경

\$Extend\$Quota 변경

저널링: $LogFile, \$Extend\$UsrJrnl

파일의 삭제 (2/2)

 

 

파일의 복구 (1/2)

Index는 파일이 삭제되면 재정렬이 수반되어 Index에서 파일 명과 Path를 얻을 수 없음

파일이 삭제되는 경우 해당 파일의 MFT Entry의 flags 값이 0으로 설 정됨 (MFT Entry의 모든 항목을 삭제하지 않음)

Windows는 MFT Entry를 allocate할 때 “first-available allocation strategy”으로 동작하기 때문에 삭제보다 추가가 많은 경우 복구 실패 가능성이 많으나 그렇지 않은 경우 복구 성공 가능성 이 높음

$FILE_NAME 속성의 “File reference address of the parent directory”를 이용하여 Path 획득

$DATA 속성을 통하여 파일 Data 복구

- 파일이 Resident인 경우 완전 복구 가능

- 파일이 단편화되어 있어도 복구 가능

- 단, Non-Resident인 경우 overwritten될 수 있음

파일의 복구 (2/2)

 

 

Boot Sector와 $MFT 사이에 Data 은닉 가능성 분석

6 Sectors에서 일부 Sectors만 사용

여부의 Sector에 대해서 Data 은닉 가능성 존재

 

 

Filesystem과 Volume의 Size 차이 분석

Filesystem 내에서의 Volume Size를 조작하여 여분의 Space에 데 이터 은닉 가능성 존재

Boot Record의 Total Sector 수와 MBR의 Partition Table에서 얻 은 Size를 비교하여 판별 가능

 

 

$MFT내 Data 은닉 분석

$MFT는 파일이 많아져 그 크기가 증가하면 줄어들지 않음

따라서 임의로 다수의 파일 생성과 삭제 후 여분의 영역에 데이터 은 닉 가능성 있음

$MFT Size의 적정성 및 은닉 Data 검사

 

 

$MFT Entry의 Attribute 악용 가능성

MFT Entry는 1024byte이고 Attributes로 구성되며 End Marker(0xFFFFFFFF) 이후의 여분의 공간이 존재

MFT Entry에 임의의 Attribute를 추가하여 Data 은닉 가능성

MFT Entry Header의 Signature 값을 “BAAD”로 표시 후 데이터 은닉

폴더(Directory)에 대한 $DATA 속성

폴더의 경우 $DATA 속성을 가질 필요가 없음

그러나 시스템에서 이러한 폴더에 대한 $DATA 속성 존재에 대해서 오류를 리턴하지 않는다는 것을 이용하여 데이터 은닉 가능성 존재

 

 

NTFS Partition 복구 (Partition Table에 관련 정보가 없는 경 우)

Boot Record Signature Search (0xAA55)

Volume의 시작 Sector에 존재하고 Offset이 510~511에서 검색

일반적으로 Disk에 Data가 존재한다면 False Positive한 결과를 포함하 여 검색됨 (Backup Boot sector 포함)

0ffset 3에 OEM Name (“NTFS ”) 검사

Boot Record의 $MFT 위치를 확인하고 $Boot (MFT Entry #7)를 이 용하여 Boot Sector 확정

 

 

Bad Clusters 분석

NTFS에서 Bad Cluster를 $BadClus (MFT Entry 8) 파일에 저장

시스템이 Bad Cluster를 발견하면 해당 Cluster를 $BadClus에 할당

따라서, 파일을 은닉하고자 할 때 해당 Cluster를 $BadClus에 할당 되도록 조작 가능

$BadClus에 대한 size 제한 없음