본문 바로가기

Kitri_NCS3기 보안과정/디지털포렌식

FAT32(LFN의 개념과 HxD에서 파일생성하기)


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 

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 

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 


주의할 부분은 First cluster high/low 값을 FSinfo에서 가리킨 사용할 클러스터부분에서 파일의 내용을 읽어오도록 내용을 입력해줘야함.





Offset

길이(byte) 

생성할 파일의 정보

Name 

0x00

 HACK

 Extender

0x08

 TXT 

Attribute 

0x0B

 20 (일반 파일)  

NTResource 

0x0C

 00 

Create Time Tenth 

0x0D

 00

 Create Time

0x0E 

2 

 23:59:59 

Create Date 

0x10

 2000/12/31 

 Last Access Date

0x12 

 1998/11/10 

 First Cluster High

0x14 

 00 00

Write Time 

0x16 

 15:30:12

Write Date 

0x18 

 1999/9/30

First Cluster Low 

0x1A 

 13 00  

File Size 

0x1C 

 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