ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 슈퍼패치 파일 분석(Superfetch File Analysis)
    $ 포렌식 $/$ 포렌식 기술적 이론 $ 2019. 11. 11. 11:19

    Superfetch File 이란?

     

    프리패치 파일(Prefetch File)의 문제점을 개선하기 위해서 만들어진 파일입니다.

     

    프리패치 문제점

    - 프리패치는 응용프로그램 실행 전 미리 메모리에 로딩하는 기술입니다. -> 메모리를 이용한 빠른 실행의 목적을 가진 파일

    - 메모리의 한계로 인해서 메모리에 로딩된 프리패치 데이터는 페이질 파일로 이동하게 되었습니다.

    - 다시 응용프로그램 실행시 페이징 파일부터 로딩을 시작하기 때문에 성능 저하를 불러오게 됩니다.

     

    위처럼 프리패치 파일(Prefetch File)에 있어서 문제점이 발생하게 되서 슈퍼패치 파일(Superfetch File)이 등장을 하게 됩니다.

     

    슈퍼패치 파일(Superfetch File) 개선점

    - 사용자의 프로그램 사용 패턴(얼마나 자주, 언제, 얼마 동안) 추가적인 파일에 기록/추적-

    - 프리패치 데이터가 페이징된 후에 해당 프로그램이 종료 되면 이를 감지해서 페이징된 데이터를 다시 메모리에 로드 시킵니다.

    또한 자주 사용하는 프로그램일 경우에는 지속적으로 빠른 로드를 위해서 메모리에 로드 시킵니다.

     

    슈퍼패치 파일(Superfetch File)의 저장 경로는 프리패치 파일(Prefetch File)과 동일하게 %System%Prefetch 폴더에 있습니다.

     

    슈퍼패치 파일(Superfetch File)을 생성하기 위해서는 2가지의 작업을 해야합니다.

     

    1. 서비스(Services.msc)에서 Superfetch 라는 서비스를 구동 시켜야 합니다.

     

    2. 레지스트리를 활성화 시켜야 합니다.

     

    위의 레지스트리의 값이 3이어야 합니다.

    레벨 0 : 비활성화

    레벨 1 : 응용 프로그램 프리패칭만 사용

    레벨 2 : 부트 프리패칭만 사용

    레벨 3 (기본) : 응용/부트 프리패칭 모두 사용

     

     

    Superfetch File Structure

     

    파일명은 Ag라는 접두어와 .db 라는 확장자를 가지고 있습니다.

    TRX 라는 파일이 존재합니다.

     

    압축과 비압축 파일이 나뉘어 지는데 아래와 같습니다.

     

    파란색을 비압축 파일이라고 하고 이를 TRX 파일 이라고 합니다.

    빨간색을 압축 파일이라고 합니다.

     

    압축 파일의 구조는 아래와 같습니다.

    압축파일인 AgGIFaultHistory.db 를 가지고 분석했습니다.

     

    시그니처 : 0x4D454D30 ("MEM0")

    압축 해제 크기 : 0x235518

    압축 데이터 시작 위치 : 0x08

    압축 데이터 블록 시작 값 : 0xB### (각 블록 마다)

    ### : 압축 데이터 블록 크기

     

    슈퍼패치 파일은 Superfetch Service Host(sysmain.dll)에 의해서 동작하게 되는데 sysmain.dll이 참조하는 ntdll.dll 파일의 임포트 함수를 살펴 보면 다음과 같이 압축 해제 함수를 확인 할 수 있다고 합니다.

     

    https://github.com/rwfpl/rewolf-superfetch-dumper <- 해당 사이트는 슈퍼패치 파일을 데이터 파싱해주는 툴입니다. 

     

    하지만 파싱만 해주고 분석은 해주지 않기 때문에 CrowdResponse 도구를 이용하면 분석이 쉽습니다.

    CrowdResponse 설치 : https://www.crowdstrike.com/resources/community-tools/

     

    위와 같이 사용방법이 나옵니다. 저는 64bit 운영체제에서 실행을 하기 때문에 -6을 이용해 보겠습니다.

     

    result.xml 파일을 확인해 보면 아래와 같습니다.

     

    위와 같은 데이터가 있지만 보기 쉽지 않기 때문에 csv 파일로 변환 해보겠습니다.

    그러기 위해서는 아까 깔았던 CrowdResponse 도구와 함께 들어있는 CRconvert 도구를 사용해야 합니다.

     

    위의 설명을 잘 보고 자신이 변환하고자 하는 파일로 변환을 하시면됩니다.

    저는 csv 파일로 변환 하겠습니다.

     

    실행을 하고나면 아래와 같이 csv 파일 4개가 출력 됩니다.

     

    CrowdResponse_superetch_appentries.csv 파일을 열어보면 데이터를 확인 할 수 있습니다.

     

    TRX 파일을 한번 확인해 보겠습니다.

    압축되지 않은 파일로 연속된 레코드를 가진 파일을 TRX 파일이라고 하는데 아래와 같습니다.

     

    TRX의 경로를 찾을 수가 없어서 forensic-proof 블로그 에서 가져왔습니다.

    최근에는 파일리스(Fileless) 악성코드가 계속해서 나오고 있고, 실행 흔적을 지우는 안티포렌식 기법이 일반화 되고 있습니다.

    그래서 메모리에 매핑된 파일의 목록은 매우 중요한 정보가 될 수 있습니다.

    그렇기 때문에 슈퍼패치에 있는 데이터를 현명하게 활용해야 합니다.

    댓글

Designed by Tistory.