본문 바로가기

[+] Forensic

File System - Ext (8)

이번 글은 Ext 파일시스템에서의 파일 복구와 일관성 검사에 대해 이야기 해 보려 한다.

[파일 복구]
Ext 파일시스템은 Ext4 파일시스템까지 버전이 출시되어 있는데, Ext2와 Ext3의 파일 삭제 방식이 조금 달라 파일 복구 방법도 조금 다르다.
Ext2에서는 파일 복구가 대체로 수월한 편이다. 그 이유는 파일이 삭제 될 때 inode에 블록 포인터 값이 지워지지 않고 계속 남아 있기 때문이다. 또 삭제 시간이 업데이트 되어 파일이 언제 지워졌는지만 안다면 그에 맞는 inode를 찾는 일은 좀 더 수월 해 진다. 하지만 블록 포인터 값이 inode에 남아 있다고 하여 100% 해당 파일의 내용을 복구하는 것은 아니다. inode가 가리키고 있는 블록이 재 할당되면 그 내용은 전혀 다른 내용이 되기 때문이다. 또 디렉토리 엔트리와 inode의 연결은 영구적으로 삭제가 되서 삭제된 inode를 찾으려면 비 할당 inode 엔트리를 검색해야 한다.
Ext3에서는 디렉토리 엔트리와 inode 연결이 삭제 되지 않지만, 블록 포인터가 삭제 되기 때문에 카빙 기술을 이용하여 파일 복구를 시도 해야 한다. 카빙을 시도 할 때의 정보 수집 범위는 보통 같은 블록내에 할당하기 때문에 블록 그룹 단위이지만 어떤 OS는 파일시스템 전체를 할당 대상으로 하기 때문에 OS에 따라 그 정보 수집 범위를 달리해야 한다.
만약 파일이 최근에 삭제 된 것을 알고 있다면 저널을 분석하는 것이 좋다. 그 이유는 inode의 복사본이 저널 블록에 포함되어 있을지도 모르기 때문이다.

 * 참고 : Ext4의 경우 저널기능과는 별개로 파일 복구 기능을 추가한다는 계획이 있다. 


[일관성 검사]
일관성 검사는 히든 데이터를 찾을 때 주로 사용하는 방법이다. 아래는 히든데이터가 있을만한 영역을 목록화 하여둔 것이다.

 - 슈퍼 블록 : 1024byte를 사용하지만 대부분 사용하지 않는 공간이다.
 - inode 테이블 끝 부분 : inode 테이블 끝에는 사용하지 않는 바이트가 있다.
 - 예약 inode : 사용해서는 안될 inode이지만, 저장은 가능하다.
 - 확장 속성 : 사용하지 않는 공간이 있다.


또 히든 데이터 검색 뿐만이 아닌 inode 엔트리의 정상적인 할당 을 검사 할 때도 사용 된다. inode 엔트리가 가지고 있는 포인터 값의 블록들은 모두 할당 상태여야만 한다. 하지만 예외가 있는데, 특별한 타입의 파일 inode는 블록에 할당 될 필요가 없어 블록이 반드시 있지 않아도 된다.
예약 inode와 고아 inode를 제외한 할당 된 모든 inode는 파일 이름을 가지고 있어야 한다. 또 링크 값과 파일 이름 개수가 동일해야 한다.  



'[+] Forensic' 카테고리의 다른 글

File System - Ext (10)  (0) 2012.02.24
File System - Ext (9)  (2) 2012.02.24
File System - Ext (8)  (0) 2012.02.23
File System - Ext (7)  (0) 2012.02.23
File System - Ext (6)  (0) 2012.02.22