File System Tunneling

Kail-KM
|2015. 9. 23. 19:51

File System Tunneling


파일시스템 터널링이란 짧은 시간동안 해당 폴더에 삭제된 파일의 이름과 같은 파일을 생성할 경우 생성시간이 유지된다는 개념이다. 기본적으로 시간은 15초이며 이는 FAT와 NTFS에서 기본적으로 지원하는 기능이다.

이는 사실상 두번째로 생성된 파일이 삭제된 파일의 메타데이터(타임스탬프)를 재사용 하는 것이다. 이는 파일이 제거될 때 제거된 파일의 메타데이터는 임시적으로 저장되는데, 이 임시로 저장된 메타데이터는 같은 파일의 이름이 생성될 경우 해당 파일을 가리키며 결국 타임스탬프가 유지된다.


Practice - 1


간단한 실습을 해보자면 아래의 그림과 같이 dir /tc 옵션을 통하여 파일의 생성시간을 확인할 수가 있다. 처음의 file1의 생성시간은 PM 06:33으로 되어있다. 이제 ren 명령어를 통하여 해당 파일의 이름을 file2로 변경하여준다.

그 후 echo > file1을 통하여 새로운 file1을 생성한다. 여기서 파일의 생성시간을 확인하기 위하여 다시 dir /tc 옵션을 줄 경우 기존의 file1의 생성시간과 같다는 것을 확인할 수가 있다. 저 시점에서의 현재시간은 19:23:09.47로 현재 시간이 아닌 기존 파일의 생성시간을 갖는 것을 확인할 수가 있다.


이처럼 새로 생성된 파일이 그 내용 또한 갖고 오는지 확인하기 위하여 확인을 해본 결과, 타임스탬프는 가지고 오지만 해당 파일의 내용까지 가지고 오는 것은 아님을 확인할 수가 있었다.


Practice - 2


이번엔 직접 악성코드가 어떻게 동작할지 예상을 해보기 위하여 파일 시스템 터널링이 어떻게 동작할지 직접 Python을 통하여 코드를 작성해보고 실행해보았다. 가상의 시나리오는 악성코드가 kernel32.dll을 삭제하고 해당 폴더에 다시 같은 이름으로 악의적인 DLL을 설치하는 과정을 가정해보았다.

기존의 kernel32.dll의 data는 "ECHO가 설정되어 있습니다." 이지만 해당 악성코드를 실행후에는 "This is File System Tunneling."으로 변화한 것을 볼 수가 있다. 여기서 생성 시간은 유지되므로 대체적으로 운영체제가 설치될 때의 시간과 같은 생성시간(다른 정상적인 주요 DLL과 같이)을 띄고 있다.


이에 해당하는 코드는 아래와 같다. (...허접하다 참)


Reference


http://forensic-proof.com/archives/4829

'Forensic > Theory' 카테고리의 다른 글

LNK File ( Windows ShortCut)  (0) 2015.09.27
Jump List  (0) 2015.09.27
Web Forensic  (0) 2015.09.19
Covert TimeStamp  (0) 2015.09.18
ADS (Alternate Data Stream)  (0) 2015.09.17