1. LFN 분석
LFN( Long File Name )은 SFN과 달리 파일의 이름을 255자까지 사용할 수 있다.
LFN 파일을 만들기 전에 우선 LFN의 구조부터 알아보자.
Seq Num : Sequence Number로 순서가 있으며, 이 순서대로 파일의 이름을 적용한다. 시작 번호는 0x01이고 마지막 번호에는 0x40이 OR된 값이 오며, 이 값을 보고 마지막 LFN임을 판단한다.
Name 1 : 1~5 번째 문자열을 기록한다. 유니코드로 기록하며 한 문자에 2바이트를 차지한다.
Attribute : 이 값은 항상 0x0F로 고정되어 있다.
Type : 항상 0x00으로 채워져 있다.
CheckSum : 해당 LFN과 대응되는 SFN의 체크섬이 저장된다.
Name 2 : 6 ~ 11 번째 문자열을 기록한다.
First Cluster Low : 반드시 0이 들어간다.
Name 3 : 12 ~ 13번째 문자열을 기록한다.
실제로 파일명이 긴 파일을 하나 생성해 보면 Directory Entry는 다음과 같다.
* 파일은 'HelloMyFriendImp3rio.txt'로 한다.
제일 아래를 보면 SFN이 있고 그 위로 LFN이 오는 것을 볼 수 있다.
그리고 LFN은 위로 가면서 Seq Num이 증가하며 마지막 LFN은 0x42임을 알 수 있다.
우선 이를 분석해 보도록 하자.
SFN을 보면 파일 명이 'HELLOM~1' 임을 알 수 있다. 파일명의 길이가 8자 이상일 경우 파일명의 앞 6자리 + '~1'이 붙는다.
LFN을 보면 처음에 Seq Num이 오고, 2바이트씩 파일명이 온다. 속성 값은 0x0F, Type 값은 0x00 체크섬은 0x8B로 되어 있다.
LFN에서 이 세 값과 First Cluster 값이 다르거나 이상하면 인식되지 않는다.
LFN에서 CheckSum은 SFN을 이용하며 그 방법은 아래와 같다.
① 'HELLOM~1TXT'의 각 문자를 2진수로 표현한다.
② 'H' 문자의 2진수 값을 오른쪽으로 Shift한다.
③ 다음 문자인 'E'의 2진수 값과 더한다.
④ 결과 값을 오른쪽으로 Shift한다.
⑤ ③과 ④를 마지막 문자까지 반복한다.
⑥ 결과 값을 16진수로 표현한다.
* LFN CheckSum을 구하는 프로그램
> 해당 파일은 python 2.7 버전으로 만든 것이다. 실행하면 다음과 같이 결과를 확인할 수 있다.
2. LFN 실습
분석을 한 결과를 응용해서 HxD 에디터로 LFN 파일을 생성해보자.
파일은 'goodbymyfriendImp3rio.txt' 로 한다.
파일을 만들기 위해 수정해야 하는 부분을 살펴보면 다음과 같다.
- FSINFO에서 남은 클러스터 수와 다음에 사용할 클러스터를 수정한다. ( Option )
- FAT #1 수정한다.
- Root Directory Entry에서 SFN과 LFN을 추가한다.
- 실제 데이터가 들어있어야 하는 섹터로 이동해 데이터를 넣는다.
* FSINFO를 수정하는 것은 선택사항이기 때문에 본 실습에서는 하지 않는다.
위의 과정을 수행하면 파일이 생성이 되고 파일을 읽을 수 있다.
하지만 어느 하나 잘못 입력하거나 값이 다르면 LFN으로 인식되지 않는다.
그럼 실습을 해보자.
> FAT #1 을 수정한다.
* FAT #1의 위치는 다음과 같이 찾을 수 있다.
RS( Reserved Sector ) F6 19( Little Endian ) ==> 6,646
Hidden 80 00 00 00( Little Endian ) ==> 128
RS + Hidden = 6,774
> Root Directory를 수정한다.
* LFN에서 CheckSum을 구하기 위해 위 파이썬 파일을 이용한다.
구한 CheckSum 값을 이용해 다음과 같이 수정한다.
* 파일명을 다 입력한 뒤 남은 Name 부분은 'FF'로 채워준다.
데이터를 넣기 위해서 만든 파일의 시작 위치를 구한다.
0E 00 ==> 14
(14-2) * 4( SP ) = 48
8320 + 48 = 8368
8368섹터를 위와 같이 수정한다.
그리고 vhd를 마운트 시켜서 탐색기로 보게 되면 다음과 같이 파일이 존재하는 것을 확인할 수 있고
파일 또한 제대로 열리는 것을 확인할 수 있다.
'NCS보안3기 > 디지털 포렌식' 카테고리의 다른 글
[Forensics] FAT32 데이터 복구 실습 I (0) | 2017.05.13 |
---|---|
[Forensics] 타임라인 분석 (0) | 2017.05.12 |
[Forensics] FAT32 파일 생성( SFN ) (0) | 2017.05.10 |
[Forensics] FAT32 파일추적 및 복구 (0) | 2017.04.29 |
[Forensics] 윈도우 포렌식 분석 (0) | 2017.04.28 |