3-2) 파일 관련 분석 2
Last updated
Last updated
먼저 앞의 푸터를 벗어난 데이터 분석에 대해서 먼저 실습 후 진행하시는 것을 추천합니다. >>
실제 시험에서도 자주 출제되는 유형으로 특정 파일내에 다른 파일을 합쳐서 숨기는 방식입니다. 한 예로 JPG 그림 안에 또 다른 그림파일을 합쳐서 하나의 파일로 저장한다면 하나의 파일로 보이는 것입니다. 실제 시험에서 배점이 상당히 높은 파일을 찾을 때 나오는 방식입니다.
이러한 방식은 스테가노그래피로 볼 수 있는 가장 단순한 형태입니다. *스테가노그래피: 탐지를 피하기 위해 비밀이 아닌 평범한 문서나 기타 미디어 내부(또는 그 위에)에 비밀 정보를 숨기는 수단
먼저 이미지+이미지.jpg 를 살펴보겠습니다. 단순히 보게 되면 그림파일 하나로 보이고 있습니다.
아쉽게도 hex 에서 검색할 수 가 없어서 아래 그림과 같이 Launch in HxD를 사용하여 열어보도록 하겠습니다. 정상적으로 열리지 않을 경우 파일을 추출해서 HxD로 열어 봅시다.
Ctrl + F 또는 찾기에서 16진수 값에서 Image의 푸터인 FF D9를 검색하여 봅시다. *만약 푸터를 모를 경우 파일을 생성 한 뒤 맨 뒤에 2 바이트를 살펴봅시다.
FF D9를 찾았더니 뒤에 또 FF D8로 시작하는 것을 알 수 있습니다. 정상이라면 FF D9 뒤에는 데이터가 나오지 말아야 하는 상황입니다.
뒤의 FF D8 부터 마지막까지 선택 후 복사해보도록 합시다. (FF D8 선택 후 Shift 를 누른 사태로 맨 마지막 영역을 클릭하면 해당 부분이 선택됩니다.)
새로 파일을 생성 후 붙여넣기를 해보도록 합시다. 저장할 때 파일명은 자유롭게 하되, 확장자는 jpg로 하여 바로 확인하여 봅시다.
정상적으로 추출을 하였다면 아래와 같이 2번 그림을 확인할 수 있습니다.
즉, 이미지 안에 1번 그림과 2번 그림이 합쳐져 있던 것입니다.
동일하게 이미지 + 워드, 이미지 + 압축파일 등을 찾아서 추출하여 분리하여 봅시다. [이미지+워드]
[이미지 + 압축파일]
출제빈도는 매우 적은 수준이지만, 약간의 파일 구조 분석을 할 수 있는지 묻는 유형입니다. 조금만 집중해서 파일들을 보면 지금까지 배운것으로도 충분히 해결이 가능합니다.
먼저 "IMG_20200227-1" 파일을 한번 살펴보겠습니다. 가장 첫 부분에 시간값이 있고 그 뒤에 어떠한 데이터가 보입니다. HxD를 이용하여 열어봅시다. Launch in HxD가 안될 경우 해당 파일을 추출 HxD로 열어봅시다.
구조를 먼저 유심히 살펴보겠습니다. 가장 처음 부분에는 시간 정보가 있으며 특정 영역부터 FF D8로 시작 되는 것을 알 수 있습니다.
그렇다면 FF D8로 시작 했으니 FF D9도 있는지 확인해보겠습니다. FF D9를 검색하였는데 끝나는 것이 아닌 뒤에 FF DB가 이어집니다. JGP 구조를 전체를 다 공부하였다면 이게 무엇인지 파악이 되겠지만, 우리는 모든 파일의 구조를 다 알고 있는건 아니며, 알 수도 없습니다.
우선은 마지막이 아니구나 중간에 어딘가구나.. 생각하고 이어서 검색하여 봅시다. F3 을 누르면 이어서 검색을 이어갈 수 있습니다. 다음 검색에서는 아래와 같이 FF D9로 끝나는데 뒤에 이어서 가장 처음에 있는 것과 동일한 시간 정보가 표시되고, 다시 이어서 FF D8이 이어집니다.
그렇다면 그림1, 그림2를 한번 복사하여 새로운 파일로 만들어 보도록 하겠습니다. 먼저 시간 정보1, 그림1 부분을 지정하여 복사해보도록 하겠습니다. 2번째 FF D9 부분부터 가장 처음 부분까지 복사합니다.
해당 부분에서 시그니처가 FF D8이 되도록 앞 부분의 시간 정보는 지우도록 하겠습니다. 그리고 확장자를 jpg로 하여 저장합니다.
저장한 그림 파일의 우클릭 - 속성에서 자세히 부분을 살펴보면 카메라 부분, GPS 부분 까지도 확인이 가능합니다.
그럼 이제 그림 2 부분도 동일하게 살펴보도록 합시다. 2번째 FF D9 뒷 부분 전체를 복사해보도록 하겠습니다. (FF D9를 검색 해보면 2번째 그림만 있는 것으로 보여집니다.)
그림 1 과 동일하게 시그니처가 FF D8이 되도록 앞 부분의 시간 정보는 지우도록 하겠습니다. 그리고 확장자를 jpg로 하여 저장합니다.
정상적으로 저장이 되었다면, 그림 및 [자세히]에서 기타 정보를 확인할 수 있습니다.
"IMG_20200227-2"도 동일하게 HxD로 열기 한 다음, "FF D9"를 검색하고, 해당 그림파일의 마지막이라고 생각하는 부분을 살펴보니 추가적인 데이터를 확인 할 수 있습니다. 이 경우에는 약간의 데이터 이후 동일한 구조로 시작하는 것을 확인할 수 있습니다.
그림1, 2를 추출한 것과 동일한 방식으로 이미지 영역으로 생각되는 부분을 추출하여 저장하여 봅시다. 정상적으로 추출하였다면, 아래와 같은 그림과, 내용을 확인할 수 있습니다.
이 문제 같은 경우 충분히 알고 있어야 하는 부분으로는 1. 파일의 Hex 데이터를 보면서 단순 아스키 데이터인지 특정 파일의 시그니처 부분인지 파악 (시그니처를 모를 수 있으나, 일반적으로 시험에서는 정말 대중적인 파일일 확률이 높습니다. JGP, GIF, PNG, 압축 파일(PK) 등..) 2. 해당 시그니처를 보고 헤더와 적절한 푸터를 찾을 수 있어야 함. (푸터를 모를 경우 정상파일을 HxD로 열고 마지막 2바이트를 보면 됩니다. 다만, 특정 파일의 경우 푸터가 없거나 찾기 까다로울 수 있습니다. 이 경우 다음 파일의 시그니처가 위치하거나 00 으로 끝나는 부분이 있을 경우 해당 파일이 끝낫을 것으로 유추해볼 수 있겠지요.) 3. 해당 영역을 추출하여 저장 후 확인 (이번 연습에서는 JPG 구조인 FFD8 ~ FFD9로 끝나는 특성을 이용)
물론 포렌식 전문가라면 유명 파일 구조는 알고 있어야 할 수 있으나 파일 구조도 업데이트가 계속 되어 항상 외우고 다닐 수 없습니다. 다만 4시간 안에 오프라인으로 실기를 하기에 전혀 새로운 구조나, 분석 시 확인할 수 없는 완전 새로운 형태의 파일 분석이 출제되지는 않을 것으로 보입니다. *지난 기출에서는 4개의 그림 파일이 하나의 파일로 합쳐진 것을 분석하는 것이 출제된 적이 있는 것으로 알고 있습니다!
사실상 파일 합치기 및 분리와 동일한 구조입니다. 출제 빈도도 매우 낮은 수준이긴 하나, 응용된 형태로 충분히 출제될 수 있기 때문에 한번 정도는 연습해두시는 것을 추천합니다.
먼저 "4.압축파일 분할" 폴더를 살펴보면 ~.vol1.egg 파일, ~.vol4.egg 파일이 위치합니다.
용량이 큰 경우 압축파일도 분할해서 저장을 할 수 있는데 이때 일반적이라면 vol1, vol2, vol3, vol4 처럼 파일명에 숫자가 연속적인 형태로 저장하게 됩니다. 위의 경우 1~4라면, 2,3번이 안보이는 상태인 것입니다. 그렇다면, 2,3번이 어딘가에 있을 확률이 높을 것입니다. vol1.egg, vol4.egg 시그니처를 보면 EGGA로 시작하게 됩니다. 그렇다면, vol2, vol3도 동일한 EGGA로 시작할 것으로 예측이 됩니다! 위의 파일을 보면 시그니처가 EGGA로 시작합니다. 즉, 이게 vol2거나 vol3 또는 둘 다 일수도 있지 않을까요!?
여기서 조금 더 생각해보면 분할 압축이라고 한다면 동일한 크기로 나눠서 압축을 하게 될 것입니다. 그런데 "파일"의 크기는 vol1.egg의 사이즈의 딱 2배인 것을 볼 수 있습니다.
"파일"을 추출 하거나 또는 [Launch in HxD]를 이용하여 HxD에서 한번 검색해보도록 합시다.
중간쯤에 검색이 하나가 됩니다. 즉, 분할 압축된 2개가 연결된 것으로 보입니다. 우선 검색된 윗부분을 모두 선택한 뒤 파일을 저장해보도록 하겠습니다.
그리고 EGGA가 시그니처로 보이는 부분을 포함하여 마지막 부분까지 선택 후 복사한 뒤 새로운 파일로 저장합니다.
먼저 1,4번 파일과 HxD로 추출한 파일을 같은 폴더에 두고 이름도 정상적으로 맞춰야 합니다. 추출한 파일 중 무엇이 2번이고, 3번인지 알 수 없으니 모두 시도해보면 됩니다.
이후 vol1.egg를 압축 해제하여 정상 압축 해제가 되는지 살펴봅시다. [압축 프로그램이 없다면, 알집/반디집/7z 등 압축 프로그램을 설치 후 압축해제 추천] 압축 프로그램 마다 다르겠으나, 뭔가 압축이 제대로 풀리지 않은 것 같은 경우, 2번과 3번 파일명을 서로 바꾸어서 압축 해제 합니다.
압축은 정상적으로 해제되었다고 생각하였는데 실제로 압축 해제 한 파일을 열어보려니 아래와 같은 에러가 발생합니다.
자! 그렇다면 이 파일이 정상적인 구조를 가졌는지 HxD를 이용해서 살펴봅시다. HxD를 살펴보니 시그니처가 이상합니다. 정상 시그니처 값을 넣어서 수정해보도록 합시다. (시그니처를 모르겠으면 xlsx 를 생성하여 시그니처를 살펴봅시다.)
아래와 같이 그림 시트에서도 그림이 깨지지 않고 정상적으로 보인다면 정상 복구가 된 것입니다.
빈도가 높은 문제는 아니며 파일만 잘 찾는다면 구조를 살펴 본 뒤 해결 가능한 문제입니다. 다만 분할 압축파일을 파일명 변경 등으로 숨길 경우 시나리오나 개인 폴더 등으로 의심되는 폴더에 파일이 위치할 수 있을 것입니다.
NTFS 파일시스템 $LOGFILE, $LogFile, $IUsnJrn:$J과 $MFT 메타데이터를 분석하는 것으로 문제 풀이에 활용되는 빈도가 높은 문제는 아니나 가능하면 한번씩은 꼭 해보기를 권장합니다.
NTFS 파일시스템의 파일명 변경 이력 및 경로 변경 이력등을 확인해볼 수 있습니다. 다만, $LogFile의 특성상 오래된 이력은 발견되지 않을 수 있으나, 실제 시험에서는 충분히 활용 가치가 있는 분석 방법 입니다. EnCase나 Autopsy에서는 NTFS LogFile을 분석하거나 보기 편하게 해주는 기능이 기본으로 탑제된 게 아니다 보니 실제 시험장에서도 전용 도구인 NTFS Log Tracker를 이용하는 것이 좋습니다.
파일시스템이 NTFS 에서만 분석이 가능하며, NTFS 파일시스템의 최상위 루트와 Extend 폴더에서 아래 메타데이터 파일을 추출합니다.
NTFS 최상위 루트 $LogFile , $MFT
/Extend/$UsnJrnl:$J
/Extend/$UsnJrnl:$J 꼭 $J가 붙은 파일을 추출해야 합니다. 다만 $UsnJrnl:$J의 경우 기본적으로 활성화 되지 않기 때문에 없을 수도 있습니다.
[FTK Imager에서도 추출할 수 있습니다.]
FTK Imager에서 추출한 경우 파일 속성정보가 숨긴 상태 그대로 추출되기 때문에 실제로 추출 되었는데 안보일 수 있습니다. 숨긴 항목 체크를 하여야 탐색기에서 확인됩니다.
NTFS Log Tracker를 실행 한 뒤 메타데이터 파일을 맞게 불러옵니다. 이후 Parse를 클릭합니다. 이후 분석 결과를 저장할 db 파일명과, 경로를 지정합니다. (결과를 저장할 파일 경로입니다.)
Search 기능을 이용해서 파일명을 검색 할 수 있고 Event 에서 파일 관련 내역 등을 검색할 수 있습니다. 검색 결과는 (Search Result) 탭에서 따로 확인이 가능합니다.
위에서 Event를 rena 로 한 이유는 LogFile 에서 파일명 변경은 Renaming 으로 검색되고 UsnJrnl에서는 Renamed 검색 되기 때문입니다. [$LogFile(Search Result)] $LogFile(Search Result) 에서 Detail을 살펴보면 무엇이 무엇으로 변경되었는지도 확인이 되며, 경로도 확인됩니다. Target VCN이 동일한 경우 사실상 같은 파일/디렉토리로 봐도 무방합니다.
[$UsnJrnl:$J(Search Result)] LogFile 없을 경우 UsnJrnl:$J에는 남아 있을 수 있습니다. 위에서 발견한 것과 동일한 내역이 남아 있습니다. FileReferenceNumber가 동일한 경우 같은 파일/디렉토리로 보면 됩니다.
$LogFile의 경우 앞의 데이터를 덮어쓰는 구조로 오래된 이력은 남아 있지 않을 수 있습니다. 자주 출제된 것은 아니지만 시험에서 파일명 변경된 이력을 묻는 문제가 출제되었습니다. *실제 시험에서는 파일명을 검색해보시는 것을 추천합니다.
[참고] $MFT가 없을 경우에도 분석은 가능하나, 상세 경로가 나오지 않을 수 있습니다.
아래와 같은 구조로 되어 있을 것으로 예상됩니다.
NTFS Log Tracker - 제작 블로그: (하단에 다운로드 링크 있음) - 프로그램 다운로드 > (공식) >공식 다운로드가 잘 안될 경우 아래 링크 다운로드