본문 바로가기

포렌식

File System - Ext (10) 계속해서 Ext 파일시스템의 데이터 구조체를 알아보자. [그룹 기술자 테이블] 그룹 기술자 테이블은 파일시스템 블록에 위치하는 그룹 기술자 그룹의 목록을 뜻하며, 슈퍼 블록 다음 블록에 위치 한다. 그룹 기술자 테이블의 엔트리는 각 블록 그룹의 정보를 가지고 있으며, 테이블의 크기는 32byte이다. [그림 1 - 그룹 기술자 테이블 오프셋] * 참고 : 파일시스템 블록의 크기가 4096byte 일때는 슈퍼 블록이 0에 위치하고, 그룹 기술자 테이블은 블록 1에 위치한다. 또 파일시스템 블록의 크기가 1024byte 일때는 슈퍼 블록이 1에 위치하고, 그룹 기술자 테이블은 블록 2에 위치한다. - 블록 비트맵의 시작 블록 주소 : 해당 오프셋의 값은 오프셋이 아니라 단순히 블록 번호에 불과하다. 위 이미.. 더보기
File System - Ext (9) 이번 글부터는 Ext 파일시스템의 데이터 구조체들을 알아 볼 것이다. [슈퍼 블록] 슈퍼 블록의 파일시스템에서 1024byte offset에 위치하고, 그 크기 또한 1024byte 이다. * 참고 : 크기가 너무 커 오프셋 별로 분석을 하지 않고 표로 대체 하였다. 아래는 슈퍼 블록의 오프셋 부분이다. [그림 1 - 슈퍼 블록 위치] 이제 슈퍼 블록의 오프셋 별 의미를 알아보자. [그림 2 - 슈퍼 블록 오프셋] - 블록 크기 : 이 값은 직접적인 값이 아닌 간접적인 값으로, 1024를 해당 오프셋의 값만 큼 왼쪽으로 쉬프트 연산하여 블록 크기를 구해야 한다. - 단편 크기 : 이 값 또한 블록 크기와 동일한 방법으로 구한다. - 시그니처 : 슈퍼 블록은 "0xEF53" 시그니처를 가지며, 슈퍼 블록의.. 더보기
File System - Ext (8) 이번 글은 Ext 파일시스템에서의 파일 복구와 일관성 검사에 대해 이야기 해 보려 한다. [파일 복구] Ext 파일시스템은 Ext4 파일시스템까지 버전이 출시되어 있는데, Ext2와 Ext3의 파일 삭제 방식이 조금 달라 파일 복구 방법도 조금 다르다. Ext2에서는 파일 복구가 대체로 수월한 편이다. 그 이유는 파일이 삭제 될 때 inode에 블록 포인터 값이 지워지지 않고 계속 남아 있기 때문이다. 또 삭제 시간이 업데이트 되어 파일이 언제 지워졌는지만 안다면 그에 맞는 inode를 찾는 일은 좀 더 수월 해 진다. 하지만 블록 포인터 값이 inode에 남아 있다고 하여 100% 해당 파일의 내용을 복구하는 것은 아니다. inode가 가리키고 있는 블록이 재 할당되면 그 내용은 전혀 다른 내용이 되기.. 더보기
File System - Ext (7) 이전 글까지 해서 Ext의 참조 모델 별로 어떤 데이터가 있는지 알아 보았다. 이번 글에서는 이러한 참조 모델 데이터들이 어떻게 혼합되어 파일이 생성되고 삭제 되는지 알아 볼 것이다. [파일 생성] 이 과정에서는 dir 이라는 디렉토리가 있다고 가정하며, File.txt 파일을 생성한다는 가정 상황을 시나리오로 할 것이다. 1. 일단 파일시스템 1024byte 오프셋에 위치 하는 슈퍼 블록의 참조하여 블록의 크기와 블록 그룹의 블록 개수, 블록 그룹 내의 inode 개수를 파악한다. * 참고 : 해당 시나리오에서 블록의 크기는 1024byte, 블록 그룹의 블록 개수는 8192개, 블록 그룹 별 inode의 개수는 2016개라고 하겠다. 2. 슈퍼 블록의 분석이 끝나면 그룹 기술자 테이블을 참조한다. 이.. 더보기
File System - Ext (6) 이번 글에서는 파일시스템 마지막 참조 모델인 응용 프로그램 참조 모델에 대해서 알아 보도록 하겠다. Ext 파일시스템에서는 응용 프로그램 참조 모델에 속하는 기능이 저널링 기능 밖에는 없다. [저널링] 저널링 기능은 파일시스템의 손상을 대비하여 복구를 위해 파일시스템의 변경사항을 기록 해두는 기능으로 설명을 할 수 있다. Ext에서 저널은 슈퍼블록에서 그 위치를 지정하여 주기 때문에 파일시스템 어느 곳이든 위치 할 수 있지만 보통 inode 8을 사용한다. 슈퍼 블록에는 저널을 위한 호환 설정 필드가 있는데 이 값을 어떻게 설정 하는가에 따라 로컬 저널 기능의 활성 여부를 결정 할 수 있다. 만약 로컬 저널 기능을 비 활성화로 설정하면 외부 저널을 사용 할 수 있다. 하지만, 이 저널의 데이터는 로컬에 .. 더보기