LFN(Long File Name)
root directory 나 sub directory entry에서는 기본적으로 SFN으로(파일의 이름이 8자 이하)로 생성된다.
8자 이상의 이름을 가진 파일은 LFN이라는 정보를 entry에 같이 가지고 생성이 된다.
00 |
01 |
02 |
03 |
04 |
05 |
06 |
07 |
08 |
09 |
10 |
11 |
12 |
13 |
14 |
15 |
Order |
name 1 |
Attribute |
Type |
checksum |
name2 |
||||||||||
name2 |
first cluster low |
name 3 |
| Offset | 길이(byte) | 설명 |
Order | 0x01 | 1 | LFN은 01 부터 순차적으로 증가 하며 마지막은 0x40 | 0x0n 을 한 값이다. |
Name1 | 0x02 | 9 | 1~5번째 문자열 |
Attribute | 0x0B | 1 | 0x0F로 고정 (0F는 LFN을 나타냄) |
Type | 0x0C | 1 | 일반적으로 0x00 으로 채워짐 |
Checksum | 0x0D | 1 | 해당 LFN과 대응되는 Short Directory Entry의 Checksum 을 저장 |
Name2 | 0x0E | 12 | 6~11번째 문자열 |
First Cluster Low | 0x1A | 2 | 반드시 0이 들어간다. |
Name3 | 0x1C | 4 | 12~14번째 문자열 |
※ Checksum 값을 구하는 원리
123456~1TXT 라는 SFN값이 있을경우
1 2 3 4 5 6 ~ 1 T X T |
▶ ASCII 값 이진수로 |
0011 0001(49) 0011 0010(50) 0011 0011(51) 0011 0100(52) 0011 0101(53) 0011 0110(54) 0111 1110(126) 0011 0001(49) 0101 0100(84) 0101 1000(88) 0101 0100(84) |
▶ 첫번째 값 오른쪽 shift |
0001 1000 0011 0010 0011 0011 0011 0100 0011 0101 0011 0110 0111 1110 0011 0001 0101 0100 0101 1000 0101 0100 |
▶ 두번째 이진수와 합산 |
0001 1000 +0011 0010 ────── 0100 1010 0011 0011 0011 0100 0011 0101 0011 0110 0111 1110 0011 0001 0101 0100 0101 1000 0101 0100 |
▶ 결과값을 오른쪽 shift | ........ | 마지막 결과값이 check sum = 9a |
entry에서 LFN의 모양을 보면 맨 밑에 SFN으로 '이름생략~1확장자' 모습으로 나타나며 그 위에 LFN얹어지는 모양이다.
이름이 길 수록 LFN의 시작 비트가 01, 02 ,03 .... 마지막에는 40|0n 으로 나타난다.
아래의 그림에서는 02가 마지막이므로 40|02 = 42 가 나온다.
실습. 1 수작업으로 파일 생성해보기
직접 파일을 생성하기 위해 FSinfo, Directory entry , FAT를 수정하도록 하겠다. FSinfo 에는 빈 클러스터에 대한 정보가 들어있는데, 현재 비어있는 클러스터가 얼마나 되는지, 다음에 사용할 빈 클러스터는 무엇인지 나타내고 있다. 파일을 생성하면 클러스터를 사용하기 때문에 이부분에 영향을 미칠것이다. Directory Entry 이름 생성날짜, 생성시간, 수정날짜, 접근날짜, 파일의 내용이 잇는 클러스터, 파일의 크기 등의 정보를 확인 할 수 있다. 파일의 내용을 제외한 기타 정보가 대부분 정의 되는곳이기 때문에 파일 생성 및 수정 삭제에 대한 관할을 한다. FAT는 파일에 대한 클러스터 할당 정보를 약식으로 보여준다. 어디서 부터 어디까지가 하나의 파일이고 클러스터를 얼마나 사용 하는지 등의 정보를 확인 할 수 있다. 이곳 역시 파일의 존폐 여부에 따라 영향을 받는곳이기 때문에 수정을 해줘야 한다. Date Area의 파일에 해당하는 Cluster에서 파일의 내용을 작성해 주면 된다. (각 위치는 2017/04/28 - [NCS보안/디지털포렌식] - 170428 FAT32 에서 확인 가능.) |
FSinfo는 VBR의 다음에 있다. RRaA로 시작하는 모습을 보인다.
남은 클러스터와 다음 사용될 클러스터가 명시되 있다. 파일을 생성하려면 사용할 클러스터에 맞게 변동해 주어야 한다.
남은 클러스터는 줄어들고 다음 사용 될 클러스터의 값은 늘어날것.
Directory Entry의 형식에 맞게 파일의 내용을 입력해준다.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 |
Name | Extender | Attribute | NT Resource | CTT | CreateTime | ||||||||||
Create Date | Last Access Date | First Cluster High | Write Time | Write date | First Cluster Low | File Size |
Offset | 길이(byte) | 생성할 파일의 정보 | |
Name | 0x00 | 8 | HACK |
Extender | 0x08 | 3 | TXT |
Attribute | 0x0B | 1 | 20 (일반 파일) |
NTResource | 0x0C | 1 | 00 |
Create Time Tenth | 0x0D | 1 | 00 |
Create Time | 0x0E | 2 | 23:59:59 |
Create Date | 0x10 | 2 | 2000/12/31 |
Last Access Date | 0x12 | 2 | 1998/11/10 |
First Cluster High | 0x14 | 2 | 00 00 |
Write Time | 0x16 | 2 | 15:30:12 |
Write Date | 0x18 | 2 | 1999/9/30 |
First Cluster Low | 0x1A | 2 | 13 00 |
File Size | 0x1C | 4 | 14 00 |
FAT에서는 생성할파일의 내용이 할당될 클러스터만큼 매칭시켜 수정하면된다.
(00 00 00 00 → FF FF FF 0F)
▼
지금 생성할 파일은 하나의 클러스터만을 사용하기 때문에 바로 EOC를 써주면된다.
만약 여러개의 클러스터를 사용해야할 크기의 파일이라면 그만큼의 클러스터를 할당 해 주는 식으로 수정하면된다.
Data Area에서 작성한 파일이 사용할 클러스터 부분으로 가서 내용을 작성하자.
Directory Entry에서 확인해보면
high : 00 00
low : 13 00
high + low = 0x13 = 19
(19-2)*4 = 68sector
Directory Entry + 68 = 8320 + 68 = 8388
해당 섹터에서 내용 작성.
파일의 이름, 내용, 수정시간, 접속시간, 생성시간등 의도한대로 파일이 만들어 졋다.
내용이 'This File is Created' 까지 밖에 나오지 않는 이유는 Diretory Entry에서 마지막 부분에 파일의 크기를 20만 주었기 때문에 20글자만 가지고 오는 모습을 볼 수 있다. 이렇게 크기를 지정해주는 이유는 쓰레기값이 있을경우 파일을 구성하기위해 필요한 데이터와 쓰레기값(이전에 사용되던 삭제된 파일의 잔여정보) 을 구분하기 위해서 일것이다.
'Kitri_NCS3기 보안과정 > 디지털포렌식' 카테고리의 다른 글
170511 타임라인분석 (0) | 2017.05.11 |
---|---|
170511 FAT32 복구 실습 (0) | 2017.05.11 |
170428 FAT32 (0) | 2017.04.28 |
170427 사고대응과 분석 실습 (0) | 2017.04.27 |
170426 NTFS 에서 MBR , VBR 복구해보기 (1) | 2017.04.26 |