ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Digital Forensic Challenge 2019 IR100
    $ 포렌식 $/$ 포렌식 문제 풀이 $ 2020. 3. 28. 00:27

     

    문제를 확인해 보면 다음과 같습니다.

     

    문제를 기반으로 문제 풀이를 진행 하겠습니다.

     

    mft.zip 파일을 압축 해제 하면 $MFT 파일을 찾을 수 있습니다.

    $MFT 파일을 가시적으로 보기 쉽도록 .csv 파일로 변환 해주는 analyzeMFT.exe 툴이있습니다.

     

    MFT.csv로 변환했기 때문에 한번 $Recycle.bin 파일을 찾아 보겠습니다.

     

    총 25개의 $Recycle.Bin 문자열이 포함된 Filename을 찾았습니다.

     

    그중 가장 눈에 띄는 것이 $Recycle.Bin/7.exe 입니다.

     

    기본적으로 $Recycle.Bin 폴더는 윈도우 운영체제에서 사용되는 휴지통을 의미 하는데, 사용자가 삭제를 했을 때 휴지통에 데이터가 들어가게 됩니다.

    그렇게 되면 다음과 같은경로로 데이터가 들어가게 됩니다.

     

    \$Recycle.Bin\{USER SID} 의 경로 하위에 데이터가 들어가게 되는데, $Recycle.Bin/7.exe 라는 경로에 데이터가 있다는 것은 파일 삭제의 방식이 아닌 직접  생성된 파일 이라는 것을 알 수 있습니다.

     

    또한 실제로 $Recycle.Bin\{USER SID} 하위가 아닌 $Recycle.Bin 하위에 데이터 파일을 은닉 시킨 악성코드 사례도 존재 했습니다.

    악성코드 선호 경로(Malware Favorite Path) :  http://forensic-proof.com/archives/6520

     

    그렇기 때문에 해당 파일이 악성코드일 가능성이 매우 큽니다.

     

    해당 $MFT 파일을 Active@ Disk Editor 툴을 이용해서 파일을 분석해 보겠습니다.

    [ 전체 구조확인은 Active@ Disk Editor을 사용하고 세부 분석은 010 editor를 이용하겠습니다. ]

     

    $Recycle.Bin\7.exe 파일의 시작 레코드는 141268 입니다.

    $MFT 파일에서 위치(offset)를 찾기 위해서는 레코드 번호 * 1024  = 144658432( 0x89F5000 ) 에 위치 합니다.

    $MFT 파일에서 해당 섹터를 찾기 위해서는 레코드 번호 * 2 = 282536 섹터 에 위치합니다.

    (1024를 곱하는 이유는 MFT 엔트리 크기가 1024(2섹터)로 고정 되어 있기 때문에)

     

     

    기본적으로 MFT Entry Header 구조를 확인해 보겠습니다.

    0x00 ~ 0x03 : Signature ("FILE")

    0x04 ~ 0x05 : Offset to fixup array

    0x06 ~ 0x07 : Number of entries in fixup array

    0x08 ~ 0x0F : $LogFile Sequence Number (LSN)

    0x10 ~ 0x11 : Sequence Number

    0x12 ~ 0x13 : Link count

    0x14 ~ 0x15 : Offset to first attribute

    0x16 ~ 0x17 : Flags (in-use and directory)

    0x18 ~ 0x1B : Used size of MFT entry

    0x1C ~ 0x1F : Allocated size of MFT Entry

    0x20 ~ 0x27 : File reference to base record

    0x28 ~ 0x29 : Next attribute id

    0x2A ~ 0x2B : Align to 4B boundary

    0x2C ~ 0x2F : Number of this MFT Entry

     

    이 중 중요한 내용은 아래와 같습니다. 

    - Offset to fixup array : fixup 배열(연속된 fixup 값)의 시작 위치

    - Sequence Number : 해당 MFT 엔트리가 할당, 해제될 때마다 1씩 증가하는 값

    - Offset to first attribute : 첫 번째 속성의 위치

    - Flags :  MFT 엔트리의 속성

    - Used size of MFT Entry : 실제 사용되는 크기

    - Allocated size of MFT Entry : MFT 엔트리 크기 (1024 바이트)

    - File reference to base record : base record의 MFT 엔트리 주소 값

     

     7.exe 파일의 구조를 살펴 보겠습니다.

     

    해당 7.exe 파일은 아래와 같은 데이터를 담고 있습니다.

     

    7.exe 파일에서는 $10, $30, $80 이 있기 때문에 $STANDARD_INFORMATION, $FILE_NAME, $DATA 를 다루고 있습니다.

     

    $10에는 파일의 최근 생성, 접근, 수정 시간, 소유자 등의 일반적인 정보가 포함되어 있습니다.

    $30에는 파일이름(유니코드). 최근 생성, 접근, 수정 시간이 포함되어 있습니다.

    $80에는 파일 내용이 있습니다.

     

    Attribute $10 ($STANDARD_INFORMATION) 의 데이터를 확인해 보겠습니다.

     

    위의 박스는 Attribute $10의 헤더 부분이고 아래의 박스는 Attribute $10 에 들어있는 실질적인 데이터 들이 담겨 있습니다.

     

    Attribute $30 ($FILE_NAME) 의 데이터를 확인해 보겠습니다.

     

     

    마지막으로 Attribute $80 ($DATA) 를 확인해 보겠습니다.

     

     

    댓글

Designed by Tistory.