Security & Forensic

반응형

Superfetch 분석


프리패치의 사용은 메모리의 페이징 아웃 기법(오래 사용되지 않는 메모리 영역을 잠시 보조저장장치의 페이지 파일로 이동시켜 메모리 공간을 확보하는 기술)에 의해 제 기능을 못할 때가 있다. 정작 운영체제가 미리 로딩해 놓은 프리패치 파일이 페이징 아웃 되버리면 다시 응용프로그램을 실행할 때 보조 저장장치의 페이지 파일(pagefile.sys)로부터 로딩을 해야 하는 모순이 생기는 것이다.


성능을 높여보자고 메모리에 올려놓았는데 운영체제가 다시 페이지 파일로 이동시켜 다시 파일에서 읽는 꼴이 되어 버리기 때문에 기대했던 성능 향상은 미비할 수 밖에 없다.


이런 점을 보완하고자 윈도우 Vista 부터는 슈퍼패치 파일에 사용자의 사용 패턴을 기록해두고 자주 사용하는 프로그램의 프리패치 데이터가 페이지 아웃(page-out)될 경우 이를 다시 메모리로 페이지 인(page-in) 시키는 기능을 수행한다.

 

사용자가 오전에 컴퓨터를 부팅하고 실행하는 프로그램과 점심 먹고 실행하는 프로그램, 업무 시간 이후에 실행하는 프로그램은 다를 것이다. 슈퍼패치는 시간 대를 나누어 자주 사용되는 프로그램 목록을 관리하고 이렇게 관리되는 프로그램은 페이지 아웃이 일어나지 않도록 도와준다.

 

슈퍼패치의 설정은 프리패치와 마찬가지로 다음 레지스트리에서 가능하다.
Key: HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Value: EnableSuperfetch
0: 비활성화
1: 부트 파일만 슈퍼패치
2: 응용프로그램만 슈퍼패치
3: 부트 파일와 응용프로그램 둘 다 슈퍼패치

하지만 레지스트리 설정보다 우선 하는 것이 슈퍼패치 서비스이다. services.msc 명령을 이용하면 “Superfetch”라는 이름의 서비스, Window 10 RS5 업데이트 이후에는 sysmain을(를) 확인할 수 있다. 슈퍼패치를 종료하고 싶다면 해당 서비스를 중지시켜야 한다. 다만, 해당 서비스를 중지하면 프리패치 서비스도 중지되므로 유의하자.

 

최근 파일리스(fileless) 악성코드가 자주 나오고 실행흔적을 지우는 안티포렌식 기법이 일반화되고 있는 시점에 메모리에 매핑된 파일 목록은 조사에 큰 도움이 될 수 있다. 앞으로는 프로그램 실행 흔적을 판단할 때 슈퍼패치를 꼭 활용하도록 하자.


슈퍼패치 파일은 프리패치 폴더 존재하는데 “Ag”의 접두어어와 “.db”의 확장자를 가진 압축파일과 비압축 파일로 존재한다. 
압축과 비압축 파일은 각각 아래와 같다.

파란색은 비압축 파일로 TRX 파일이라고 하며 빨간색은 압축 파일이.


SuperfetchList.exe 및 SuperFetch.exe Tools

C:\>dir /a-d %windir%\prefetch\*.db

C:\>SuperfetchList.exe /a > c:\temp\SuperFetch.lst

C:\Dropbox\DFIR\Window\Behaviour\Scripts>SuperFetchDumpall.bat

 

<SuperFetchDumpall.bat>

del /S *.unp
del /S *.txt
for /R %%c in (*.db) do C:\Tools\SuperFetch.exe %%c > %%c.txt

CrowdResponse Tool

운영체제 아키텍처를 선택할 수도 있고 폴더를 지정해서 분석할 수도 있다. 기본으로는 현재 시스템의 슈퍼패치 정보를 분석해준다. 분석 결과는 기본 XML로 출력이 된다. XML 출력을 CSV, HTML 등의 형태로 변경하고 싶으면 함께 제공되는 CRconvert 도구를 이용하면 된다.

 

CrowdResponse 도구에서는 다음과 같은 정보를 분석해준다.
* 기본 시스템 정보
* 메모리에 매핑된 파일 목록
* 실행 프로세스명
* 프로그램 경로
* 실행 횟수
* 포그라운드 횟수(?)
* 프로그램 동작 기간
* 프로그램 실행 시간(?)

명령어 예제

C:\Tools\CrowdResponse>CrowdResponse.exe @superfetch /?

C:\Tools\CrowdResponse>CrowdResponse.exe @superfetch -3 > f:\temp\superfetch.xml

 

C:\Tools\CrowdResponse>CrowdResponse64.exe @superfetch /?

C:\Tools\CrowdResponse>CrowdResponse64.exe @superfetch -6 > f:\temp\superfetch.xml


F:\temp>F:\tool\forensic\CrowdResponse64.exe @superfetch -6s f:\test\superfetchs > f:\temp\superfetch.xml 
F:\temp>dir f:\temp\superfetch.xml
2020-03-05  오전 09:48         1,437,118 superfetch.xml

 

F:\temp>type f:\temp\superfetch.xml

xml 결과 파일을 csv로 변환
F:\tool\forensic\CrowdResponse>CRConvert.exe -f "f:\temp\superfetch.xml" -c  [-o f:\temp\superfetchcsv]
실행을 하고나면 아래와 같이 csv 파일 4개가 출력 됩니다. 
F:\tool\forensic\CrowdResponse>dir f:\temp\superfetchcsv
2020-03-05  오전 10:03               445 CrowdResponse_log.csv <- superfetch 서비스 동작 정보
2020-03-05  오전 10:03             3,276 CrowdResponse_superfetch_appentries.csv
2020-03-05  오전 10:03           644,170 CrowdResponse_superfetch_perioddata.csv
2020-03-05  오전 10:03               490 CrowdResponse_system.csv <- 시스템 기본 정보 수집

 

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

반응형