Digital Forensics/X-Ways2020. 12. 1. 23:09
반응형

1.     File Header 이용한 Carving

특징적인 파일 헤더 시그니처(바이트 값의 특정 순서)로 인식할 수 있는 파일을 검색한다.

파일시스템 구조에 의존하지 않기 때문에, 삭제된 파일도 Carving이 가능하다.

 

Tools - Disk Tools - File Recovery by Type

 

 

 

파일 헤더 시그니처를 기반으로 발견된 파일은

아무 곳에나 저장되지 않고 볼륨 스냅샷의 전용 가상 디렉터리에 목록화된다.

 

즉, 파일에 대한 참조만 저장된다(임의로 붙인 이름, 추정 크기, 시작 오프셋 등).

파일 내용은 파일을 보거나 복사하는 경우, 원본 디스크/이미지에서 즉시 읽는다.

필요시, 해당 파일들을 추출하여 별도의 저장공간에 저장 가능하다.

 

 

2.    Refine Volume Snapshot을 이용한 Carving

 

※ 참고사항 :

이미 Volume Snapshot 통해 복구/분석된 파일은 free space에서 제외되므로,

오히려 disk tools 이용한 것보다 결과가 적을 있다.

그러나 X-ways 이용해 계속 분석한다면,

어차피 Volume Snapshot 이용해 분석하는 것이므로 강력하다고 있다.

필요에 따라 구분하여 사용해야 한다.

 

(1) Operations at the disk/poartition level

- File header signature search를 선택하면

위와 같이 파일 헤더 시그니처를 이용한 카빙이 된다.

 

카빙된 파일은 Path unknown 폴더에 저장된다.

 

즉, Refine Volume Snapshot은 증거 객체를 추가적으로 분석하여

Volume Snapshot에 더 많은 데이터를 추가하는 것이다.

위와 같이 다양한 옵션으로 추가 분석을 수행한 후,

그 분석 결과를 Volume Snapshot에 저장한다.

  

c.f) X-ways Snapshot 기능을 이용하여 분석 Case를 저장한다.

이를 초기화하려면, Take New Volume Snapshot 기능을 이용하면 된다.

 

 Volume Snapshot은 X-wauys에서 가장 중요한 기능 중 하나다.

EnCase의 Evidence Processor와 유사하다.

반응형
Posted by CCIBOMB
반응형

 

○ 목차


1. 의의


2. 이론
2-1. FILE의 개념
2-2. 파일 시스템의 FILE 관리 by “inode” !!
2-3. “inode”에 대하여 더 알아보자
2-4. EXT2 파일시스템 구조 분석


3. 실습 – 삭제된 파일 복구하기
3-1. Bitmap 에서 inode 를 사용한다(1) 표시된 경우
3-2. Bitmap 에서 inode를 사용않는다(2) 표시된 경우
3-3. inode 가 남아있지 않는 경우
- Data Carving (Sleuthkit tool, Keyword Searching)

4. 참고문헌

반응형
Posted by CCIBOMB
Digital Forensics/Linux2010. 3. 16. 02:30
반응형

3-3.  inode 가 남아있지 않는 경우 (Data Carving)

 

위의 3-2처럼 ils icat 가지고 복구할 수 없는 경우가 있다. inode table 자체가 깨진 경우이다. 이에 해당하는 경우에 사용할수 있는 방법이 있다.

바로 carving 기법이다. carving 이란 inode 가 남아있지 않아 복구가 복잡해졌을 때 쓰는 방식으로, 여러가지 기술이 있다.

예를 들자면, 파일의 signature를 통해 파일의 시작점을 찾을 수 있다.  jpeg의 경우 처음이 FF D8이고 끝부분(trailer) FF D9이다. 파일의 끝점까지 찾아서 해당 부분을 dump를 뜨는 것이 가장 완벽한 방법이나, 끝점을 찾는 것은 매우 힘들다. Jpeg과 같이 끝점에도 signature가 있는 경우는 거의 없기 때문이다. 따라서 size 정보 또는 파일의 최대 size를 이용하여 시멘트 카빙을 한 후 유의미한 data만 추출하는 방법을 사용한다.

시멘트 카빙의 경우 data가 연속배열 되어 있지 않으면 유의미한 결과를 얻을 수 없으나, 최근 hdd 용량의 대량화로 대부분 연속배열 되어있기 때문에 유용하게 사용가능하다.

 

이해를 돕기 위해, 직접 file 형태로 된 shell script 를 모두 복구해보는 예제를 들어보겠다. 위에서 실습을 위해 다운로드 받았던 이미지 파일 5(honeypot.hda5.dd )로부터, 로그 파일을 조작한 후 삭제된 shell script를 복구해보겠다.

