안녕하세요. 도깬리 포렌식스 입니다.
오늘은 우리가 일반적으로 알고 있는 파일 헤더와 푸터를 이용한 파일 기반이 아닌 섹터나 클러스터를 기반으로 하는 복구기술에 대해 살펴보고자 합니다. 실무적으로 사용할 일이 극히 드물기는 하지만 알아 두면 좋을 것 같습니다. 이제 시작할까요?
Block 기반의 해시 분석을 통한 파일 복구
논리적 파일 단위가 아니라, 섹터 또는 클러스터 단위로 해시분석을 통해 파일을 복구하는 기술입니다.
해시값
메시지 다이제스트(Message digest) 라고도 불립니다.
가변 길이 입력 데이터 스트림(Variable-length input data stream)을 사용하여 계산하는 기술입니다.
고정된 길이의 digit(16진법)으로 보여줍니다.
일방향 수학적 알고리즘을 사용합니다.
- 파일에서 해시값을 얻을 수 있지만, 반대로 해시값을 이용해 파일을 재생성할 수 없다는 의미입니다.
동일한 해시를 생성하는 2개의 서로 다른 입력 스트림은 있을 수 없게 됩니다.
다만, 2의 128의 확률로 2개의 서로 다른 입력값이 동일한 해시값을 생성하는 일이 발생하기도 한다고 합니다.(일명 ‘해시 충돌’)
해시값의 예
MD4, MD5, SHA-1, RIPEMD-160
MD4, MD5의 경우 ‘broken(깨졌다)’ 되었다고 간주되는데, 그 이유는 의도적으로 해시 충돌을 일으킬 수 있음이 증명되었기 때문입니다.
Block 기반 해시 계산은 MD5를 사용하기는 하지만, 해시 충돌이 포렌식 분석결과에 영향을 미칠 가능성은 매우 희박합니다.
전통적 해시 분석방법
알려진 혐의 파일을 신속, 정확하게 찾아주는 기법으로 활용됩니다.
해시값을 공유하면, 실제로 해당 파일을 갖고 있지 않아도 협업이 가능합니다.
해시값 비교가 바이너리 비교보다 훨씬 속도가 빠릅니다.
내용을 육안으로 볼 필요가 없는 상황 또는 봐서는 안되는 상황에서 빠른 검색을 가능하게 합니다.
예) 운영체제 설치 관련 시스템 파일, 고소인 제출 파일, 아동 포르노, 회사 기밀 문서
미리 만들어진 해시셋(DB)을 이용할 수도 있습니다.
예) NSRL(National Software Reference Library)
새롭게 등장하는 해시 분석방법
퍼지 해시(Fuzzy Hash) “할당영역에서 유사한 파일 찾기”
Jesse Kornblum이 개발하였습니다.
ssdeep 라는 도구를 사용하여 파일이 바이너리 단위에서 동일하지 않더라도 유사한 파일을 찾아줍니다.
정상파일이든 삭제파일이든, File Header/Footer가 남아 있어 Caving 기법으로 복원이 가능한 상황이든 간에 그 어떤 상황이든 논리적인 파일 형태로 존재하기만 하면 적용 가능합니다.
블락 해시(Block Hash) “비할당영역에서 유사한 파일 찾기”
대상 파일이 논리적으로 존재하지 않고, Slack 영역, Unallocated 영역, Unused 영역 등에 물리적으로만 남아 있는 경우, 유사한 파일을 어떻게 찾을 것인가의 문제입니다.
Block Hash를 이해하기 위한 선행 지식
디스크와 파일 영역 할당 원리
디스크는 Block 기반 저장 장치입니다.
디스크의 Block은 보통 물리적 섹터(Sector)로 불립니다.
섹터는 디스크에 쓸 수 있는 최소 단위입니다.
데이터를 저장하기 위해서는 디스크가 논리적 볼륨(Volume)으로 구분되어야 합니다.
각각의 볼륨은 클러스터(Cluster), 또는 논리적 Block이라고 불리는 할당 단위로 구분됩니다.
각각의 클러스터는 동일한 수의 섹터를 포함합니다.
파일시스템은 파일 저장을 위해 클러스터를 할당합니다.
각각의 클러스터는 첫 번째 클러스터의 시작부분에서 시작하는 데이터로 채워지면, 각각 다음의 클러스터로 넘어갑니다.
데이터는 항상 처음부터 클러스터에 쓰여지며, 절대로 중간부터 쓰여지지 않습니다.
파일에 할당된 마지막 클러스터만 예외가 될 수 있지만, 클러스터는 완전히 채워져야 합니다.
맨 마지막 클러스터만 파일의 맨 끝에 덧붙여 파일 슬랙을 포함 할 수 있습니다.
Block 기반 해시 분석을 이용한 파일 복원 방법
혐의파일에 대한 각각의 Block을 해시값으로 계산하여 둡니다.
섹터 크기 또는 클러스터 크기를 기준으로 하여 미리 해시값을 계산하여 둡니다.
선택한 Block의 크기는 분석 대상 장치의 Block 크기와 일치해야 합니다.
섹터 크기와 일치하는 Block 크기를 계산해 둔 경우
분석대상 장치에 저장된 파티션의 수, 종류, 위치에 관계없이 전체 장치를 검색할 수 있습니다.
클러스터 크기와 일치하는 Block 크기를 계산해 둔 경우
분석대상 장치에서 검색한 하나의 파티션 또는 하나 이상의 파티션의 클러스터와 동일한지 여부를 확인할 수 있습니다.
Block 해시는 hash map 파일 안에 저장되면, 파일의 확장자는 EnMap
각각의 hash map 파일명은 다음의 정보를 포함합니다.
- 혐의파일의 완전한 MD5 해시
- 프로세싱에 사용된 Block 크기
- 해시를 만드는데 사용한 소스 혐의 파일의 파일명
주로 파일 슬랙, Unused 영역, Unallocated 클러스터를 대상으로 Block 기반 해시 검색을 수행합니다.
한번에 하나의 장치만 검색을 할 수 있으며, 복합파일의 경우 마운트 해제상태이어야 합니다.
Hash map 계산과 분석은 EnScript 모듈을 이용하여 수행합니다.
- File Block Hash Map Analysis
감사합니다. 오늘도 즐거운 하루되세요.
"좋아요"와 "구독하기"는 힘이 됩니다.
참고문서 : EnCase Advanced Forensics
'EnCase' 카테고리의 다른 글
[EnCase] RAID 시스템 분석하기 (1) (0) | 2022.06.10 |
---|---|
[EnCase] Block 기반 해시 분석(Hash Analysis)을 통한 파일 복구 (2) (0) | 2022.06.07 |
[EnCase] EnCase로 구형 안드로이드 스마트폰의 microSD card 분석하기 (0) | 2022.06.03 |
[EnCase] EnCase로 구형 안드로이드폰 분석하기 (2) (0) | 2022.06.01 |
[EnCase] EnCase로 구형 안드로이드폰 분석하기 (1) (0) | 2022.05.30 |