따라해보며 개념을 익히기 바란다.

 

 

 

3-3-1. Data Carving 시 사용할 Tool 설명


        i. fsstat : Block
사이즈 살펴보기


       ii. sigfind : 디스크 상에서 signature를 포함한 Block을 찾는 툴

<사용법>  sigfind -o (offset) -b (block size) signature image위치

 

eg. sigfind BR 찾기 (BR signature 511, 512 번째에 '55 AA')


     iii. blkcat :
해당 Block Dump 하는 툴

(script 가 한 개 블록임을 가정한다. 넘어가면 짤린다.)

eg. blkcat honeypot.hda5.dd 3698    // 3698Block 스크립트를 보여준다.



iv. sigfind blkcat 툴을 사용하기 위해서는 sleuthkit 을 설치해야한다.

1.    Sleuthkit Tool download 받는다.



 

            2. 압축을 풀어 INSTALL.txt 파일을 열어본다.

 

3.    그대로 따라하며 설치한다.

 



 
3-3-2.
로그파일 수정한 Shell Script 복구하기

(Sleuthkit SIGFIND, BLKCAT Tool을 활용)

 

*. sigfind, blkcat 툴을 사용하여 shell script 파일을 싹 다 복구한 후, 로그파일을 수정한 script만 찾아내보도록 하겠다.

-> 만약 이 방법으로 나오지 않는다면, script 가 파일로 존재 하지 않는 것이므로 keyword searching 을 하는 수밖에 없다.

 

i. 각 이미지의 Block Size를 추출하는 쉘코드 작성 (Sigfind Tool 사용시 Block Size를 알아야 하기 때문)



 

ii. 추출한 fsstatdata Block Size 확인


//   honeypot.hda1.dd Block Size : 1024
      honeypot.hda5.dd Block Size : 4096

      honeypot.hda6.dd Block Size : 4096
     
honeypot.hda7.dd Block Size : 1024
      honeypot.hda8.dd Block Size : 1024 

  

iii. honeypot.hda1.dd 등에 있는 모든 script 파일을 dump

             (sript 파일의 사이즈가 하나의 Block을 넘어가지 않는다고 가정하며,
              Sleuthkit sigfind blkcat Tool을 사용하도록 한다.)


 


 

script 여부 확인 방법 : sigfind를 통해 script 파일의 맨앞 (#!/bin/sh or #!/bin/bash) 4byte 23212f62('#!/b'16진수 변환.)까지를 시그너춰로 보자. (sigfind signature 4 byte까지밖에 못준다.)

c.f) 16진수 변환 방법 : echo '문자' | xxd : 출력 중 0A는 엔터임

 

 

 

iv. 파일 복구 Shell Script 완성본!!

 쉘스크립트 파일이면서 var/log/message (로그파일 저장) 문자열을 포함하는 파일을 추려서 저장하는 기능 추가

<shell script>

#!/bin/sh

 

for i in 1 5 6 7 8            //  honeypot.hda$i.dd 로 파일 다섯개를 한번에 처리하기 위한 i 변수 지정

do

mkdir dumphda$i       //  dump shell script 를 저장할 폴더만들기

fsstat honeypot.hda$i.dd | egrep "Block Size" | awk -F ': ' '(1){print $2}'|\

//  fsstat으로 이미지 파일마다 다른 block size의 확인 후 해당부분 추출 (sigfind에서 써야함)

while read blocksize

//  변수 blocksize fsstat을 통해 추출한 이미지 별 block size 정보 넘김

do

sigfind -b $blocksize 23212f62 honeypot.hda$i.dd | awk -F ' ' '(1){print $2}' |\

while read blocknum

//  sigfind tool signature '#!/b'로 설정하여 찾은 block number 를 변수 blocknum에 넘김

do

blkcat honeypot.hda$i.dd $blocknum >> dumphda$i/$blocknum.txt

//  blkcat tool로 해당 이미지의 script가 위치한 block blocknum.txt dump

if cat dumphda$i/$blocknum.txt | grep '/var/log/message' ;then

cp dumphda$i/$blocknum.txt realhda$i/$blocknum.txt

//  blocknum.txt 파일 중 '/var/log/messages' 내용이 있는 파일을 찾아서 추출

fi

done

done

done

<그림 27. /var/log/message 문자열 포함 Shell Script 추출>

 

v. iv Shell Script 실행 결과 :


         hda5(/usr) 이미지에 일치하는 파일 1개 존재 확인


 
    hda8(/ : root) 이미지에도 일치하는 파일이 1개 확인

 

 

  

vi. 찾은 공격 스크립트 (1 block 에 해당하는 script 만 찾음)

 

반응형
Posted by CCIBOMB