Security & Forensic

DFIR/사용자 행위 분석 +21
반응형

정보유출 흔적 조사

 

자료 저장 매체를 이용한 부분과 온라인을 이용한 부분으로 나누어 살펴본다. 

두 경우 모두 여러가지 아티팩트를 분석해서 시간적 연관성을 기반으로 수행한다.

 

자료 저장 매체 이용

1) 이동형 매체 사용 흔적

  대상 아티팩트 : 레지스트리/setupapi.log, setupapi.dev.log 파일/이벤트로그
  획득 정보 : 
시간 정보, 마운트 드라이브 정보


usb device view

usb Forensic Tracker

2) 1)에서 구한 USB 사용 시간 전후 파일 접근 이력

  대상 아티팩트 : 저널파일 / 로그파일 / $MFT 파일 / 최근 사용자 행위
  획득 정보 :  파일 정보

 

$MFT
F:\RawCopy>RawCopy64.exe /FileNamePath:c:0 /OutputPath:f:\temp\c-Dir

$LogFile
F:\RawCopy>RawCopy64.exe /FileNamePath:c:2 /OutputPath:f:\temp\c-Dir

$UsnJrnl
F:\ExtractUsnJrnl>ExtractUsnJrnl64.exe /DevicePath:C: /OutputPath:F:\temp\c-Dir

 

3) 드라이브 파일 복사, 이동 이력
  대상 아티팩트 : 저널파일 / 로그파일 / $MFT 파일 / ShellBag / Shellbag MRU
  획득 정보 :  파일 정보
. 특히 1)에서 구한 시간 및 드라이브로의 파일 이동/복사 분석

 

NTFS Log Tracker

Shellbag Analyzer

Last Activity View

특정 시간대 즉 USB 이용 시간대와 비슷한 시간대에 H 드라이브에 접근 했음을 알 수 있다.

 
4) 시간 전후 실행 프로그램 정보

  대상 아티팩트 : 프리패치분석, 프로그램 및 접근파일 정보 / AppCache / ShimCache
  획득 정보 :  응용 프로그램 정보

 

JumpList View

온라인 매체 이용

1) 웹 접속 이력 

  대상 아티팩트 : Web Cache / Chrome History / Last Activity View
  획득 정보 :  
시간 정보, 접속 URL

 

2) 정보 중 "mail" 문자열 포함 URL 분석 

  대상 아티팩트 : Web Cache / Chrome History / Last Activity View
  획득 정보 :  
시간 정보, 접속 URL

 

  웹 메일 통한 정보 유출 분석을 위한 메일 관련 웹 URL 파악

 

IE History View

Chrome History View

3) 정보 중 웹 하드, 클라우드 드라이브 문자열 포함 URL 분석 

  대상 아티팩트 : Web Cache / Chrome History / Last Activity View
  획득 정보 :  
시간 정보, 접속 URL

 

  웹 하드, 클라우드 저장소를 통한 정보 유출 분석을 위해 관련 웹 URL 파악

 

4) 특정 웹 접속 시간 전후 파일 접근 이력
   자료 저장 매체 이용 부분의 2)와 동일

 

Last Activity View

Jump List View


5) 대상 웹 접속 시간 전후 브라우저 캐쉬 분석

IE WebCache 분석
dir c:\webcache*.dat /s /w

tasklist | find /i "taskhost" 또는 tasklist | findstr /i /c:"taskhost"

taskkill /f /im "taskhostw.exe" /t 또는 taskkill /f /im "taskhostex.ext" /t 또는 taskkill /f /im "taskhost.ext" /t
WebCachev__.dat을 붙잡고 있는 부모 프로세스 제거

 

 xcopy /s /c /e /h /i /r /y "%localappdata%\Microsoft\Windows\Webcache\*.dat" C:\test
또는 

xcopy /s /c /e /h /i /r /y "c:\Users\chohb\AppData\Local\Microsoft\Windows\WebCache\*.dat" C:\test
WebCachev__.dat을 C드라이브로 복사

 

esentutl /mh WebCachev__.dat
파일이 Dirty Shutdown 상태인지 확인

 

esentutl /p WebCachev__.dat
Dirty Shutdown --> Clean Shutdown으로 변경

 

nirsoft사의 esedatabaseview나 ESEViewer로 확인

 

참고 : https://secuworld.tistory.com/33

반응형

반응형

Windows Search DB 분석

 

윈도우 검색(Windows Search)은 색인(Indexing)을 사용하여 빠르게 검색할 수 있도록 지원하는 윈도우 운영체제의 기능이며 윈도우 검색에서 기본 색인 대상은 일반 파일을 비롯하여 이메일, 메신저, 웹 히스토리 등의 정보이다.

 

파일명 : Windows.edb <- EDB(Extensible Storage Engine DB) 포맷

파일경로 : C:\ProgramData\Microsoft\Search\Data\Applications\Windows


분석 데이터

* Outlook Mail Data (Time ,Contents)
* OneNote Title
* Internet History (URLs, Last visit time)
* Lnk list
* Network Drive (When adding offline)
* Favorites
* File, Folder Information (Time, Contents(2KB), Path,...)
* Activity History (Recently used programs, Windows 10 Timeline)

 

WinSearchDBAnalyzer Advantages

- WinSearchDBAnalyzer can recovery deleted records.

- WinSearchDBAnalyzer works well on Windows 10.

- WinSearchDBAnalyzer can extract and analyze Windows.edb from live
  system.

- Regardless of status of the file, WinSearchDBAnalyzer can parse any
  file.
(Dirty status is OK)

- WinSearchDBAnalyzer shows more information than the other tools .

  (File categorization by extension, File hierarchy, File Contents)

- WinSearchDBAnalyzer can apply to UTC time.

 

분석

F:\>forecopy.exe -f C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb f:\test

F:\>esentutl.exe /mh f:\test\Windows.edb | findstr /i /c:"state"
            State: Dirty Shutdown

F:\>esentutl.exe /p f:\test\Windows.edb
F:\>esentutl.exe /mh f:\test\Windows.edb | findstr /i /c:"state"
            State: Clean Shutdown

ESEDatabazseView Tool

F:\>ESEDatabaseView.exe /table "f:\test\windows.edb" * /scomma "f:\test\Windowsedb\WindowSearch_*.csv"

F:\>tasklist |findstr /i /c:"ESEDatabaseView.exe"
ESEDatabaseView.exe          24036 Console                    1     31,688 K <- 프로세스 종료 확인

 

WinSearchDBAnalyzer Tool

- 삭제된 파일에 대한 정보 및 파일 내용도 확인 가능

 

- 인덱스된 폴더 및 파일 확인

 

- Web 접속 이력 : http. https

- IE를 통해 다운로드 받은 파일 내역

 

- OutLook 메일 내역

 

- 삭제 파일 내역

반응형

반응형

웹 분석-Chrome

 

아티팩트 저장 경로

Cache

%USERPROFILE%\AppData\Local\google\chrome\user data\default\cache 폴더

 

History
%USERPROFILE%\AppData\Local\google\chrome\user data\default\history 파일

History파일에는 사용자가 방문한 URL 및 접속 시간, 다운로드 내역 등이 기록됩니다. 
Chrome브라우저의 방문기록은 urls 테이블과 visits 테이블에 의해 방문 url과 방문 기록을 분리하여 관리합니다. 
urls 테이블에는 방문했던 사이트 고유의 url들이 저장되고, visits 테이블에는 urls 테이블을 참조하여 방문 이력이 
관리 됩니다. 다운로드 기록은 downloads 테이블과 downloads_url_chains 테이블에 의해 관리되며 downloads에는 
다운로드 받은 파일에 대한 내역이 기록되고 downloads_url_chains테이블에는 다운로드 받은 url들이 기록됩니다.
활용성이 높은 데이터가 들어있는 Table은 downloads, downloads_url_chains, urls, visits가 있습니다.

History DB Table List

downloads Table
다운로드 받은 파일을 관리, 저장경로, 다운로드 시작 시간, 용량 등의 항목이 기록됩니다.


downloads_url_chains Table
다운로드 받은 파일의 원래 URL 관리

 

urls Table 
사용자의 접속 URL을 관리, 접속 URL, 최근 접속 시간, 총 접속 수 등을 기록


visits Table
접속 URL, 접속 시간 등 접속 기록은 urls 테이블을 포함하여 visits 테이블에 저장 

 

keyword_search_terms
크롬 검색 키워드

 

Cookie
%USERPROFILE%\AppData\Local\google\chrome\user data\default\Cookies 파일

쿠키는 일반적으로 웹마다 남기는 형태가 다르기 때문에 그 형식을 정확히 알기란 어렵거나 쿠키를 암호화 등을 통해

관리한다면 정확한 의미나 값을 파악하는게 쉽지 않다.

 

Download

%USERPROFILE%\AppData\Local\google\chrome\user data\default\history 파일

 

Typed URL

%USERPROFILE%\AppData\Local\google\chrome\user data\default\shortcuts 파일

검색어를 포함하여 주소창에서 직접 입력한 후 접근한 사이트. 그러므로 keyword_search_terms 보다 폭넓은
데이터 포함

New Tab

%USERPROFILE%\AppData\Local\google\chrome\user data\default\top sites 파일

최근 접근 Top 10 Web URL


Bookmarks

%USERPROFILE%\AppData\Local\google\chrome\user data\default\Bookmarks 파일
Privacy 관련 자료로 암호화되어 있어 DB를 직접 열 수 없다. 


Visited Link

%USERPROFILE%\AppData\Local\google\chrome\user data\default\Visited Links 파일
Privacy 관련 자료로 암호화되어 있어 DB를 직접 열 수 없다. 


Preferences

%USERPROFILE%\AppData\Local\google\chrome\user data\default\Preferences 파일

백업, 북마크, 브라우저, 검색 엔진, 다운로드, 확장 기능, 플러그인, 세션, 싱크 설정 정보, 클라우드 프린트,
DNS 프리패칭 정보

 

이러한 정보들의 관리 방법이나 경로는 크롬 버전이 달라질 때 마다 변경될 수 있다.


위 정보 중 백업, 북마크, 검색 엔진, 다운로드 설정 정보를 통해서도 사용자의 행위를 프로파일링 해볼 수 있다. 하지만, 특정인의 특징이라고 보기에는 다소 보편적인 내용이기 때문에 효과가 크지 않다. 
반면, 클라우드 프린트, DNS 프리패칭, 줌 레벨은 사용자의 인터넷 사용 패턴을 알려주기 때문에 프로파일링하는데 큰 도움이 된다. 해당 정보는 넓은 의미에서 프라이버시로 볼 수 있지만, 일반 사용자 입장에서는 딱히 삭제할 방법이 없다.

 

분석

SQLite 
크롬 브라우저에서는 Sqlite db 형태로 파일을 관리하므로 손쉽게 Sqlite Browser를 통해 분석이 가능

F:\temp>sqlite3.exe "%USERPROFILE%\AppData\Local\google\chrome\user data\default\history"
sqlite> .table
Error: database is locked

 

F:\temp>dir "%USERPROFILE%\AppData\Local\google\chrome\user data\default\history" 
2020-03-10  오후 05:11        11,239,424 History 

F:\temp>forecopy.exe -f "%USERPROFILE%\AppData\Local\google\chrome\user data\default\history" "f:\temp"

F:\temp>dir "f:\temp\history"
2020-03-10  오후 05:19        11,239,424 history

F:\temp>sqlite3.exe "f:\temp\history"
sqlite> .database
main: f:\temp\history
sqlite> .table
downloads                meta                     urls
downloads_slices         segment_usage            visit_source
downloads_url_chains     segments                 visits
keyword_search_terms     typed_url_sync_metadata


History

sqlite> pragma table_info(urls);
0|id|INTEGER|0||1
1|url|LONGVARCHAR|0||0
2|title|LONGVARCHAR|0||0
3|visit_count|INTEGER|1|0|0
4|typed_count|INTEGER|1|0|0
5|last_visit_time|INTEGER|1||0
6|hidden|INTEGER|1|0|0


sqlite> SELECT datetime(last_visit_time / 1000000 - 11644473600, 'unixepoch', 'localtime') last_visit_time,url,title 

FROM urls ORDER BY last_visit_time DESC [limit 10];

 

Download

sqlite> SELECT datetime(end_time / 1000000 - 11644473600, 'unixepoch', 'localtime') end_time, target_path, tab_url

FROM downloads ORDER BY end_time DESC limit 10;

Keyword Search
select b.url, a.term, datetime(b.last_visit_time / 1000000 - 11644473600, 'unixepoch', 'localtime')

from keyword_search_terms a, urls b  where a.url_id = b.id;

 

기타 Cookies, Typed URL, New Tab도 동일한 방식으로 분석하면 된다. 다만 각 SQLite DB 내 Table 구조 및 Field에

대한 이해가 선행되어야 한다.

 

DB Browser for SQLite Tool

BrowsingHistoryView Tool

Internet Explorer, MicroSoft Edge, Mozilla Firefox, Google Chrome, Opera and Safari 통합 히스토리 분석

 

GUI

CLI

F:\>BrowsingHistoryView.exe /LoadIE 0 /LoadFirefox 0 /LoadSafari 0 /LoadChrome 1 /HistorySource 1 /scomma "f:\test\chrome-back.csv"

F:\tool\forensic\browsinghistoryview-x64>dir "f:\test\chrome-back.csv"
2020-03-10  오후 02:05         1,585,621 chrome-back.csv


F:\temp>F:\tool\forensic\LogParser\LogParser.exe -h -i:csv "f:\test\chrome-back.csv" -headerRow:on

Fields:
  Filename (S)    RowNumber (I)    URL (S)          Title (S)
  Visit Time (S)  Visit Count (I)  Visited From (S) Visit Type (S)
  Web Browser (S) History File (S) User Profile (S) Browser Profile (S)
  URL Length (I)  Typed Count (I)  Record ID (I)

F:\temp>F:\tool\forensic\LogParser\LogParser.exe -i:csv -iDQuotes:auto "select * from 'f:\test\chrome-back.csv'"

<참고>

Visit Type

Hindsight
Chrome 모든 아티팩트를 대상으로 TimeLine 구성

 

TimeLine 생성

C:\Temp>hindsight.exe -i "C:\Users\chohb\AppData\Local\Google\Chrome\User Data\Default" -b Chrome -f sqlite -o "c:\temp\chrome_forensic"

DB Browser for SQLite로 TimeLine 조회

SNSS(Server Session) 파일 분석
다음 두 가지 파일이 SNSS 포맷을 가진 크롬 관련 파일이다.

- Current Session / Current Tabs
- Last Session / Last Tabs

 

위 파일은 현재 탭을 포함한 탭 및 세션 상태와 관련된 모든 것을 저장합니다. 가장 최근의 정보이므로 포렌식에서 

매우 민김한 정보일 수 있다.

분석 시에는 해당 파일들이 Shared read/write 권한이 없어서 실기간으로 접근이 불가능하며 권한을 임의로 부여해도

크롬 실행 시 다시 초기의 권한으로 변경한다.


Current Tab/Session, Last Tab/Session 분석  - Current Web URL 확인

C:\>forecopy.exe -f "C:\Users\chohb\AppData\Local\Google\Chrome\User Data\Default\Current Session" c:\test

C:\>forecopy.exe -f "C:\Users\chohb\AppData\Local\Google\Chrome\User Data\Default\Current Tabs" c:\test

C:\>forecopy.exe -f "C:\Users\chohb\AppData\Local\Google\Chrome\User Data\Default\Last Tabs" c:\test

C:\>forecopy.exe -f "C:\Users\chohb\AppData\Local\Google\Chrome\User Data\Default\Last Session" c:\test

 

Tab 분석

C:\Tools\Forensic\Chromagnon\dist>chromagnonTab.exe "c:\test\Current Tabs"

SelectedNavigationInTab - Tab: 16, Index: 0, Time: 13228317039685565

UpdateTabNavigation - Tab: 16, Index: 0, Url: https://chrome-apps-doc2.appspot.com/extensions/tabs.html

SelectedNavigationInTab - Tab: 20, Index: 0, Time: 13228319147209300

UpdateTabNavigation - Tab: 20, Index: 0, Url: https://secuworld.tistory.com/34

 

C:\Tools\Forensic\Chromagnon\dist>chromagnonTab.exe "c:\test\Last Tabs"

......

UpdateTabNavigation - Tab: 21, Index: 0, Url: chrome://newtab/

UpdateTabNavigation - Tab: 21, Index: 1, Url: https://www.google.com/search?q=chrome+cookie+forensic&oq=chrome+cookie+forensic&aqs=chrome..69i57j0.34298j0j7&sourceid=chrome&ie=UTF-8

UpdateTabNavigation - Tab: 21, Index: 2, Url: https://www.google.com/search?ei=j3lnXq6VI4y2mAW3mozoBQ&q=chrome+cookie+forensic+sqlite+query&oq=chrome+cookie+forensic+sqlite+query&gs_l=psy-ab.3...2404.6489..6866...0.0..0.136.1767.1j14......0....1..gws-wiz.......0i30j0i13i30j33i160j33i21.GPMZ9fq-5Z8&ved=0ahUKEwjumPy05o_oAhUMG6YKHTcNA10Q4dUDCAs&uact=5

UpdateTabNavigation - Tab: 21, Index: 3, Url: https://digitalisx.tistory.com/entry/Google-Chrome-History-with-Python

SelectedNavigationInTab - Tab: 23, Index: 6, Time: 13228315714799040

UpdateTabNavigation - Tab: 23, Index: 3, Url: https://secuworld.tistory.com/

UpdateTabNavigation - Tab: 23, Index: 4, Url: https://secuworld.tistory.com/manage

UpdateTabNavigation - Tab: 23, Index: 5, Url: https://secuworld.tistory.com/manage/posts

UpdateTabNavigation - Tab: 23, Index: 6, Url: https://secuworld.tistory.com/manage/newpost/34?type=post&returnURL=https%3A%2F%2Fsecuworld.tistory.com%2Fmanage%2Fposts

UpdateTabNavigation - Tab: 23, Index: 7, Url: https://secuworld.tistory.com/manage/posts

UpdateTabNavigation - Tab: 23, Index: 8, Url: https://secuworld.tistory.com/manage/newpost/34?type=post&returnURL=https%3A%2F%2Fsecuworld.tistory.com%2Fmanage%2Fposts

UpdateTabNavigation - Tab: 23, Index: 9, Url: https://secuworld.tistory.com/manage/posts

Session 분석

C:\Tools\Forensic\Chromagnon\dist>chromagnonSession.exe "c:\test\Current Session"

......

UpdateTabNavigation - Tab: 19, Index: 0, Url: https://secuworld.tistory.com/34

......

SetSelectedTabInIndex - Window: 13, Index: 0

SetTabIndexInWindow - Tab: 14, Index: 0

SetPinnedState - Tab: 14, Pinned: 0


C:\Tools\Forensic\Chromagnon\dist>chromagnonSession.exe "c:\test\Last Session"

......

SetTabIndexInWindow - Tab: 8, Index: 1

SetPinnedState - Tab: 8, Pinned: 0

SetSelectedNavigationIndex - Tab: 2, Index: 9

UpdateTabNavigation - Tab: 2, Index: 9, Url: https://secuworld.tistory.com/manage/posts

SetSelectedTabInIndex - Window: 1, Index: 1

......

UpdateTabNavigation - Tab: 2, Index: 9, Url: https://secuworld.tistory.com/manage/posts

......

 

Chromagnon
2020년 3월 현재 아직 Python v3.x 는 지원하지 않지만 Python v2.x에서 exe로 만들어 실행하면 된다.

이 또한 크롬이 실행중일 경우 Access Denied가 발생하여 분석이 안된다.

 

E:\Tools\Chromagnon>py -2 chromagnonCache.py "C:\Users\admin\AppData\Local\Google\Chrome\User Data\Default\Cache" [ -o c:\temp\ ]

--------------------------------------------------------------------------------
Hash: 0x3ac547ab
Usage Counter: 0
Reuse Counter: 0
Creation Time: 2020-01-15 04:42:01.214355
Key: https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/bltfe1709fd28e63c7e/5d07f061b0b16b1c530d1197/logo-maps-24-color.svg
State: Normal
Data (6848 bytes) at 0xc1031126 : HTTP Header image/svg+xml
Data (883 bytes) at 0xa30113d8 : Data
--------------------------------------------------------------------------------
......

 

E:\Tools\Chromagnon>py -2 chromagnonDownload.py "C:\Users\admin\AppData\Local\Google\Chrome\User Data\Default\history"
2019-12-11 00:08:53.688932      https://github.com/packetzero/dnsparser E:\temp\dnsparser-master.zip
2019-12-11 00:27:13.877036      https://bitbucket.org/paulc/dnslib/downloads/   E:\temp\paulc-dnslib-9b80cd497f3d.zip
2019-12-11 01:28:54.747286      http://www.dnspython.org/kits/1.16.0/   E:\temp\dnspython-1.16.0.zip

 

E:\Tools\Chromagnon>py -2 chromagnonHistory.py "C:\Users\admin\AppData\Local\Google\Chrome\User Data\Default\history"
2019-12-10 07:45:50.957715      35      https://www.daum.net/
2019-12-10 07:46:35.677765      1       https://sports.media.daum.net/sports

E:\Tools\Chromagnon>py -2 chromagnonVisitedLinks.py "C:\Users\admin\AppData\Local\Google\Chrome\User Data\Default\Visited Links" "http://www.naver.com"
http://www.naver.com False

반응형

반응형

웹 분석 - IE

 

분석 대상

웹 캐시, 접속 히스토리, 검색 키워드, 쿠키, 파일 다운로드 목록, 아이콘 캐시, 세션복원 정보, 호환성 목록, DOM 저장소 내용, 북마크 

 

웹 캐시

• 행위의 동기, 목적, 수단, 방법 등 많은 정보 획득 가능
• 웹 브라우저에서 열람한 파일도 저장이 되어 내용 확인이 가능
• 특히 html 캐시 파일을 통해 웹 메일 내용 분석이 가능할 수 있다.

접속 히스토리
• 사용자가 방문한 웹 사이트 접속 정보 저장
• 방문 사이트 URL, 방문 시간, 방문 횟수, 사이트 제목 등
• 저장 형식
  직접 접근 – URL 입력 창에 직접 주소 입력
  간접 접근 – URL 링크를 통해서 접근


쿠키
웹 사이트 방문 시 자동으로 사용자 저장장치에 저장되는 텍스트 데이터
자동 로그인 기능 -> 로그인 아이디 저장 옵션 활성화 시 로그인 아이디 획득 가능
쇼핑몰 열람한 물건, 장바구니 물건
웹 하드 찜 해놓은 자료, 다운받은 자료 등 획득 가능

 

IE 웹 브라우저 위치
Location of Internet Explorer history
Windows 7, 8, 10
C:\Users\<username>\Favorites
C:\Users\<username>\AppData\Local\Microsoft\Windows\WebCache
C:\Users\<username>\AppData\Local\Microsoft\Internet Explorer\Recovery

OS별, IE 버전별로 다를 수 있음

Format of Internet Explorer history
Bookmarks
Internet Explorer Bookmarks are stored in separate Internet Shortcut (.url) files within the 'Favorites' folder.

Cache
Internet Explorer Cache records are stored in the 'WebCacheV01.dat' ESE database, within the 'Content' containers. The cached files are stored as separate files in locations specified within the ESE database.

Cookies
Internet Explorer Cookie records are stored in the 'WebCacheV01.dat' ESE database, within the 'Cookies' containers. The cookie files are stored as separate files in locations specified within the ESE database.

Downloads
Internet Explorer Downloads are stored in the 'WebCacheV01.dat' ESE database, within the 'iedownload' containers.

Session Data
Internet Explorer Session Data is stored in a number of .dat files within the 'Recovery' folder.

Website Visits
Internet Explorer Website Visits are stored in the 'WebCacheV01.dat' ESE database, within the 'History' containers.

 

C:\Users\chohb\AppData\Local\Microsoft\Windows\WebCache 디렉터리
2020-03-10  오전 09:50       297,795,584 WebCacheV01.dat   <- Windows EDB(Extensible Storage Engine DB) Format
2020-03-10  오전 09:48            16,384 WebCacheV01.jfm

 

분석

F:\>forecopy.exe -f C:\Users\chohb\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat f:\test

F:\temp>dir f:\test\WebCacheV01.dat
2020-03-10  오전 10:07       297,795,584 WebCacheV01.dat

 

F:\temp>C:\Windows\SysWOW64\esentutl.exe /mh f:\test\WebCacheV01.dat

F:\temp>C:\Windows\SysWOW64\esentutl.exe /mh f:\test\WebCacheV01.dat | findstr /i /c:"state" 
            State: Dirty Shutdown

 

메타데이터 확인, Dirty Shutdown 상태 확인, 만약 Dirty Shutdown 상태이면 아래 명령으로 Clean Shutdown 상태로 변경

 

F:\temp>C:\Windows\SysWOW64\esentutl.exe /p f:\test\WebCacheV01.dat

F:\temp>C:\Windows\SysWOW64\esentutl.exe /mh f:\test\WebCacheV01.dat | findstr /i /c:"state"
            State: Clean Shutdown


ESEDatabaseView Tool

GUI

<컨테이너 설명>

ㆍ각 정보들은 Container_N 형식의 이를을 가진 테이블에 저장되어 있고 분석 대상 항목별로 각 테이블이 존재한다.
ㆍ각 Container_N 테이블에 저장되는 정보의 종류는 Containers 테이블의 ContainerId 칼럼과 Name 칼럼을 참조
ㆍHistory는 ContainerID 40, 341, 344, 79. 10, 62 등 name 이 history인 ContainerId에 저장

예를 들어 ContainerID 35, History Table 내역이다.

 

CLI

F:\temp>F:\tool\forensic\esedatabaseview\ESEDatabaseView.exe /table "f:\temp\WebCacheV01.dat" * /sxml "f:\test\WebCacheExportIE\webcache_*.xml"

 

내보내기 파일 이름에 '*' 문자를 사용하면 테이블 이름이 Container1 인 경우 내 보낸 파일 이름은 webcache_Container1.csv가 됩니다. 이때 주의할 점은 읽어들이는 WebCache 파일 폴더와 Export 하고자 하는 폴더가 서로 달라야 한다.

 

각 테이블(컨테이너) 설명은 webcache_Containers.??? 파일에 존재한다.
F:\Test\WebCacheExportIE>LogParser.exe -i:xml "select containerid, name, directory from 'F:\Test\WebCacheExportIE\webcache_Containers.xml' [where name like '%download%']"

이 작업은 다소 시간이 걸릴 수 있다. 아래 명령으로 작업 종료 여부를 확인하면 된다.

F:\temp>tasklist |findstr /i /c:"ESEDatabaseView.exe"

F:\temp>dir f:\test\WebCacheExportIE

Connect History

F:\temp>LogParser.exe -i:csv "select containerid, name, extract_token(directory, -2, '\\'), rownumber from 
'F:\Test\WebCacheExportIE\webcache_Containers.csv' where directory like '%History%' order by name "

위에서 하얀색이 Connect History이다. 이에 해당되는 Container_XX(ID) 를 분석하면 된다.

 

F:\temp>LogParser.exe -h -i:xml "f:\test\WebCacheExportIE\webcache_Container_35.xml" -headerRow:on

Fields: <- Field도 당연히 테이블마다 다르다. 조회해야할 컨테이너 번호는 <컨테이너 설명> 참고
  entryid (I)         containerid (I)  cacheid (I)         urlhash (I)  securedirectory (I) filesize (I)     type (I)            flags (I)
  accesscount (I)     synctime (I)     creationtime (I)    expirytime (I)  modifiedtime (I)    accessedtime (I) 

  postchecktime (I)   synccount (I)   exemptiondelta (I)  url (S)          responseheaders (S)

F:\temp>LogParser.exe -i:xml "select accessedtime, url from 'F:\Test\WebCacheExportIE\webcache_Container_35.xml'"

Download Lists

F:\temp>LogParser.exe -i:csv "select containerid, name, extract_token(directory, -2, '\\'), rownumber
from 'F:\Test\WebCacheExportIE\webcache_Containers.csv' where directory like '%download%' order by name "

위에서 하얀색이 Download  이다. 이에 해당되는 Container_XX(ID) 를 분석하면 된다.

F:\temp>LogParser.exe -h -i:xml "f:\test\WebCacheExportIE\webcache_Container_28.xml" -headerRow:on

Fields:
  entryid (I)         containerid (I)  cacheid (I)         urlhash (I)  securedirectory (I) filesize (I)     type (I)            flags (I)
  accesscount (I)     synctime (I)     creationtime (I)    expirytime (I)  modifiedtime (I)    accessedtime (I) 
  postchecktime (I)   synccount (I)   exemptiondelta (I)  url (S)          responseheaders (S)

 

F:\temp>LogParser.exe -i:xml "select accessedtime, url from 'F:\Test\WebCacheExportIE\webcache_Container_28.xml'"
-> 조회해야할 컨테이너 번호는 <컨테이너 설명> 참고
accessedtime       url
------------------ -------------------------------------------------
131605413646823263 iedownload:{64953B9E-FA60-11E7-9BCC-BCAEC53A859B}
131605413718460058 iedownload:{64953B9F-FA60-11E7-9BCC-BCAEC53A859B}
131605413837932764 iedownload:{7195ED56-FA60-11E7-9BCC-BCAEC53A859B}

...... <- Download 내역은 바로 알기가 어렵다. 아래 IE10Analyzer처럼 별도 도구를 이용하여 분석

 

Web Cache
logparser에서 extract_token 함수를 적용하기 위해 Export Format을 csv로 변경
F:\temp>ESEDatabaseView.exe /table "f:\temp\WebCacheV01.dat" * /scomma "f:\test\WebCacheExportIE\webcache_*.csv"  


F:\temp>LogParser.exe -i:csv "select containerid, name, extract_token(directory, -2, '\\'), rownumber, directory from 
'F:\Test\WebCacheExportIE\webcache_Containers.csv' where directory like '%cache%' order by Directory "

위에서 하얀색이 Web Cache 이다. 이에 해당되는 Container_XX(ID) 를 분석하면 된다.

 

Cookies

F:\temp>LogParser.exe -i:csv "select containerid, name, extract_token(directory, -2, '\\'), rownumber from 
'F:\Test\WebCacheExportIE\webcache_Containers.csv' where directory like '%cookie%' order by name "

위에서 하얀색이 Cookie 이다. 이에 해당되는 Container_XX(ID) 를 분석하면 된다.

 

BrowsingHistoryView Tool
Internet Explorer, MicroSoft Edge, Mozilla Firefox, Google Chrome, Opera and Safari 통합 히스토리 분석

GUI

CLI

F:\temp>BrowsingHistoryView.exe /LoadIE 1 /LoadFirefox 0 /LoadSafari 0 /LoadChrome 0 /HistorySource 1 /scomma "f:\test\ie-back.csv"

F:\tool\forensic\browsinghistoryview-x64>dir "f:\test\IE-back.csv" 
2020-03-10  오후 02:05         137,401 IE-back.csv


F:\temp>F:\tool\forensic\LogParser\LogParser.exe -h -i:csv "f:\test\IE-back.csv" -headerRow:on

Fields: 
  Filename (S)    RowNumber (I)    URL (S)          Title (S) 
  Visit Time (S)  Visit Count (I)  Visited From (S) Visit Type (S) 
  Web Browser (S) History File (S) User Profile (S) Browser Profile (S) 
  URL Length (I)  Typed Count (I)  Record ID (I) 

F:\temp>F:\tool\forensic\LogParser\LogParser.exe -i:csv -iDQuotes:auto "select * from 'f:\test\IE-back.csv'"

<참고>

Visit Type 값은 없다

 

IE10Analyzer Tool

<참고>

기타 분석 항목별 다양한 오픈소스 분석 도구들이 존재한다. 

분석 목적, 분석 방법, 설치 여부(Setup 수행 ? Portable ?), 실행 형태(GUi/CLI ?) 등에 따라 분석 항목별로 2 - 3개의 도구들로 분석하여 Cross Check 해본다.  포렌식 분석 시 대상 시스템에 변화를 주어서는 안된다. 무결성의 문제가 발생한다.

만약 어쩔 수 없다면 시스템 영역이 아닌 별도 사용자 영역에 최소한의 변화만 발생시키도록 한다. 예를 들어 레지스트리를 변경시키는 Setup 설치 도구 보다는 CLI를 지원하는 도구를 USB에서 실행하여 실행 결과를 USB에 저장하는 것이 더 좋은 것이다.

 

<참고>

ESEDatabaseView가 분석할 수 있는 ESE Databases
.  contacts.edb - Stores contacts information in Microsoft live products.
.  WLCalendarStore.edb - Stores calendar information in Microsoft Windows Live Mail.
.  Mail.MSMessageStore - Stores messages information in Microsoft Windows Live Mail.
.  WebCacheV24.dat and WebCacheV01.dat - Stores cache, history, and cookies information in Internet Explorer 10.
.  Mailbox Database.edb and Public Folder Database.edb - Stores mail data in Microsoft Exchange Server.
.  Windows.edb - Stores index information (for Windows search) by Windows operating system.
.  DataStore.edb - Windows updates information (Located under C:\windows\SoftwareDistribution\DataStore )
. spartan.edb - Stores the Favorites of Internet Explorer 10/11. (Stored under

                    %LOCALAPPDATA%\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\MicrosoftEdge\

                    User\Default\DataStore\Data\nouser1\120712-0049)

 

 

 

반응형

반응형

삭제파일 목록 조회

 

휴지통은 사용자가 삭제한 파일이나 폴더가 완전 삭제하기 전에 이동되는 중간 임시 영역이다. 이러한 휴지통은 파일시스템으로 보면 하나의 디렉터리에 불과하다. 이러한 휴지통 디렉터리의 접근은 다른 어플리케이션은 불가능하고 단지 휴지통 어플리케이션만 가능하며 휴지통 내 파일 역시 휴지통 어플리케이션이 해석 가능한 포맷의 파일명을 가진 것들만 표시가 가능하다.

 

사용자가 삭제한 즉 휴지통으로 이동된 파일 또는 폴더는 실제 파일은 그대로 남겨둔 채 파일 시스템에 기록된 파일 또는 폴더의 메타 정보만을 변경한다. 그러므로 포렌식 관점에서 덮어쓰여 지지만 않았으면 복원이 얼마던지 가능하고 원본 파일 복원을 위해 다양한 정보를 저장하는 파일을 휴지통 정보 파일이라고 부른다. 이러한 휴지통 정보파일은 Vista 이전 버전에서는 단일 파일로 관리하였고 Vista 이후 부터는 삭제된 개체별로 하나씩 생성하여 관리하고 있다.

 

파일 삭제 시 메타 정보 변화

삭제 시 : 원본파일 MFT Entry 삭제, 휴지통 폴더의 새로운 MFT Entry 생성
복원 시 : 휴지통 폴더의 MFT Entry 삭제, 원본파일 MFT Entry 생성

휴지통 파일

휴지통은, 내부에 삭제된 파일을 저장할 때 아래와 같은 규칙을 통해 파일의 이름을 생성한다. 

Windows XP 휴지통 정보 파일
삭제된 파일명 : D[drive letter][index number].[extension of original]
정보 파일명 : INFO2


Windows 7+ 휴지통 정보 파일
삭제된 파일명 : $R[random].[extension of original]
정보 파일명 : $I[same with $R].[extension of original]


윈도우 vista 이전에서는 파일이 삭제될 경우 INFO2 파일과 D로 시작하고 원본 파일의 확장자로 끝나는 파일이 생성된다. 


"D" + 드라이브경로 + 증가되는 숫자 + "." + 원본 파일의 확장자 예) Dc1.hwp


D로 시작하는 파일은 삭제된 파일의 실제 데이터이며 INFO2 파일은 삭제된 파일을 표현하는데 사용되는 정보가 저장되어있다.  Vista 방식에서 사용되는 $I 와 다르게 INFO2 단일 파일에 삭제된 파일들의 메타정보가 저장되며 파일이 추가적으로 삭제될 경우 계속 업데이트 되는 방식이다. 

Vista+ 에서는 위와같은 방식을 사용하지 않고 삭제된 파일별로 $I, $R 파일이 생성되는데 $R의 경우 원본 파일의 내용이 저장되어있으며 $I는 삭제된 파일의 정보를 저장하고있다.
$R,I의 명명 규칙은 $R 혹은 $I 문자열 뒤 랜덤 영문(대문자),숫자 값과 원본 파일의 확장자로 명명되어있다.

$R의 경우 원본파일 그 자체이기 때문에 OS별로 차이점이 없지만 $I는 OS별로 조금씩 다르므로 분석 시 유의해야 한다.

 

파일이 휴지통으로 이동된 후 완전 삭제되더라도 디스크 내부에서 $I 파일의 조각을 발견하게 된다면 삭제된 파일이 

존재하였다는 중요한 단서가 될 수 있다. 

획득 정보

INFO2
원본 파일 경로 및 이름 (File Record)
휴지통 내의 파일 식별자 (Record Number)
원본 파일이 위치하고 있었던 드라이브의 번호 (Drive Designator)
파일이 삭제된 날짜 및 시간 (File Deleted Date/Time)
원본 파일 크기 (Deleted File Physical Size)

$I
원본 파일 크기 (File Size)
파일이 삭제된 날짜 및 시간 (File Delete Date/Time)
원본 파일 경로 및 이름 (File Record)


휴지통은 파일명 규칙에 맞지 않는 파일이 휴지통에 있을 경우, 일반적인 휴지통 열람으로는 내용을 보여주지 않는다.

이와 같은 특성 때문에 악성코드 혹은 사건 용의자가 정보를 은닉하는데 애용되기 때문에 반드시 파일 시스템을 해석하여 내부의 정보를 살펴볼 필요가 있다는 점을 기억하자. 

 

휴지통 폴더 내부에는 사용자 계정 별로 계정 SID 이름으로 된 폴더가 존재하고 서로 공유되지 않고 독립적으로 사용되며 다른 사용자의 접근은 일반 사용자 권한으로는 불가능하다. 그러므로 조사를 원하는 사용자의 휴지통 경로를 구분하여 분석을 진행할 필요가 있다.

 

각 파티션마다 휴지통 폴더가 생기는 이유?

드라이브(파티션)마다 각각 휴지통 폴더가 존재한다. 서로 다른 파티션은 논리적으로 독립된 공간이다. 따라서 같은 파티션 내에서 파일을 이동 시키면 해당 파일 데이터는 그대로 둔 채 경로만 변경한다. 하지만 파티션 간에 데이터를 이동할 경우에는 원본 파티션에서 데이터를 읽어 목적지 파티션에서 해당 데이터를 써야만 한다. 여기서 각 파티션은 하나의 볼륨 내에 존재하는 것을 의미한다.

 

C: 파티션에 운영체제를 설치한 후 D: 파티션에서 파일을 지웠다면 이 파일은 C:의 휴지통 폴더로 이동하는 것이 아니라 D:의 휴지통 폴더로 이동한다. 즉 D: 파티션에서 파일을 지울 때마다 C:로 이동시켜야 하는 번거로움이 없어진다. 그렇지 않다면 큰 파일이나 많은 양의 파일을 한번에 지울 경우 파일을 지우는 시간이 무척 많이 걸릴 것이며 시스템 성능 저하를 초래할 것이다.

 

하지만  바탕화면의 휴지통을 클릭했을 때 C: 파티션뿐만아니라 D: 파티션에서 삭제된 파일도 보이는게 그 이유는 볼륨 내에 존재하는 모든 파티션의 휴지통 폴더에서 같은 휴지통 이름을 가지는 폴더를 전부 링크 시켜 놓아 함께 보여주기 때문이다.

 

Rifiuti
Rifiuti[2] is a for analyzing Windows Recycle Bin INFO2 file in Window XP- and $i Files in Windows Vista+. 

rifiuti.exe : INFO2 파일 분석
rifiuti-vista[64].exe : $i 파일 분석

 

먼저 휴지통 폴더 조회

C:\>dir /ad /s c:\ | findstr /i /c:"recy" 
2020-03-09  오전 09:05              $Recycle.Bin 
 c:\$Recycle.Bin 디렉터리 
 c:\$Recycle.Bin\S-1-5-18 디렉터리 
 c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001 디렉터리 

C:\>dir c:\$Recycle.Bin /s
c:\$Recycle.Bin 디렉터리
2020-03-09  오후 08:30                 2 WhufT^].jpg

 c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001 디렉터리
2019-12-14  오후 01:09               104 $IZ522XF.vscode
2017-11-14  오전 08:41                98 $I4HT8VQ.lnk 
2019-12-20  오후 01:31               102 $IJ8H8A0.lnk 
2019-12-13  오전 09:20               122 $IQRGYB6.lnk 

휴지통 내 lnk 링크 파일은 형식이 lnk 이지만 일반 링크파일 분석 방법으로 분석이 되지 않는다.

 

C:\rifiuti>rifiuti-vista64.exe c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001
Recycle bin path: 'c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001'
Version: 2
Index   Deleted Time    Size    Path
$IZ522XF.vscode 2019-12-14 04:09:57     12      C:\vscodeworkspace\JavaScript\.vscode
......

 

C:\rifiuti>rifiuti-vista.exe f:\$RECYCLE.BIN\S-1-5-21-2555433415-3599755044-3103386514-1001

Recycle bin path: 'c:\$Recycle.Bin\S-1-5-21-795312640-3018449293-233669703-1001'

Version: 2

OS Guess: Windows 10 or above

Time zone: Coordinated Universal Time (UTC) [+0000]

 

Index   Deleted Time    Size    Path

$I27ZKYW.torrent        2019-07-09 12:42:55     105071  C:\Temp\한나몬타나_시즌1.torrent

$IAZX7PY.torrent        2019-07-11 10:32:03     473356  C:\Temp\[limetorrents.info]Hannah.Montana.Season.4.torrent

$I0I5U18.avi    2019-07-11 10:32:12     218361856       C:\Temp\SEZON 4\Hannah Montana Forever.S04E01.640x480.avi

$I4IEUQQ.avi    2019-07-11 10:32:12     222615552       C:\Temp\SEZON 4\Hannah Montana Forever.S04E08.640x480.avi

$I4OEP2Z.avi    2019-07-11 10:32:12     221011968       C:\Temp\SEZON 4\Hannah Montana Forever.S04E09.640x480.avi

......


NTFS Journal Files
$MFT 추출
C:\>RawCopy64.exe /FileNamePath:C:0 /OutputPath:C:\Results

$LogFile 추출
C:\>RawCopy64.exe /FileNamePath:C:2 /OutputPath:C:\Results

$UsnJRNL 추출
C:\>ExtractUsnJrnl64.exe /DevicePath:C: /OutputPath:C:\Results

$UsnJRNL CSV 저장, 반드시 Comma로 필드 분리
C:\>UsnJrnl2Csv64.exe /UsnJrnlFile:C:\Results\$UsnJrnl_$J.bin /OutputFormat:csv /Separator:,

/OutputPath:C:\Dropbox\DFIR\Window\FileSystem\Results

C:\>LogParser.exe -h -i:CSV c:\Results\UsnJrnl_2019-07-18_23-37-34.csv -headerrow:on
Fields:
  Filename (S)           RowNumber (I)               癤풭ffset (S)
  FileName (S)           USN (I)                     Timestamp (T)
  Reason (S)             MFTReference (I)            MFTReferenceSeqNo (I)
  MFTParentReference (I) MFTParentReferenceSeqNo (I) FileAttributes (S)
  MajorVersion (I)       MinorVersion (I)            SourceInfo (S)
  SecurityId (I)

C:\>LogParser.exe -stats:on -i:csv "select Timestamp, FileName,  FileAttributes, reason

from UsnJrnl_2019-07-18_23-37-34.csv where reason like '%delete%'"
Timestamp           Filename                                                                  FileAttributes           Reason
------------------- ------------------------------------------------------------------------- ------------------------ ------------
2019-07-17 01:51:25 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:51:25 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:51:55 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv hidden+archive+temporary CLOSE+FILE_DELETE
2019-07-17 01:51:55 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:52:20 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv hidden+archive+temporary CLOSE+FILE_DELETE
2019-07-17 01:52:20 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:52:20 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv hidden+archive+temporary CLOSE+FILE_DELETE
2019-07-17 01:52:20 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:53:26 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
2019-07-17 01:53:26 C:\Results\UsnJrnl_2019-07-18_23-37-34.csv archive                  CLOSE+FILE_DELETE
......

Windows Search DB

Windows Search DB를 통해서도 삭제 파일 정보 확인 가능

WinSearchDBAnalyzer Tool

- 삭제된 파일에 대한 정보 및 파일 내용도 확인 가능

반응형

반응형

다운로드 받은 파일 조회

 

각 파일의 Zone.Identifier 값으로 다운로드 여부를 판단하며 Zone.Identifier 값이 3이면 인터넷으로부터 다운로드된 파일이라   있다.


Zone.Identifier는
 ADS 일종으로 아래와 같은 값을 가진다.

Zone ID

1 - 로컬 인트라넷

2 - 신뢰할 있는 사이트(URLZONE_TRUSTED)

3 - 인터넷

4 - 제한된 사이트(URLZONE_UNTRUSTED)

 

분석
ADSIdentifier Tool

Windows-based command-line application that identifies, and optionally removes, NTFS Alternate Data Streams.


F:\tool\forensic>ADSIdentifier.exe /folder:f:\

Dir Command

F:\tool\forensic>dir f: /S /R | findstr /i /c:":$D" |findstr /i /c:"Zone.Identifier"

Powershell

PS F:\tool\forensic> get-ChildItem f:\* -Recurse -ErrorAction SilentlyContinue | get-item -Stream Zone*

다운받은 파일을 어디서 다운받았는지 출처 확인

네이버에서 "한글양면인쇄.pdf" 파일을 다운받은 후 아래 명령어로 확인

C:\temp>more < 한글양면인쇄.pdf:Zone.Identifier

[ZoneTransfer]

ZoneId=2  <- ZoneID가 3이 아닌 2이네. 추가 혹인이 필요해 보임

ReferrerUrl=https://cloud.naver.com/

HostUrl=https://files.cloud.naver.com/file/download.api?resourceKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

반응형

반응형

사용자의 PC 사용 성향, 패턴을 분석하는데 유용하다, 문서 작업을 많이 하는지 인터넷을 많이 하는지.......주로 어떤 프로그램을 많이 실행하는지 또한 고의적으로 삭제하지 않는 한 OS에 의해 삭제되지 않으므로 삭제된 프로그램이나 파일의 사용 흔적을 조사할 수 있다.

RecentDoc 분석
Windows 탐색기를 통해 최근 오픈된 문서 목록
최근 접근(사용) 폴더/문서, 거의 lnk 파일 ( = 바로가기 파일) 형태로 존재, 폴더 목록에 대한 lnk 파일도 존재한다.

Recent 디렉터리에는 최근에 사용된 파일이나 폴더들의 항목들이 '바로가기'의 형태로 존재

C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent Folder

F:\temp>dir /a-d C:\Users\chohb\AppData\Roaming\Microsoft\Windows\Recent Folder /O-D 
2020-03-09  오후 01:42               466 temp (9).lnk 
2020-03-09  오후 01:42               687 DFIR-Windows-Behaviour-Analyze.docx.lnk 
2020-03-09  오후 12:51               748 2020년도.lnk
......


링크파일분석 참고 : https://secuworld.tistory.com/24?category=849780

폴더로 관리되는 RecentDoc은 최근에 접근, 열람한 문서 정보가, 레지스트리에 저장되는 UserAssist는 주로 최근에 실행한 응용 프로그램 정보가 저장된다.

 

참고로 최근 열어본 문서 레지스트리
HKU\%UserSID%\Software\Microsoft\Office\{Version}\{Program}\File MRU
HKLM\Software\HNC\Hwp\6.5\RecentFile
HKLM\Software\HNC\Hwp\{Version}\HwpFrame\RecentFile
HKU\%UserSID%\Software\Adobe\Acrobat Reader
HKU\%UserSID%\Software\Adobe\Adobe Acrobat
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU

RecentfilesView
GUI

CLI
F:\tool\forensic\recentfilesview>RecentFilesView.exe /sxml "f:\temp\RecentFiles.xml" /sort ~"Modified Time"


F:\tool\forensic\recentfilesview>F:\tool\forensic\LogParser\LogParser.exe -i:xml "select * from 'f:\temp\RecentFiles.xml'"

 

RecentFiles.xml 파일 내용

regripper
F:\tool\forensic\recentfilesview>F:\tool\forensic\RegRipper2.8\rip.exe -r f:\test\reg-hive-backup\chohb.NTUSER.DAT -p recentdocs

F:\tool\forensic\recentfilesview>F:\tool\forensic\RegRipper2.8\rip.exe -r f:\test\reg-hive-backup\chohb.NTUSER.DAT -p recentdocs_tln

JumpList 분석

Win 7 이상 . 최근 접근한 문서나 자주 열람하는 문서 정보

윈도우 7 이전에는 Recent와 UserAssist로 사용자의 편의성을 위하여 목록들을 유지하였다. 하지만 7에 와서는 이 두개에 더해 새로운 기능이 추가되었는데 바로 점프리스트이다. 점프리스트란 작업 표시줄에서 아이콘에 마우스를 우클릭하면 이전에 열었던 목록이나 자주 여는 파일의 목록들이 나타난다. 이를 점프리스트라 한다.

점프 목록은 윈도우 7+에서 응용프로그램 실행 시 작업 표시줄에 표시된다. 작업 표시줄에 나타나는 응용프로그램에 마우스를 위치시킨 후 마우스를 우클릭하면 해당 응용프로그램으로 최근에 열거나 사용했던 파일들이 표시된다. 이를 점프 목록이라 부른다. 다음은 Adobe Acrobat 프로그램의 점프 목록이다.

바로가기(lnk, 링크파일)는 단순히 특정 개체에 대한 정보와 실행 통로를 제공해 주는데에 그치는 반면, 점프 리스트는 아래와 같은 정보를 추가적으로 저장하여 사용자의 편의를 높혀준다.

  • Recent(최근 항목) : 응용프로그램을 통해 최근 열람한 파일. 기존 최근 접근 문서 목록도 점프리스트에 포함
  • Frequent(자주 사용하는 항목) : 응용프로그램을 통해 자주 열람하는 파일
  • Tasks(작업) : 경우에 따라 미디어 재생, 새 문서 작성 등의 기능을 빠르게 이용
  • Pinned(사용자 고정) : 응용프로그램의 사용이 종료되어도 작업 표시줄에 응용프로그램 아이콘을 남겨두기 위한 기능(사용자가 자주 사용하는 응용프로그램일 가능성이 크다)

점프리스트는 Windows 7부터 추가된 기능으로 바로가기의 확장형이라고 볼 수 있기 때문에, 정보의 해석과 활용은

바로가기 링크 파일과 유사하다. 다만 기존 링크파일 외 새롭게  추가된 전용 포멧을 사용하는 .CustomDestinations 파일과 컴파운드 파일 포맷을 사용하는 .automaticDestination-ms 파일이 각각 존재하기 때문에, 전용 도구와 컴파운드 뷰어를 활용하여 추가로 분석을 해야한다. 

“Recent” 라는 이름으로 이전에 Acrobat으로 열었던 파일 목록을 저장하고 있다. 자주 방문한 경로나 파일은 “Frequent” 라는 이름의 목록으로 따로 표현해 주기도 한다. 이러한 목록을 점프 목록이라 한다. 점프 목록은 특정 응용프로그램에만 적용되는 것이 아니라 윈도우 탐색기(Windows Explorer)와 같은 기본 프로그램에도 적용된다. 윈도우 탐색기의 점프 목록은 최근에 방문했던 폴더 경로가 포함되어 있다. 단순히 방문만 한다고 기록되는 것은 아니고 특정 폴더에서 파일을 실행시키거나 행위를 했을 때만 점프 목록에 기록된다. 브라우저의 경우에는 최근에 방문한 사이트 경로나 자주 사용하는 사이트 경로도 저장된다. 게다가 브라우저에 따라 최근 닫은 사이트 경로도 포함해주기도 한다. 

이처럼 점프 목록은 이전부터 사용된 응용프로그램 로그인 “Recent” 폴더(최근 사용 문서)나 “UserAssist” 키보다 더 많은 그리고 더 중요한 정보를 포함하고 있다. 게다가 최근 사용 문서 정보처럼 사용자가 일부러 삭제하지 않는 이상 운영체제 설치때부터 계속해서 관련 로그를 저장한다. 따라서, 윈도우 7에서 포렌식 분석 시 필수적으로 분석해야 하는 자료 중 하나이다.

 

포렌식 관점에서 Jump List는 사용자의 응용프로그램 사용 흔적 및 패턴을 파악할 수 있고 윈도우 설치 시부터 자동 설정되는 부분도 있기 때문에 의도적으로 삭제하는 경우가 아닌 이상 지속적으로 로그가 저장이 된다. 만약 삭제될 경우에도 볼륨에 그대로 유지되어 복구가 가능하다.

 

JumpList는 기존 RecentDoc 및 UserAssist 외 Win7+ 에서 추가로 생성

자주 사용하는 문서 + 자주 사용하는 프로그램 <- MRU 알고리즘에 의해 MRU List로 관리

운영체제가 자동으로 생성하거나 사용자가 생성(Pinned)

링크파일(lnk)이 아닌 CDF(Compound Document File) 형태로 존재

   . AutomaticDestinations 폴더의 내용은 CDF(Compound Document File; 이하 복합문서) 형태로 저장
   . Compound File Explorer(CFX;
http://www.coco.co.uk/developers/CFX.html) 를 통해 구조 분석 가능
   . CustomDestinations의 경우 자체 포멧을 사용
악성 파일 실행 흔적 / 외장저장장치 파일 열람 흔적  /  웹 사이트 접속 이력 확인 가능
AutomaticDestinations, CustomDestinations 두 가지 점프리스트 포멧이 모두 내부적으로는 바로가기(.lnk) 파일을 포함하고 있어서 분석 관점에서 정보의 해석과 활용은 바로가기 파일과 교차하여 진행하는 것이 좋다. 

 

또한 JumpList의 항목은 사용자의 삭제 행위에 의해서만 삭제되기 때문에, 의도적으로 삭제되지 않는 한 파일이나 프로그램 사용에 관련된 정보를 획득할 수 있다. 반대로는 삭제된 흔적이 발견되는 경우, 사건에 관련하여 용의자 의도를 의심해볼 필요가 있을 것이다. 단, 점프 리스트 자체를 사용하지 않음으로 설정하면 관련 파일들이 모두 삭제되어진다.

※ Compound Document Format : FAT 파일 시스템과 굉장히 유사한 형태로 되어 있는 파일 포멧으로, 파일 시스템이 파일을 저장하듯 내부의 스트림(Stream)으로 데이터를 저장, 관리할 수 있기 때문에 목적에 따라 자주 사용되는 포멧이다. (대표적으로는 Office 2003까지의 문서 파일들이 사용하였고, 지금 설명하는 점프리스트의 AutomaticDestinations 파일이나, 윈도우의 스티커 노트, HWP 문서 등이 이 포멧을 사용한다.)

 

AutomaticDestinations
자주 사용되는 목록(Frequent)나 작업목록(Tasks)가 존재 -> 운영체제가 자동 생성
F:\temp>dir /a-d c:\Users\chohb\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations /O-D
2020-03-09  오후 01:52         2,455,770 f01b4d95cf55d32a.automaticDestinations-ms
2020-03-09  오후 01:52           424,960 7fbc827655307cb6.automaticDestinations-ms
2020-03-09  오후 01:51         3,270,144 5f7b5f1e01b83767.automaticDestinations-ms"
......

CustomDestinations
최근 사용한 목록(Recent)나 사용자가 직접 고정시킨 항목(Pinned)  -> 응용프로그램이 자동 생성 + 사용자 생성

F:\temp>dir /a-d c:\Users\chohb\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations /O-D
2020-03-09  오후 01:35            22,354 5d696d521de238c3.customDestinations-ms
2020-03-09  오전 08:48             5,349 99fdce3ec7898a04.customDestinations-ms
2020-03-09  오전 08:46                24 f18460fded109990.customDestinations-ms
......

 

파일명 구성 : 앞의 16글자는 Application ID로 각 App에 해당하는 ID를 띄고 있으며 각 파일의 내부를 확인해보면 여러 항목들이 존재하는 것을 확인할 수가 있다. 이러한 App ID는 http://kali-km.tistory.com/entry/Jump-List-App-ID  에서 Ctrl+F로 찾아서 어떠한 프로그램의 점프 리스트 목록인지 확인할 수가 있다.

 

내용을 확인할 때는 HxD로 열어서 확인하거나 BinText를 통해서도 확인이 가능하다. 하지만 정확히 분석하기 위해서는 JumpList와 관련된 툴을 이용하는 것이 좋다.

 

분석

JumplistView Tool

GUI

Jump list filename이 데이터 출처이다. 이를 통해 OS나 응영프로그램이 자동으로 생성한 것인지

사용자가 직접 생성한 것인지 파악할 수 있다.

 

CLI
F:\tool\forensic\jumplistsview>JumpListsView.exe /sxml F:\temp\JumpList.xml
F:\tool\forensic\jumplistsview>F:\tool\forensic\LogParser\LogParser.exe -stats:off -i:xml "select filename, full_path, accessed_time, application_name from 'F:\temp\JumpList.xml'"

JLECmd

F:\tool\forensic\jumplistsview>F:\tool\forensic\JLECmd.exe -d c:\Users\chohb\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations all

F:\tool\forensic\jumplistsview>F:\tool\forensic\JLECmd.exe -d c:\Users\chohb\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations all

반응형

반응형

파일 행위 분석-LastVisitedPidlMRU

Windows XP의 LastVisitedMRU 이름이 Windows Vista 부터 LastVisitedPidlMRU로 변경

LastVisitedPidlMRU 키는 응용프로그램에서 파일을 열기 위해 사용하는 특정 실행 파일을 추적합니다.
또한 각 값은 해당 응용프로그램이 액세스 한 마지막 파일의 디렉토리 위치를 추적합니다. 즉 최근에
사용자가 사용한 프로그램 및 최근에 접근한 폴더를 확인이 가능하다.

레지스트리 주요경로 
Windows XP- 
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU

HKU\[SID]\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU


Windows 7+ 

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU

HKU\[SID]\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU


HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU

HKU\[SID]\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU

최근 10개 데이터 조회
해당 레지스트리 값은 REG_BINARY 값이므로 reg query로 조회하면 직접 한 번에 내용을 읽을 수 없으므로 아래와 같은 방법으로 분석한다.

 

분석

분석 데이터는 최근 사용자 TimeLine 분석(https://secuworld.tistory.com/16) 을 통해 확인할 수 있다.

LastActivityView

Data Source를 보면 OpenSavePidlMRU, LastVisitedPidlMRU 등 레지스트리도 추출하여 표시한다.

 

RegRipper / rip.exe

regripper Tool 모든 plugin 분석

C:\>rip.exe -r "C:\Test\reg-hive-backup\chohb.NTUSER.DAT" -f ntuser >> c:\temp\rr-ntuser.txt


rr-ntuser.txt 파일 내용

응용 프로그램별로 가장 최근에 접근한 폴더 확인

 

반응형

반응형

파일 행위 분석-OpenSavePidlMRU

  • Windows XP의 OpenSaveMRU 이름이 Windows Vista 부터 OpenSavePidlMRU로 변경
  • Windows 탐색기 공용 대화 상자를 통해 최근에 열거나 저장된 파일 정보 저장
  • Web Browsers 및 Applications을 통해 열거나 저장한 파일 정보 저장
  • 파일의 확장자 별로 그룹화되어 있음

사용자가 최근에 열거나 저장한 파일 확인.
Windows의 표준 열기 / 저장 대화 상자에서 파일 이름을 선택할 때마다 다음 키 아래에 새 레지스트리 항목이 추가됨
단, 어떤 프로그램의 대화 상자을 통해서 열엇는지는 알 수 없다. 이 정보는 LastActivityView 도구나 $MFT, $Usnjrnl, $Logfile 분석을 통해 확인할 수 있다.

레지스트리 주요경로
Windows XP-
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU  

HKU\[SID]\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU 

Windows 7+ 

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU

HKU\[SID]\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU


공통
NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg3


F:\>reg query "HKU\S-1-5-21-2555433415-3599755044-3103386514-1001\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU"

F:\>reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU"

OpenSaveFilesView

GUI

CLI
F:\tool\forensic\opensavefilesview-x64>OpenSaveFilesView.exe /sxml f:\temp\OpenSaveFilesView.xml

F:\>LogParser.exe -h -i:xml "f:\temp\OpenSaveFilesView.xml
Fields:
  filename (S)           extension (S)               order (I)
  open_time (S)          file_modified_time (S)      file_created_time (S)
  file_size (S)          file_attributes (S)         file_owner (S)
  filename_only (S)

F:\tool\forensic\opensavefilesview-x64>F:\tool\forensic\LogParser\LogParser.exe -i:xml "select filename, file_modified_time, open_time from 'f:\temp\OpenSaveFilesView.xml'"
filename                                                       file_modified_time          open_time
--------------------------------------------------------------------------------- ---------------------- ---------------------
F:\temp\요즘부자.png                                   2020-03-05 오후 1:04:36  2020-03-05 오후 1:04:36
F:\temp\요즘부자.png                                   2020-03-05 오후 1:04:36  2020-03-05 오후 1:04:36
F:\Security\M-Trend 2019 보안 특별보고서.pdf   2020-03-05 오전 9:45:55  -
F:\Security\M-Trend 2019 보안 특별보고서.pdf   2020-03-05 오전 9:45:55  2020-03-05 오전 9:45:54
......

LastActivityView

Data Source를 보면 OpenSavePidlMRU, LastVisitedPidlMRU 등 레지스트리도 추출하여 표시한다.

 

RegRipper / rip.exe

regripper Tool 모든 plugin 분석

C:\>rip.exe -r "C:\Test\reg-hive-backup\chohb.NTUSER.DAT" -f ntuser >> c:\temp\rr-ntuser.txt


rr-ntuser.txt 파일 내용

반응형

반응형

응용 프로그램 호환성(AmCache) 분석

 

이 파일은 프로그램이 실행될 때 프로그램 경로를 임시 저장하기 위한 용도로 사용하는 것으로 파일 이름처럼 최근 실행한 프로그램 정보만 저장되어 있다.

실행한 모든 프로세스 정보가 저장되는 것은 아니고 실행 파일에서 또 다른 실행 파일이 파생(드롭퍼)되거나 다른 볼륨이나 시스템에서 복사(인터넷 다운로드 포함)된 프로그램을 실행한 경우 해당 프로그램의 정보가 자주 남는다고 한다.

 

Amcache의 경우 지속적으로 누적되다보니 시스템을 오래 사용하면 굉장히 많은 데이터를 확인할 수 있습니다. 침해사고 분석 시 악성코드(프로그램, 프로세스) 실행 흔적을 가장 먼저 봅니다. 그 중 가장 가치 있는 정보가 호환성 캐시와 앱캐시입니다.

 

앰캐시(Amcache.hve) 파일은 프로그램 호환성 관리자(Program Compatibility Assistant)와 관련된 레지스트리 하이브 파일로 응용 프로그램의 실행정보를 저장한다. 

이 파일을 통해서 응용 프로그램의 실행경로, 최초 실행시간을 확인할 수 있을 뿐 아니라, 삭제시간까지 추정할 수 있다. 응용 프로그램의 최초 설치시간 및 삭제시간까지 확인할 수 있기 때문에 프리패치(Prefetch) 파일, 아이콘캐시(Iconcache.db) 파일 분석과 병행하면 응용 프로그램의 전체적인 타임라인을 구성할 수 있다.

 

또한, 앰캐시 파일은 안티포렌식 프로그램, 포터블 프로그램 및 외장저장장치 흔적을 기록하고 있어 디지털 포렌식 관점에서 중요한 아티팩트이다.

 

하지만 작업스케줄 중 ‘ProgramDataUpdater’가 수행될 때마다 초기화가 되는 단점이 있다. ProgramDataUpdater’는 기본적으로 하루에 한 번 수행된다. 따라서 ‘RecentFileCache.bcf’를 아티팩트로 사용하려면 하루에 한 번씩 backup을 해주거나 ‘ProgramDataUpdater’위 수행시간을 늘려주면 된다.

 

이 파일은 “C:\Windows\AppCompat\Programs\” 폴더에 존재

F:\temp>dir C:\Windows\AppCompat\Programs\

윈도우7에서의 RecentFileCache.bcf 파일이 윈도우 8에서는 Amcache.hve파일로 대체되었음


프로그램 호환성 관리자와 관련된 레지스트리 하이브 파일
- 응용프로그램의 실행정보 저장
- 응용프로그램의 실행경로, 최초 실행시간, 삭제시간 정보 등 저장
- 프리패치 파일과 병행하면 프로그램의 전체적인 타임라인 구성 가능

포렌식 관점
- 모든 실행파일의 목록, 전체 경로 확인
- 파일의 최초 실행시간, 삭제시간 확인
- 안티 포렌식 프로그램, 외부 저장장치 흔적 추적

 

분석

AppCompatCacheParser

Examples: AppCompatCacheParser.exe --csv c:\temp -t -c 2
              AppCompatCacheParser.exe --csv c:\temp --csvf results.csv

 

F:\temp>"f:\tool\forensic\AppCompatCacheParser\AppCompatCacheParser.exe" --csv f:\temp --csvf amcache.csv

F:\temp>F:\tool\forensic\LogParser\LogParser.exe -stats:on -i:csv "select * from 'f:\temp\amCache.csv'"

AmcacheParser
D:\>RawCopy64.exe /filenamepath:c:\Windows\appcompat\Programs\Amcache.hve /outputpath:d:\temp

D:\>AmcacheParser.exe -f "d:\Temp\Amcache.hve" --csv "d:\temp"


RegRipper
C:\Tools\Forensic\RegRipper2.8>regex.exe -h f:\test\reg-hive-backup
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\Amcache.hve" -p amcache

반응형

반응형

응용 프로그램 호환성(Shim Cache, AppCompat Cache) 분석

 

호환성 문제를 신경써야 하는 이유는 윈도우가 버전업 되면서 API도 변경되는데 이 경우 대체 API로 리다이렉트하여 실행될 경우 보안 문제가 발생할 수도 있기 때문이다. 응용 프로그램 실행 흔적 분석에 있어 PreFetch는 128개 라는 크기(개수) 제한으로 인해 PreFetch에는 없는 정보가 Shim Cache-AppCompatCache로 불리기도 함-에는 존재할 수가 있다.

 

응용 프로그램 간 호환성을 제어하고 트러블슈팅과 문제 해결을 위해 만든 파일
악성코드 실행 시 호환성 문제 자주 발생하기 때문에 침해분석에 활용

프리패치와 비슷한 응용프로그램의 실행 정보 저장

- 모든 실행 파일의 경로, 크기, 마지막 수정시간, 마지막 실행 시간 등의 정보를 저장 
- 하지만 프리패치는 한정적이라 사라질 가능성이 있음. 그렇지만 Shim Cache에는 존재할 수 있음

 

또한, 최근 악성코드는 프리패치와 같이 알려진 흔적을 모두 삭제하는 경향이 있다. 이런 상황에서 호환성 캐시 정보는 분석에 매우 중요하게 사용될 수 있다. 특히, 시간 정보가 포함되기 때문에 더할 나위없이 유용하다. 마지막 업데이트 시간이 XP에만 존재하는 것은 안타깝다.

 

뛰어난 공격자라면 각 운영체제 버전에 맞게 호환성 문제가 없는 프로그램을 사용하겠지만, APT 공격과 같이 오랫동안 여러 시스템을 감염시켜야 하는 경우 시스템 버전이 다양하기 때문에 호환성 캐시에 흔적이 저장될 가능성이 매우 크다.

 

호환성 캐시는 해당 시스템에서 실행 시 호환성 문제가 발생했던 응용프로그램의 정보를 저장하고 있다. 일반적인 캐시의 역할과 마찬가지로 이미 실행했던 프로그램이라면 데이터베이스를 살펴보기 전에 호환성 캐시를 이용해 빠르게 처리한다. 호환성 캐시 정보는 레지스트리에 저장되는데 경로는 다음과 같다.

 

Shim Cache 세 가지 경우에 따른 레지스트리 경로

1) 호환성 충돌 대화상자에서 사용자가 “이 프로그램이 제대로 설치되었습니다.”를 선택한 경우

C:\>reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store"

 

2) 응용프로그램 호환성 데이터베이스에 없을 경우 : 호환성 캐시 레지스트리

C:\>reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" [/s]

 

3) 응용프로그램 호환성 해결 설정 : 호환성 모드, 권한 등 설정된 경우

C:\>reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" [/s]

 

분석

ShimCacheParser Tool
E:\Tools\ShimCacheParser>py -2 ShimCacheParser.py -l -o "e:\temp\shimcache.csv"
[+] Dumping Shim Cache data from the current system...
[+] Found Windows 10 Creators Update Apphelp Cache data...
[+] Found Windows 10 Creators Update Apphelp Cache data...
[+] Writing output to e:\temp\shimcache.csv...


E:\Tools\ShimCacheParser>type e:\temp\shimcache.csv | more 
Last Modified,Last Update,Path,File Size,Exec Flag 
10/30/14 00:51:20,N/A,C:\Users\admin\AppData\Local\Temp\nsv36D4.tmp\UninstallASM.exe,N/A,N/A 
02/20/20 03:31:34,N/A,C:\Users\Public\Documents\DuzonISS\ArgosLiveUpdate\ArgosLiveUpdateUninstaller.exe,N/A,N/A 
05/11/19 09:43:41,N/A,C:\WINDOWS\system32\reg.exe,N/A,N/A 
......


F:\temp>LogParser.exe -stats:on -i:csv "select filename, path from 'f:\temp\ShimCache.csv'"
Filename              Path
--------------------- ----------------------------------------------------------------------------------
f:\temp\ShimCache.csv F:\OSTEMP\nsd4F90.tmp\UninstallASM.exe
f:\temp\ShimCache.csv C:\Program Files (x86)\Google\Chrome\Application\80.0.3987.132\Installer\setup.exe
f:\temp\ShimCache.csv F:\tool\forensic\CrowdResponse64.exe
f:\temp\ShimCache.csv F:\tool\forensic\CrowdResponse.exe
f:\temp\ShimCache.csv C:\WINDOWS\system32\DllHost.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\accesschk.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\accesschk64.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\CrowdResponse.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\CrowdResponse64.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\gawk.exe
......

Python v2.x만 지원, v3.x 지원안됨. 그래서 실행 파일을 만들어 실행
F:\temp>f:\tool\forensic\ShimCacheParser\ShimCacheParser.exe -l -o f:\temp\ShimCache.csv
F:\temp>f:\tool\forensic\ShimCacheParser\ShimCacheParser.exe -l
[+] Dumping Shim Cache data from the current system...
[+] Found Windows 10 Creators Update Apphelp Cache data...
[+] Found Windows 10 Creators Update Apphelp Cache data...
Last Modified Last Update Path File Size Exec Flag
10/30/14 00:51:20 N/A F:\OSTEMP\nsd4F90.tmp\UninstallASM.exe N/A N/A
03/04/20 00:29:04 N/A C:\Program Files (x86)\Google\Chrome\Application\80.0.3987.132\Installer\setup.exe N/A N/A
03/04/20 08:43:35 N/A F:\tool\forensic\CrowdResponse64.exe N/A N/A
11/19/18 23:43:24 N/A F:\tool\forensic\CrowdResponse.exe N/A N/A
......

RegRipper
C:\Tools\Forensic\RegRipper2.8>regex.exe -h f:\test\reg-hive-backup
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\system" -p appcompatcache

F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\system" -p appcompatcache_tln

F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\system" -p shimcache

F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\system" -p shimcache_tln 



<참고 1>

ShimCacheParser Tool 의 아쉬운 점은 디스크 이미지의 분석은 불가능하고 라이브 시스템에서만 동작한다는 점이다.
따라서 타임라인 통합 분석이 힘든 라이브 포렌식에 유용하게 활용 가능하다.

 

<참고 1>

윈도우의 호환성 관리
윈도우는 어떻게 호환성 문제가 있는 프로그램을 식별하고 해결하는 것일까? 응용프로그램 호환성 데이터베이스가 이 역할을 해준다.  호환성 처리 모듈은 DLL로 구성되어 있고, 호환성 데이터베이스는 Appfix Package라는 형식의 .sdb 파일로 존재한다. 관련 파일은 다음 위치에서 확인할 수 있다.

*  C:\Windows\AppPatch\

DLL 이외에 다음과 같은 인덱싱된 SDB(Shim Database) 파일이 보일 것이다.
sysmain.sdb
drvmain.sdb
msimain.sdb
pcamain.sdb

SDB 파일의 내용을 XML로 변환해주는 sdb2xml 도구도 있다. 이 도구를 이용해 SDB 파일의 내용을 확인해보면 다양한 응용프로그램 목록을 확인할 수 있다.

윈도우에서 응용프로그램을 실행하게 되면 kernel32.dll의 CreateProcessInternalW 함수가 시작되고, 해당 함수는 내부적으로 BasepCheckBadApp 익스포트 함수를 호출한다. 이 함수가 호환성 체크를 담당하는 함수로 데이터베이스 정보를 탐색하기 전에 먼저 호환성 캐시 데이터를 확인한다. 만약, 캐시에서 응용프로그램의 호환성 문제를 발견하지 못하면 데이터베이스를 확인하고 만약 문제가 있을 경우 처리 방안을 선택할 수 있도록 "이 프로그램이 제대로 설치되지 않앗을 수 있습니다" 라는 사용자 알람 창을 표시한다.

반응형

반응형

최근 실행 프로그램 분석(RunMRU 분석)

 

시작 실행 경로를 통해서 실행시킨 명령어 또는 응용 프로그램 정보

 

레지스트리 조회

경로 : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

 

F:\tool\forensic\rifiuti>reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" /s
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
    a    REG_SZ    cmd\1
    b    REG_SZ    certmgr.msc\1
    c    REG_SZ    fsmgmt.msc\1

    d    REG_SZ    \\10.102.10.156\share\1  <- 원격 컴퓨터 접속이나 원격 컴퓨터 내 프로그램 실행

    e    REG_SZ    \\10.102.10.155\1

    f    REG_SZ    \\10.102.10.145\1

    g    REG_SZ    \\10.102.10.148\1

......

 

ExecutedProgramsList
GUI

CLI
F:\>F:\tool\forensic\ExecutedProgramsList.exe /sxml "F:\temp\ExecutedPrograms.xml"
F:\>LogParser.exe -stats:off -i:xml "select executed_file, last_executed_on from 'F:\temp\ExecutedPrograms.xml' order by last_executed_on desc"
executed_file                                                                                              last_executed_on
--------------------------------------------------------------------------------------------------------------------------- -------
C:\Windows\System32\SEARCHFILTERHOST.EXE                                              2020-03-05 오후 2:33:56
C:\PROGRAM FILES (X86)\Dropbox\Update\DROPBOXUPDATE.EXE                     2020-03-05 오후 2:33:01
......

 

RegRipper
F:\>F:\tool\forensic\RegRipper2.8\rip.exe -r "f:\test\reg-hive-backup\chohb.NTUSER.DAT" -p runmru 
RunMru 
Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU 
LastWrite Time Thu Jan  1 00:00:00 1970 (UTC) 
MRUList = ba 
a   cmd\1 
b   explorer.exe\1

 

포렌식 도구마다 분석 방법 및 절차가 달라서 결과 또한 다르다. 그래서 동일한 아티팩트에 대해서 몇 가지 도구를 
가지고 Cross Check 하는 것이 좋다.

 

 

반응형

반응형

바로가기 링크파일 분석

 

바로가기 파일(*.lnk), 최근 실행했거나 자주 사용하는 프로그램이나 파일, 폴더 경로에 대한 정보 저장

 

링크 파일(LNK)이라고도 불리며 영문 명칭은 “Windows Shortcut”, “Shell Link” 로 불리며 윈도우에만 존재하는 기능으로 파일, 디렉터리 등 객체를 참조하는 파일, 커맨드라인이 아닌 GUI에서만 동작, lnk 확장자를 가짐

 

다른 OS에는 비슷한 기능으로 심볼릭 링크가 존재한다. 대부분의 사람들이 이 두 기능을 같은 기능으로 보고 있지만 분명히 다른 기능이다. 윈도우의 바로가기 기능은 OS 차원의 기능이고, 심볼릭 링크는 파일시스템 차원의 기능이어서 동작방식부터가 다르다.

 

윈도우의 바로가기 기능의 경우 바로가기 파일을 통해 실현 가능한데, 이 파일은 일반 파일과 동일하게 메타데이터와 MFT 엔트리를 가지고 있고 심볼릭 링크의 경우 원본 파일을 가리키고 있는 것은 파일이 아닌 것으로 파일시스템이 인식하기 때문에 MFT 엔트리를 가지고 있지 않아서 이 두 기능이 다르다고 할 수 있다.

 

윈도우 바로가기 파일은 시스템 사용자가 편의를 위해서 사용하는 경우도 많지만, 운영체제가 자동 실행이나 최근 접근한 데이터, 자주 사용하는 파일/프로그램에 관한 정보를 관리할 때에 사용하기도 한다. 바로가기 파일에는 링크 대상 파일에 관한 생성.접근.수정시간 정보 및 원본 위치 등에 관한 기록을 포함하고 있으므로, 정보 유출에 관한 조사나 시스템 사용에 관한 시간 관계를 정리할 때 유용하게 사용되는 경우가 많다.

 

바로가기 생성
시스템에서 내부적으로 자동으로 생성하는 경우도 있고 어떤 프로그램을 설치하는 과정에서 생성하는 경우도 있고 사용자가 바로가기 생성으로 할 수 도 있다. 

1. 윈도우 설치 시 - 윈도우에서 기본적으로 지원하는 '내 컴퓨터', '작업 표시줄 아이콘' 등도 모두 바로가기 파일이다.

2. 윈도우 설치 후 - 대표적으로 '내 최근 문서' 폴더의 문서 목록들이 있다.

3. 어플리케이션 설치 시 - 어플리케이션 설치 중 '바탕화면에 바로가기 아이콘을 생성 하시겠습니까?' 에서 예 대답으로     아이콘 생성

4. 사용자 임의 생성 - 파일을 마우스 오른쪽 클릭 후 바로가기 생성 하는 것들

 
LNK 파일이 존재하는 폴더

윈도우 버전별로 다를 수 있으며 아래 폴더 외에도 각 운영체제별로 LNK 파일이 생성되는 폴더는 다양하다.

 

바탕화면(Desktop) 폴더

Windows XP/Vista : C:\Documents and Settings\<user name>\Desktop

Windows 7+ : C:\Users\<user name>\Desktop

 

최근문서(Recent) 폴더

Windows XP/Vista : C:\Documents and Settings\<user name>\Recent

Windows 7+ : C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Recent

 

시작프로그램(Start) 폴더

Windows XP/Vista : C:\Documents and Settings\<user name>\Start Menu\Programs

Windows 7+ : C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

 

빠른실행(Quick Launch) 폴더

Windows XP/Vista : C:\Documents and Settings\<user name>\Application Data\Microsoft\Internet Explorer\Quick Launch

Windows 7+ : C:\Users\<user name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

 

사용자의 내 음악(My Music), 내 그림(My Pictures), 내 비디오(My Videos) 폴더

“%SystemDrive%\Users\Public” 하위 폴더 링크

 

Send To 폴더 (내보내기 폴더)

%UserProfile%\AppData\Roaming\Microsoft\Windows\SendTo

탐색기에서 마우스 우버튼 -> 보내기 -> 특정 어플리케이션이나 드라이브 선택해서 생성한 링크 파일들

 

위 폴더에는 사용자가 의도적으로 생성한 LNK 파일이 있는 경우도 있지만, 의도하지 않게 생성되는 LNK 파일도 있다. 그 중 하나가 최근문서(Recent) 폴더이다. 이 폴더에는 자동으로 최근에 사용자가 실행했던 파일 및 폴더에 대한 LNK 파일이 저장된다. 따라서, 해당 폴더의 LNK 파일을 분석하면 유용한 정보를 얻을 수 있다.

 

F:\tool\forensic\CrowdResponse>dir /a-d C:\Users\chohb\Desktop\*.lnk
2019-12-20  오후 01:33               982 AhnRpt.lnk
2019-12-20  오후 01:33             1,094 apimonitor.lnk
......

 

바로가기파일 분석 활용
* 자동 생성된 바로가기 파일을 이용해 폴더나 파일의 실행 흔적 분석 (자주 접근하는 문서, 실행하는 프로그램 흔적)
* 링크 대상의 위치를 이용해 외장저장장치를 이용한 데이터 이동 흔적 분석(응용프로그램 및 일반 최근 문서 위주)
* 애플리케이션 취약점을 악용하는 악성코드일 경우, 실행 흔적 분석
* 바로가기 파일 자체로 침해를 확인하기는 어렵기 때문에 타임라인 분석과 연계 분석

분석

lnkanalyser.exe

F:\>lnkanalyser.exe -i "C:\Users\chohb\AppData\Roaming\Microsoft\Windows\Recent\정보자산안전진단도구 (2).lnk"

LECmd
명령어 예제
Examples: 
LECmd.exe -f "C:\Temp\foobar.lnk"

LECmd.exe -f "C:\Temp\somelink.lnk" --json "D:\jsonOutput" --jsonpretty
LECmd.exe -d "C:\Temp" --csv "c:\temp" --html c:\temp --xml c:\temp\xml -q
LECmd.exe -f "C:\Temp\some other link.lnk" --nid --neb
LECmd.exe -d "C:\Temp" --all

개별 파일 분석
F:\tool\forensic\lnkanalyser>F:\tool\forensic\LECmd.exe -f "C:\Users\chohb\AppData\Roaming\Microsoft\Windows\Recent\정보자산안전진단도구 (2).lnk"

폴더 분석

F:\tool\forensic\lnkanalyser>F:\tool\forensic\LECmd.exe -d "C:\Users\chohb\AppData\Roaming\Microsoft\Windows\Recent" --all

 

기타 도구
Windows File Analyzer from http://www.mitec.cz/wfa.html.

Lifer- Windows Link File Examiner, http://code.google.com/p/lifer/downloads/list., https://github.com/Paul-Tew/lifer


기타 많은 도구들이 있다.

 

반응형

반응형

부트 프리패치 분석

부트 프리패치는 NTOSBOOT-BOODFAAD.PF라는 이름을 가지며, 단일 파일로 존재한다. 부트 프리패치는 시스템이 부팅되는 속도를 조금 더 빠르게 하기 위한 것으로 부팅 시 사용되는 시스템 자원을 파악하여 한곳에 모아놓는 역할을 한다.

 

부트 프리패치 파일은 윈도우가 부팅될 때, 최대 120초 동안을 모니터링하여 사용되는 코드와 관련 데이터를 파일로 저장해둔 것으로 부팅 속도를 향상시켜주는 역할을 한다.


분석 관점에서 부트프리패치는 시스템이 부팅될 때 로드되는 파일들의 목록을 확인할 수 있는 여지를 주기 때문에 유용하다. 다만 부트 프리패치 목록에 없다고하여 부팅시 로드되는 악성코드가 없다고 단정할 수는 없다.

 

부트 프리패치 파일은 부팅될 때 참조되는 목록을 저장하기 때문에 쉽게 보면 부트킷(Bootkit)이나 오토런(AutoRun) 류의 악성코드 흔적이 남을 것이라고 생각할 수 있다. 하지만 부트 프리패쳐의 모니터링에 쉽게 확인되는 것은 아니다.

하지만 지속 반복적으로 분석하여  부트 프리패치만 제대로 감시하면 악성코드나 이상한 프로세스의 실행 여부는 확인이 가능할 것 같다.

 

부트 프리패치 파일인 “NTOSBOOT-*.pf”의 참조 목록으로 순서를 나타내는 “Index”로 정렬하여 살펴보면 부팅 시 참조되는 파일 순서를 살펴볼 수 있다.

 

분석

부트 프리패치의 분석 방법은 일반 어플리테이션 프리패치 분석과 동일하다.

참고 : https://secuworld.tistory.com/21?category=849780

 

F:\tool\forensic\rifiuti>F:\tool\forensic\PECmd.exe -f "f:\Test\fetchfiles\NTOSBOOT-B00DFAAD.pf"
Command line: -f f:\Test\fetchfiles\NTOSBOOT-B00DFAAD.pf
Keywords: temp, tmp
Processing 'f:\Test\fetchfiles\NTOSBOOT-B00DFAAD.pf'

Created on: 2020-03-05 오전 4:07:50 +00:00
Modified on: 2020-03-05 오전 4:07:51 +00:00
Last accessed on: 2020-03-05 오전 4:07:51 +00:00

Executable name: NTOSBOOT
Hash: B00DFAAD
File size (bytes): 3,157,736
Version: Windows Vista or Windows 7

Run count: 6
Last run: 2016-10-28 오전 3:00:28 +00:00

Volume information:

#0: Name: \DEVICE\HARDDISKVOLUME1 Serial: 624F594 Created: 2011-11-01 오전 1:46:58 +00:00 Directories: 1 File references: 13
#1: Name: \DEVICE\HARDDISKVOLUME2 Serial: D6BABAFA Created: 2012-10-22 오전 4:35:47 +00:00 Directories: 431 File references: 6,286
#2: Name: \DEVICE\HARDDISKVOLUME3 Serial: CC3BAD7C Created: 2015-07-21 오전 6:19:31 +00:00 Directories: 2 File references: 15
#3: Name: \DEVICE\HARDDISKVOLUME4 Serial: 7A83C754 Created: 2015-12-02 오전 2:09:43 +00:00 Directories: 4 File references: 21
#4: Name: \DEVICE\HARDDISKVOLUME6 Serial: C653E2BE Created: 2016-01-22 오전 9:00:21 +00:00 Directories: 0 File references: 0
#5: Name: \DEVICE\HARDDISKVOLUME7 Serial: 90748064 Created: 2016-02-04 오전 2:12:09 +00:00 Directories: 0 File references: 0

Directories referenced: 438

000: \DEVICE\HARDDISKVOLUME1\SYSTEM VOLUME INFORMATION
001: \DEVICE\HARDDISKVOLUME2\PROGRAM FILES
002: \DEVICE\HARDDISKVOLUME2\PROGRAMDATA
003: \DEVICE\HARDDISKVOLUME2\PROGRAMDATA\KASPERSKY LAB
004: \DEVICE\HARDDISKVOLUME2\PROGRAMDATA\KASPERSKY LAB\KES10
005: \DEVICE\HARDDISKVOLUME2\PROGRAMDATA\KASPERSKY LAB\KES10\BASES
006: \DEVICE\HARDDISKVOLUME2\SYSTEM VOLUME INFORMATION
007: \DEVICE\HARDDISKVOLUME2\WINDOWS
008: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32
009: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\CODEINTEGRITY
010: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS
011: \DEVICE\HARDDISKVOLUME2\$EXTEND
012: \DEVICE\HARDDISKVOLUME2\$RECYCLE.BIN
013: \DEVICE\HARDDISKVOLUME2\$RECYCLE.BIN\S-1-5-21-2709948117-530518507-4126139040-1012
014: \DEVICE\HARDDISKVOLUME2\PROGRAM FILES\ADOBE
015: \DEVICE\HARDDISKVOLUME2\PROGRAM FILES\ADOBE\READER 11.0
......

Files referenced: 3,852

0000: \DEVICE\HARDDISKVOLUME2\$MFT
0001: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\CDROM.SYS
0002: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\CODEINTEGRITY\BOOTCAT.CACHE
0003: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\ASWSP.SYS
0004: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\NTDLL.DLL
0005: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\KLIF.SYS
0006: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\KLFLT.SYS
0007: \DEVICE\HARDDISKVOLUME2\SYSTEM VOLUME INFORMATION\MDLLOG.DAT
0008: \DEVICE\HARDDISKVOLUME2\SYSTEM VOLUME INFORMATION\002.DAT
0009: \DEVICE\HARDDISKVOLUME2\SYSTEM VOLUME INFORMATION\001.DAT
0010: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\NCFSECU.SYS
0011: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\NCPMDRV.SYS
0012: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\NULL.SYS
0013: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\BEEP.SYS
0014: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\VGA.SYS
0015: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\DRIVERS\VIDEOPRT.SYS
......

분석 결과 예제

 

반응형

반응형

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 파일을 열어보면 데이터를 확인 할 수 있습니다.

반응형

반응형

prefetch 분석

 

윈도우의 프리패칭은 부팅할 때나 응용프로그램을 시작할 때 성능을 향샹시키기 위해 구현된 기능이다. 부팅 시에는 120초를 모니터링하고 응용프로그램 시작 시에는 10초를 모니터링 한 후, 모니터링한 정보로 프리패치 파일을 생성한다. 생성된 프리패치 파일은 재부팅할 때나 응용프로그램을 재실행할 때 속도 향상을 위해 사용된다.


프리패치 파일은 “%SystemRoot%\Prefetch” 폴더에 저장되는데 최대 128개의 파일을 유지한다. 새로운 응용프로그램이 실행되면 LRU 알고리즘에 의해 가장 오래 사용하지 않은 응용프로그램의 프리패치 파일이 삭제되고 새 응용프로그램 프리패치 파일이 추가된다. 오래된 프리패치 파일의 삭제는 일반 삭제이므로 비할당영역에서 프리패치 파일을 카빙해보면 상당히 많은 파일을 발견할 수 있다. 저장장치를 여유롭게 사용했다면 윈도우 설치 시점부터 현재까지의 응용프로그램 실행 이력을 확인할 수도 있다

프리패치 파일에는 실행한 프로그램의 경로가 나타내어진다. 이를 통하여 해당 프로그램의 위치를 알 수가 있는데, 만약 프로그램이 USB에 담겨있던 프로그램이라면 이 또한 확인이 가능하다. 일반 프로그램들은 C:\로 시작하지만 이 경우에 있어선 독특하게 \VOLUME으로 시작하는 것을 확인할 수가 있다. 이를 통해 우리는 외부저장장치에 있던 프로그램이 실행되었다는 흔적을 찾을 수가 있다.


프리패치 파일에서 획득 가능한 정보는 다음과 같다.
- 응용프로그램 이름
- 응용프로그램 실행 횟수
- 응용프로그램의 최초 실행 시간은 프리패치 파일 생성시간
- 응용프로그램 마지막 실행 시각
- 응용프로그램 파일의 파일시스템 시간 정보
- 응용프로그램이 위치한 볼륨 정보 
- 응용프로그램이 참조하는 파일 목록(DLL 및 일반 파일) 

 

특정 시스템에서 디지털 포렌식 분석을 수행할 때 사고가 일어난 후 많은 시간이 지나지 않았다면 프리패치 파일에 저장되는 위 정보에서 참조 목록의 순서를 나타내는 Index로 정렬하여 사용자 행위나 공격 흐름을 재구성할 수 있다. 물론, 프리패치 파일만으로는 한계가 있으므로 다양한 시스템 아티팩트를 종합하여 통합 타임라인 분석을 수행해야 한다.

 

한두개의 아티팩트나 이벤트만으로 분석하면 사건의 흐름이나 연관성을 분석하는데 제한적이고 한계가 있으므로 다양한 아티팩트나 이벤트를 대상으로 타임라인 분석을 수행한다


프리패치 분석 중 고려해야 할 몇 가지 사항
들이 있다.

1) 오래된 프리패치 파일은 삭제되어 비할당 영역에 존재할 수 있으므로 카빙을 통해 분석이 가능하다.

2) 원본 실행파일이 제거되어도 프리패치 파일은 시스템에 남아있다. 프리패치 파일은 있는데 실행 파일이 없는 경우

   : 실행 후 실행파일을 삭제한 경우나 psexec 또는  net use 명령으로 원격 실행한 경우

3) 프리패치파일이 존재하지 않는다고 특정 프로그램이 실행되지 않았다는 의미는 아니다.

   실행된 exe 파일을 지웠거나 pxexec 같은 tool을 통해 원격으로 실행한 경우일 수 있다.
   pxexec 같은 tool을 통해 원격으로 실행한 경우에는 프리패치 파일이 생성되지 않는다.

4) 윈도우 XP이후의 모든 운영체제에서 프리패치 파일을 생성하는 것은 아니다.

   윈도우 7이상의 운영체제에서 SSD를 사용할 경우 메모리 최적화 기능으로 인해 프리패치 생성이
   비활성화 되있을 수 있으며, 운영체제의 세부적인 버전별로 차이가 존재한다. 

   또한 프리패치 관련 레지스트리(HKLM\SYSTEM\ControlSet00#\Control\Session Manager\Memory
   Management\Prefetch Parameter\EnablePrefetcher)에서 비활성화  되어 있을 경우도 존재한다.

4) 참조 목록에서 실행가능한 파일이 있는지 확인 : scr, exe, lnk, bat, vbs, js, com, ps1 등

5) 실행 파일이 아닌 워드, 엑셀, pdf 등의 일반 파일에서 cmd.exe, screen.scr, cscript 등을 참조하는 경우 사에
   분석 필요 
6) 참조 목록에서 경로가 일반 드라이브 문자가 아닌 \\Device 또는 \\Device\HARDDISKVOLUME??으로
   시작하거나 고정형 디스크 드라이브 문자 외의 문자로 시작하는 경우 유심히 살펴봐야 한다.

   즉 Full Path의 경로가 로컬의 또 다른 볼륨인지 외장 볼륨인지는 레지스트리에 마운트된 볼륨 정보와 함께
   판단할 필요가 있다.

7) 참조 목록에 별도의 시간 정보가 기록되지 않아 정상 파일을 패치하여 동작하는 부류의 악성코드는 찾기 힘들다는
   한계
가 있다.

 

<참고>

어플리케이션 프리패치는 "[실행파일명] – [파일 위치에 대한 해쉬].pf"와 같은 이름으로 생성된다.

프리패치와 슈퍼패치는 기본적으로 보조기억장치와 주 기억장치의 속도 차이를 극복하기 위해 사용되는 기술이므로

보조 기억 장치의 속도가 빠르다면 불필요한 기술이라고도 볼 수 있다.

 

윈도우 7이상의 운영체제나 윈도우 서버군 OS에서는 SSD를 사용할 경우, 메모리 관리 기술을 자동으로 최적화하는 기능이 추가되었다. 그러므로 실제로 SSD가 사용된 시스템을 조사하다보면 프리패치 파일이 생성되지 않는 환경이 많다.

 

서버 제품군에서 응용프로그램 프리패칭을 사용하지 않는 이유는 응용프로그램이 반복적으로 실행되기 보다는 한번 실행되면 오랫동안 유지되는 환경이기 때문이다.

하지만 Windows 7이상의 모든 운영체제에서 프리패치나 슈퍼패치를 비활성화 하는 것은 아닌 것으로 보인다. 운영체제의 세부적인 버전 별로 자동 설정 여부가 다른 것으로 확인되므로, 우선적으로 프리패치와 슈퍼패치의 존재 여부를 확인한 후, 존재하지 않는다면, 아래 레지스트리와 서비스의 설정 상태를 확인하여 의도적으로 삭제한 것인지 원래 존재하지 않는 것인지를 판단하여 복구 여부를 결정하는 절차로 분석을 진행할 수 있도록 하자.

 

레지스트리 경로

프리패치 생성 여부 레지스트리 경로

* HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\EnablePrefetcher

* HKLM\SYSTEM\ControlSet00#\Control\Session Manager\Memory Management\Prefetch Parameter\EnablePrefetcher 
* HKLM\SYSTEM\ControlSet00X\Control\Session Manager\Memory Management\Prefetch Parameter\EnableSuperfetch 

 

각각의 키의 값은 아래의 의미를 가진다. 
0 : 사용 하지 않음. 
1 : 응용프로그램 캐싱만 사용 
2 : 부트 캐싱만 사용 
3 : 응용프로그램/부트 캐싱 모두 사용(기본 설정) 

 

C:\>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters"


관련 서비스 
아래 서비스의 동작 여부를 확인
* Event Log | Windows Event Log (Prefetch 생성에 영향) <- 서비스명 eventlog
* Task Scheduler (Prefetch 생성에 영향) <- 서비스명 schedule
* Superfetch (Superfetch 생성에 영향) <- 최근 서비스명이 sysmain으로 변경

 

프리패치 파일 목록

F:\tool\forensic\RegRipper2.8>dir %windir%\prefetch\*.pf /a-d /o-d
2020-03-04  오후 04:40             9,716 SPPSVC.EXE-7B160CA5.pf
2020-03-04  오후 04:40            12,561 GNDUMP.EXE-7354CC54.pf
2020-03-04  오후 04:39             4,209 SEARCHFILTERHOST.EXE-10E4267C.pf

......

 

PECmd Tool

F:\tool\forensic\RegRipper2.8>F:\script\batch\PECmd.exe -f "c:\windows\prefetch\WINWORD.EXE-A4E0DB06.pf"

일괄 분석

C:\>PECmd.exe -d c:\Windows\prefetch > c:\temp\prefetchAnalyze.lst

 

WinprefetchView Tool
GUI

CLI

C:\>WinPrefetchView.exe /folder %windir%\prefetch /sort "~Modified Time" /sxml f:\temp\winpretchview.xml

 

C:\>LogParser.exe -h -i:xml "f:\temp\winpretchview.xml" -headerrow:on

......

Fields: 

  filename (S)        created_time (S) modified_time (S) file_size (S)
  process_exe (S)     process_path (S) run_counter (I)   last_run_time (S)
  missing_process (S)
......

 

C:\>LogParser.exe -stats:off -i:xml "select * from 'f:\temp\winpretchview.xml'"

반응형

반응형

MUICache 분석

 

다중 언어를 지원하기 위해 응용 프로그램의 이름을 캐시하는 레지스트리. 
평소 사용하지 않는 프로그램의 이름도 표시된다. 
   - 윈도우에서 사용되는 기본 프로그램과 평소에 실행하지 않았던 프로그램 목록도 포함
각각의 국가별로 프로그램 명칭 및 경로를 관리

분석자 입장에서는 이 MUICache 목록에 일반적이지 않은 프로그램들이 추가되어 있지 않은지 확인해봐야 한다. 일반적인 프로그램 중 윈도우에서 사용되는 기본 프로그램들은 이미 목록에 있을테고 사용자가 설치하여 사용하는 프로그램도 한번이라도 실행했다면 MUICache 목록에 기록이 된다. , 일부러 지우지 않는한 한번이라도 실행된 프로그램은 MUICache에 남는다.

 

어플리케이션(프로그램)이 실행할 때마다, 윈도우는 실행 파일 리소스에서 프로그램의 이름을 추출한다. 추후 재사용을 위해, "MUICache"로 알려진 레지스트리 키에 저장을 한다. 

 

MUICache는 프로그램 실행을 보여주는 UserAssist 키와 비슷한 역할을 한다고 볼 수 있으며, 공격자가 실행한 악성코드, 삭제 프로그램등의 흔적을 찾을 수 있다. 포렌식에서는 MUICache목록에 일반적이지 않은 프로그램이 추가되어 있지 않은지 확인이 필요하다. MUICache 는 시간 정보가 없으므로 실행 후 삭제된 프로그램이나 히든 프로그램들의 실행 흔적 분석에 좋다.

 

레지스트리 경로
흔히들 부팅 후 사용되는 메모리의 양을 줄이기 위해 레지스트리에서 MUICache를 지우는 경우가 있습니다.
지우셔도 상관은 없습니다. 아래 레지스트리를 자세히 보시면 평소 실행하지 않았던 프로그램들도 목록에 포함되어 있는걸 확인하실 수 있습니다.

 

하이브파일 : NTUser.DAT
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

HKEY_CURRENT_USER\Software\Software\Classes\LocalSettings\MuiCache

HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\ShellNoRoam\MUICache
HKEY_USERS\{SID}\Software\Microsoft\Windows\ShellNoRoam\MUICache

F:\>reg query "HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache"

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
    LangID    REG_BINARY    1204
    C:\WINDOWS\system32\explorerframe.dll.FriendlyAppName    REG_SZ    ExplorerFrame
    C:\WINDOWS\system32\explorerframe.dll.ApplicationCompany    REG_SZ    Microsoft Corporation
    C:\WINDOWS\system32\shell32.dll.FriendlyAppName    REG_SZ    Windows 셸 공용 Dll
    C:\WINDOWS\system32\shell32.dll.ApplicationCompany    REG_SZ    Microsoft Corporation
    C:\Windows\System32\fsquirt.exe.FriendlyAppName    REG_SZ    fsquirt.exe
    C:\Windows\System32\fsquirt.exe.ApplicationCompany    REG_SZ    Microsoft Corporation
    D:\Program Files (x86)\Evernote\Evernote\Evernote.exe.FriendlyAppName    REG_SZ    Evernote

.......


MUICacheView.exe

F:\>MUICacheView.exe /sxml muicache.xml /sort "Application Name"

F:\tool\forensic\RegRipper2.8>type muicache.xml

F:\tool\forensic\RegRipper2.8>F:\script\batch\LogParser.exe -stats:off -i:xml "select * from 'muicache.xml'"
application_path                                                           application_name
-------------------------------------------------------------------------- ------------------------------------------------------- 
F:\tool\network\chromedriver\chromedriver.exe.FriendlyAppName              chromedriver.exe
F:\tool\network\chromedriver.exe.FriendlyAppName                           chromedriver.exe
F:\temp\hConvert2pfx.exe.FriendlyAppName                                   Covert2Pfx
F:\Dropbox\DFIR\Window\SystemBasic\Tools\REGA.exe.ApplicationCompany       DFRC
D:\Program Files (x86)\Notepad++\notepad++.exe.ApplicationCompany          Don HO don.h@free.fr
C:\Program Files (x86)\markany\maepsrt\ePageSaferRT.exe.FriendlyAppName    ePageSafer NoAX (REPORT)
D:\Program Files (x86)\Evernote\Evernote\Evernote.exe.FriendlyAppName      Evernote

......

 

regripper

C:\Tools\Forensic\RegRipper2.8>regex.exe -h f:\test\reg-hive-backup


F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\test\reg-hive-backup\chohb.NTUSER.DAT" -p muicache
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\test\reg-hive-backup\chohb.NTUSER.DAT" -p muicache_tln

F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\test\reg-hive-backup\chohb.USRCLASS.DAT" -p muicache 
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\test\reg-hive-backup\chohb.USRCLASS.DAT" -p muicache_tln 

반응형

반응형

UserAssist 분석

 

레지스트리 키의 일종으로 최근에 실행한 프로그램이나 자주 사용하는 프로그램의 목록, 마지막 실행날짜, 실행 횟수 등이 기록되어 있다.  각 사용자의 NTUSER.DAT 레지스트리 파일에 응용 프로그램의 실행 횟수를 유지한다.

 

추가적으로 Windows7/Vista 이후부 터 생겨난 UAC로 인해 일반사용자가 특정 경로에 파일이나 레지스트리를 쓰게 되면 파일, 레지스트리 가상화가 이루어지는데 이때 가상화를 통해 쓰여진 데이터는 NTUSER.dat가 아닌 UsrClass.dat에 저장되기 때문에 정확한 분석을 위해 UsrClass.dat도 추가적으로 수집 및 분석해야 한다.

 

계정 sid 조회

F:\tool\forensic\usbdeviceforensics>whoami /user <- 현재 사용자 SID
chohb\chohb     S-1-5-21-2555433415-3599755044-3103386514-1001


F:\tool\forensic\usbdeviceforensics>WMIC useraccount get name, sid /format:table

Name                    SID
Administrator          S-1-5-21-2555433415-3599755044-3103386514-500
chohb                    S-1-5-21-2555433415-3599755044-3103386514-1001
DefaultAccount         S-1-5-21-2555433415-3599755044-3103386514-503
Guest                     S-1-5-21-2555433415-3599755044-3103386514-501
WDAGUtilityAccount  S-1-5-21-2555433415-3599755044-3103386514-504

 

레지스트리 경로

값이 인코딩 되어 있다.
경로 1 : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

경로 2 : HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\

 

- {USER} 부분은 확인하고자 하는 계정의 SID

- 하위에 응용프로그램 GUID\Count 구조로 구성되어 있거 인코딩되어 있어 바로 읽기가 불가능

- 그러므로 MUICache와는 달리 프로그램으로 보는게 훨씬 보기 좋음

 

레지스트리 외 관련 파일
참고 : https://secuworld.tistory.com/30

 

regripper
C:\Tools\Forensic\RegRipper2.8>regex.exe -h f:\test\reg-hive-backup

F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\test\reg-hive-backup\chohb.NTUSER.DAT" -p userassist_tln
1583282229|REG|||[Program Execution] UserAssist - {1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\cmd.exe (14)
1583282217|REG|||[Program Execution] UserAssist - C:\Tools\Forensic\RegRipper2.8\rr.exe (1)
1583282207|REG|||[Program Execution] UserAssist - C:\Tools\Forensic\RegRipper2.8\rip.exe (1)
1583282169|REG|||[Program Execution] UserAssist - Microsoft.Windows.Explorer (99)
1583281338|REG|||[Program Execution] UserAssist - {6D809377-6AF0-444B-8957-A3773F02200E}\Notepad++\notepad++.exe (13)
1583280390|REG|||[Program Execution] UserAssist - windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel (9)

......

 

UserAssistView Tool

F:\>F:\temp\userassistview\UserAssistView.exe /sxml userassist.xml

F:\>F:\script\batch\LogParser.exe -stats:off -i:xml "select * from 'UserAssist.xml' order by item_name "

userassist.xml 내용

F:\tool\forensic\RegRipper2.8>type userassist.xml      

< 참고 >

Item_name에 실행 파일의 전체 경로가 나오는데 경로를 잘 살펴봐야 한다. 예를 들어 \\tsclient\...이런 경우는 원격 PC의 실행 파일을 실행한 경우이다.

 

UserAssist 정보는 실행시간 정보가 있어서 IECache나 Prefetch의 정보들과 연관지어 분석을 하시면 악성코드가 어떤 경로를 통해서 다운로드되고 실행되었는지를 파악하기 좋음.

보통 사용자의 동의를 구하지 않고 실행된 악성코드가 2~3회 실행되는 경우는 그다지 많지 않습니다. 즉, 딱 한번 그러니까 특정 취약점이나 사회공학 기법에 의해 악성코드를 실행하고 서비스를 올려서 C&C와 통신을 하게 되는데 딱 한번 실행되기 때문에 Prefetch 폴더에 있는 악성코드라 의심되는 파일의 prefetch 파일의 생성시간을 가지고 감염 시간대를 좁혀 나갈 수 있음

 

반응형

반응형

USB 사용 이력 분석은 사실 간단한 작업이 아니다. 

다양한 아티팩트들을 대상으로 많은 분석 경험에 의해서 분석 방법과 절차, 결과 판단의

기준을 수립하는 것이 좋다.

 

포렌식 관점에서 아래 사항을 같이 연관분석하는 것이 가장 좋아 보인다.
1. USB 장치 사용 이력 조회 : 장치명, Connection Time, 볼륨명 및 Disconnection Time 

2. 파일 시스템 $Usnjurl, $logfile, $MFT 등을 이용하여 Connection Time과 Disconnection Time 사이 파일 I/O 분석

3. Web Cache, JumpList, 가장 최근 접근 문서, UserAssist, 링크파일, 프리패치 등을 같이 분석하여 USB 내 파일 I/O 분석

4. Last Activity View Tool을 이용하여 최근 활동 내역 분석

 

이벤트 로그 분석
아래 참조된 이벤트 파일(evtx 파일)들은 OS 유형에 따라 존재하지 않을 수도 있으며 

각각 다른 이름으로 존재할 수도 있으므로 인터넷 등을 조회해서 관련 이벤트 파일을 찾은 후

아래와 같은 방법과 절차대로 분석을 진행하도록 한다.


Microsoft-Windows-Storage-ClassPnP%4Operational.evtx 분석

C:\>wevtutil epl /lf "C:\WINDOWS\System32\winevt\logs\Microsoft-Windows-Storage-ClassPnP%4Operational.evtx" "c:\temp\storage-pnp-operation.evtx"

 

C:\>logparser.exe -stats:off -i:evt "select TimeGenerated, Strings from 'C:\temp\storage-pnp-operation.evtx'"

 

Microsoft-Windows-DriverFrameworks-UserMode/Operational 분석

USB 장탈착 이력, 윈도우 8+ 에서는 파일이 존재하지 않는다.

 

System Event Log 분석

f:\temp>wevtutil epl system system-export.evtx


F:\>LogParser.exe -stats:off -i:evt "select Timegenerated, strings from 'F:\temp\system-export.evtx' where strings like '%usb%'"

 

기타 Event Log 분석

* C:\Windows\System32\winevt\Logs\Microsoft-Windows-DriverFrameworks-UserMode%4Operational.evtx (Windows 7)
* C:\Windows\System32\winevt\Logs\Microsoft-Windows-Storage-ClassPnP/Operational.evtx  (Window 10)
* C:\Windows\System32\winevt\Logs\Microsoft-Windows-WPD-MTPClassDriver/Operational.evtx

 

운영제체 로그 파일

아래 파일을 통해 USB 연결사실과 최초 연결 시각을 확인 할 수 있다.

Windows 2000/XP : %SystemRoot%\Setupapi.log

Windows Vista/7/8 : %SystemRoot%\inf\Setupapi.dev.log

 

* C:\Windows\INF\setupapi.dev.log 
* C:\Windows\INF\ setupapi.dev.yyyymmdd_hhmmss.log 
* C:\Windows\INF\setupapi.upgrade.log 
* C:\Windows\setupapi.log 

 

레지스트리

* HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\Enum\USB

* HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\Enum\USBSTOR 
* HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 
* HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses 
* HKEY_USERS\SID\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices 
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\VolumeInfoCache 
* HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\SWD\WPDBUSENUM 

레지스트리는 OS 유형 및 버전에 따라 레지스트리 경로, 키 이름 등이 서로 다를 수 있다.

 

USBDevView Tool
GUI & CLI
From : https://www.nirsoft.net/utils/usb_devices_view.html

 

F:\>USBDeview.exe /sxml f:\temp\usbdevview.xml /sort ~"last plugin/unplugin date"

F:\>LogParser.exe -h -i:xml "F:\temp\usbdevview.xml" -headerrow:on

F:\>LogParser.exe -stats:off -i:xml "select device_name, drive_letter, last_plug_unplug_date, last_plug_unplug_date from F:\temp\usbdevview.xml"

 

만약 한글이 깨져 보이면 아래와 같이 인코딩을 변환한다.

F:\> powershell
PS F:\> get-content F:\temp\usbdevview.xml | set-content -Encoding utf8 F:\temp\usbdevview2.xml

 

USB Forensic Tracker Tool

GUI

USB-Device-Tracking-Artifacts.pdf
0.34MB

 

USB 분석 예제

1. USB VID & PID 조회

C:\Temp>reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\CdRom&Ven_Generic&Prod_Autorun_Disk&Rev_8.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_&Prod_MXUB3SES-32G&Rev_1.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_ASMT&Prod_2105&Rev_0

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_Duzon&Prod_DuzonC&T&Rev_8.01

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_LGE&Prod_USB_Drive&Rev_0.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.27

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_SanDisk&Prod_Ultra&Rev_1.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_SanDisk&Prod_Ultra_USB_3.0&Rev_1.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_Seagate&Prod_FreeAgent_Go&Rev_0148

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_SMI&Prod_USB_DISK&Rev_1100

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_USB&Prod_Flash_Disk&Rev_1100

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_ZYRUS&Prod_NEXTIK_2.0&Rev_2.00

 

- Naming Rule (VIP&PID) : ......\Disk&Ven_{Vendor Name}&Prod_{Product Name}&Rev_{Version} <- Device Class ID

 

2. Serial Number 조회

포렌식에서 가장 자주 활용되는 정보로써 연결한 저장장치를 확인하는데 사용된다. 압수물과 Serial Number를 대조하여 해당 PC에 연결했던 USB가 맞는지 확인이 가능하다.  Device Class ID인 VID&PID 하위 폴더 이름이 Serial 정보이다. 
요즘은 저가형 제품에서 Serial Number가 없는 경우나 OS가 정상적으로 인식할 수 없는 이상한 값이나 형태흫 가진 경우가 있는데 이런 Serial Number가 없는 경우는 OS Pnp Manager에서 자동으로 UID값을 생성하여 부여한다.

 

먼저 레지스트리 하이브 파일 추출을 위해 레지스트리 하이브 파일 경로를 조회

C:\Temp>reg query HKLM\system\currentcontrolset\control\hivelist
Windows\System32\config\SYSTEM
Windows\System32\config\SOFTWARE
EFI\Microsoft\Boot\BCD
Windows\System32\config\DEFAULT
Windows\System32\config\SECURITY
......

 

레지스트리 하이브 파일 추출

C:\Tools\Forensic\RegRipper2.8>regex.exe -h reg-hive-backup

Collecting Registry Hive Files...
===== Complete! =====

C:\Tools\Forensic\RegRipper2.8>dir reg-hive-backup
2020-03-04  오전 09:57         4,980,736 Amcache.hve
2020-03-04  오전 09:57         6,815,744 chohb.NTUSER.DAT
2020-03-04  오전 09:57        10,747,904 chohb.USRCLASS.DAT
2020-03-04  오전 09:57        34,340,864 COMPONENTS
2020-03-04  오전 09:57           786,432 DEFAULT
2020-03-04  오전 09:57           262,144 Default User.NTUSER.DAT
2020-03-04  오전 09:57           262,144 Default.NTUSER.DAT
2020-03-04  오전 09:57           262,144 DefaultAppPool.NTUSER.DAT
2020-03-04  오전 09:57             8,192 DefaultAppPool.USRCLASS.DAT
2020-03-04  오전 09:57             2,907 RegEx.log
2020-03-04  오전 09:57            65,536 SAM
2020-03-04  오전 09:57            65,536 SECURITY
2020-03-04  오전 09:57    <dir>         SETUPAPI
2020-03-04  오전 09:57       109,314,048 SOFTWARE
2020-03-04  오전 09:57        27,000,832 SYSTEM 

 

Serial Number 조회

아래 S/N 중 &숫자는 포트번호로 동일 USB일 경우 1, 2, 3 ..... 이런식으로 증가하여 표시된다.

 

C:\Tools\Forensic\RegRipper2.8>rip.exe -r reg-hive-backup\SYSTEM -p usbstor
Launching usbstor v.20141111
usbstor v.20141111
(System) Get USBStor key info

USBStor
ControlSet001\Enum\USBStor

CdRom&Ven_Generic&Prod_Autorun_Disk&Rev_8.00 [Thu Jan  1 00:00:00 1970]
  S/N: 33EF4ONR86CV&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: 4ZCPATZI8AEE&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: 6L6TK3IF7J8O&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: AOD3GO4TO5MG&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: DWBINC6BT76D&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: IDK37G60DRJI&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: V5X9IKN8Z25O&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device

    (위의 경우처럼 하나의 Priduct에 S/N이 여러 개인 경우는 동일한 회사 동일한 제품/모델의
     서로 다른 USB를 여러 개 사용한 경우임)


Disk&Ven_&Prod_MXUB3SES-32G&Rev_1.00 [Thu Jan  1 00:00:00 1970]
  S/N: 000000000000003587&0 [Thu Jan  1 00:00:00 1970] <- 일련번호 및 포트번호 
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]  <- 마지막 사용 시간(이상하네 ?)
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : MXUB3SES-32G USB Device <- 제품명
......

 

C:\Tools\Forensic\RegRipper2.8>rip.exe -r c:\test\reg-hive-backup\SYSTEM -p usb [ or usbdevices ]

VID_8087&PID_0A2B [Thu Jan  1 00:00:00 1970]
  S/N: 5&283f8949&0&5 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    ParentIdPrefix: 6&2f6ddbc3&0

......

 

3. Drive Letter 조회

C:\Tools\Forensic\RegRipper2.8>rip.exe -r c:\test\reg-hive-backup\SYSTEM -p mountdev
mountdev v.20130530
(System) Return contents of System hive MountedDevices key

Device: \??\USBSTOR#CdRom&Ven_Generic&Prod_Autorun_Disk&Rev_8.00#IDK37G60DRJI&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
  \??\Volume{8aad119b-96dc-11e9-8673-3c6aa784a53e}

Device: DMIO:ID:N짯혘체횚횉HD혙ju혞o횑!,
  \DosDevices\C:

Device: _??_USBSTOR#Disk&Ven_Duzon&Prod_DuzonC&T&Rev_8.01#DWBINC6BT76D&1#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
  \DosDevices\E:
  \??\Volume{18be7fe9-06f6-11ea-8767-3c6aa784a53e}

Device: \??\USBSTOR#CdRom&Ven_Generic&Prod_Autorun_Disk&Rev_8.00#DWBINC6BT76D&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
  \DosDevices\D:
  \??\Volume{18be7fe8-06f6-11ea-8767-3c6aa784a53e}
......

 

C:\>reg query "HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices" /s

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices\SWD#WPDBUSENUM#{02797B4E-C3A4-11E9-86AB-3C6AA784A53E}#0000000000100000
    FriendlyName    REG_SZ    D:\

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices\SWD#WPDBUSENUM#{A6B307E3-C4DD-11E9-86AE-3C6AA784A53E}#000000000C805000
    FriendlyName    REG_SZ    D:\

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices\USB#VID_05AC&PID_12A8&MI_00#6&27C02643&0&0000
    FriendlyName    REG_SZ    Apple iPhone
......

C:\>reg query "HKLM\System\CurrentControlSet\Enum\WpdBusEnumRoot\UMB" /s
오류: 오류: 시스템이 지정된 레지스트리 키 또는 값을 찾을 수 없습니다. <- 키가 없음

 

4. USB 연결 시간

최초 연결 시간은 아래 파일 장치 드라이버 설치 파일로 확인

SetupAPI Logfile – Section Start
Windows 2000/XP : %SystemRoot%\Setupapi.log
Windows Vista/7/8(RP) : %SystemRoot%\inf\Setupapi.dev.log

 

레지스트리에서의 관련 값은 보안 등의 이유로 PnP 관리자가 수시로 값을 변경할 수 있어서 실제 최초 연결시간이라 단정지울 수 없고 USB 최초 연결 시간 자체가 침해사고 대응이나 포렌식 관점에서 큰 의미가 없다고 생각된다.

 

부팅 후 최초 연결 시간이나 마지막 연결 시간등도 최초 또는 가장 마지막 즉 가장 최근의 값만 저장하고 있으므로 동일 USB를 여러 본 꽂아서 작업을 했을 때를 생각하면 이 또한 침해사고 대응이나 포렌식 관점에서 큰 의미가 없다고 생각된다.

 

이벤트 뷰어나 신뢰할 만한 기타 도구들을 이용하여 USB 장치 사용 시간을 확인해 보는게 효율적일 수도 있다. 도구를 활용할 때는 2 - 3 개의 도구를 활용하여 Cross Check 하는 것이 분석 신뢰도를 높일 수 있을 것이다.

 

5. 이벤트 로그를 통한 USB 관련 이벤트 조회

< EventID >

Connection : 2003 / 2004 / 2006 / 2010 / 2101 / 2105 / 2106 
Disconnection : 2100 / 2102

 

C:\DFIR\EventLog>wevtutil epl system system_backup.evtx

F:\>LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 1, '|') as Username, EXTRACT_TOKEN(Strings, 2, '|') AS Workstation FROM 'system_backup.evtx' WHERE EventID = '2008'"

 

또는

문자열 검색

F:\tool\forensic\usbdeviceforensics>F:\script\batch\LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 1, '|') as Username, EXTRACT_TOKEN(Strings, 2, '|') AS Workstation FROM 'F:\temp\system_backup.evtx' WHERE strings like '%usb%'"

6. 파일 I/O 조회

USB에 어떠한 정보를 복사했는지 확인 필요

이러한 경우 링크파일을 분석하여 외장형 드라이브에서 연결된 폴더 및 파일 정보를 확인하여 추측

이때, 해당 드라이브에 사용된 저장매체가 무엇인지 구체적으로 확인이 필요할 때가 있는데 이럴때는 레지스트리의 EMDMgmt 정보와 조합하여 확인 가능

링크파일에는 Volume Serial Number가 포함되어 있어 EMDMgmt에 있는 USB의 Volume Serial Number와 맵핑하여 연결점을 찾을 수 있다.

매핑할때 주의점은 EMDMgmt의 볼륨 시리얼은 10진수 표현값이며, 링크파일의 볼륨 정보는 16진수있다. 따라서 16진수를 10진수로 변환하여 비교해야 한다. 

 

링크파일, 점프리스트, 프리패치 등 아티펙트별로 별도 분석 도구나 명령을 이용하거나 아래 rip처럼 통합 분석 도구를 활용하거나 본인의 성향, 인지도, 분석 목적, 분석 결과 신뢰도 등에 따라 적절히 선택하여 사용

 

C:\Tools\Forensic\RegRipper2.8>rip.exe -r c:\test\reg-hive-backup\chohb.NTUSER.DAT -p recentdocs

C:\Tools\Forensic\RegRipper2.8>rip.exe -r c:\test\reg-hive-backup\chohb.NTUSER.DAT -p userassist

 

반응형

반응형

RDP Connection 내역

아래 명령을 실행하면 환경변수 $TEMP로 설정된 디렉토리에 csv 파일이 저장된다.

F:\script\powershell>powershell -executionpolicy bypass -f RDPConnectionParser.ps1
Writing File: f:\Temp\2020-03-03T16.24.38_RDP_Report.csv
Done!

 

RDPConnectionParser.zip
0.00MB

 

F:\script\powershell>type f:\temp\2020-03-03T16.24.38_RDP_Report.csv
"TimeCreated","User","ServerName","IPAddress","EventID","Action"
"2020-02-17 ?? 12:45:59","CHOHB\chohb","chohb","LOCAL","21","logon"
"2020-02-17 ?? 6:02:33","CHOHB\chohb","chohb",,"23","logoff"
"2020-02-18 ?? 8:47:25","CHOHB\chohb","chohb","LOCAL","21","logon"
"2020-02-18 ?? 6:02:18","CHOHB\chohb","chohb",,"23","logoff"

 

< 참고 >

Event ID21이면 RDP logon,

Event ID22이면 RDP Shell Start,

Event ID23이면 RDP logoff,

Event ID24이면 RDP DisConnected,

Event ID25이면 RDP ReConnection

 

이벤트 로그 조회

Session 관련 이벤트 파일

F:\temp>dir %windir%\system32\winevt\logs\*session*.evtx

Microsoft-Windows-RemoteDesktopServices-SessionServices%4Operational.evtx

Microsoft-Windows-TerminalServices-LocalSessionManager%4Admin.evtx

Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx

 

< RDP Files >

%User Profile%\Documents\Default.rdp 파일도 일단 수집하자.
분석 대상 시스템에서 RDP 접속을 한 흔적 파악하는데 사용될 수 있다. RDP 접속 후 네트워크를 통해 용의자가 파일을 전송하였거나, 정보를 획득할 수 있다는 가능성을 제기할 수 있으며, 침해사고 관점에서는 원치 않은 접속 요청에 대한 정보를 수집하여 시스템의 악성 행위 시점을 판단하는데 도움을 줄 수 있다.

 

파일 저장

F:\temp>wevtutil epl /lf "C:\WINDOWS\system32\winevt\logs\Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx" "c:\temp\TerminalServices-LocalSessionManager-Operational.evtx"

 

컬럼명 조회

C:\>LogParser.exe -h -i:evt "c:\temp\TerminalServices-LocalSessionManager-Operational.evtx"

 

조회

F:\temp>LogParser.exe -stats:off -i:evt "select Timegenerated, strings, Eventid from 'c:\temp\TerminalServices-LocalSessionManager-Operational.evtx' where Eventid='21' or Eventid='22' or Eventid='23' or Eventid='24' or Eventid='25'"

 

C:\DFIR\EventLog>wevtutil epl system system-export.evtx

 

Security 이벤트 파일

C:\DFIR\EventLog>wevtutil epl security security-export.evtx

 

C:\>LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 8, '|') as LogonType,EXTRACT_TOKEN(strings, 9, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 11, '|') AS Workstation, EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName, EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM 'C:\temp\Security-Export.evtx' WHERE EventID = 4624 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY') and EXTRACT_TOKEN(Strings, 8, '|')='10' "

 

< 참고 > 이벤트 로그 내용을 Text로 저장

C:\>wevtutil qe /lf "C:\WINDOWS\system32\winevt\logs\Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx" /f:text > "c:\temp\TerminalServices-LocalSessionManager-Operational.txt"

 

System 이벤트 파일

C:\DFIR\EventLog>wevtutil epl system system-export.evtx

동일한 방법으로 조회

 

NTLM Based Logon

possible pass-the-hash

C:\>LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 8, '|') as LogonType, EXTRACT_TOKEN(strings, 10, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 11, '|') AS Workstation, EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName, EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM 'C:\temp\Security-Export.evtx' WHERE EventID = 4624 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY') AND AuthPackage LIKE '%NtLmSsp%' AND Username NOT LIKE '%$'"

 

All Logon History

이벤트 ID 4624에 대한 로그인 유형

로그인 유형에 대해 각각 조회가 가능하다.

 

C:\>LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 8, '|') as LogonType,EXTRACT_TOKEN(strings, 9, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 11, '|') AS Workstation, EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName, EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM 'C:\temp\Security-Export.evtx' WHERE EventID = 4624 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY')"

 

콘솔 로그인

C:\>LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 8, '|') as LogonType,EXTRACT_TOKEN(strings, 9, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 11, '|') AS Workstation, EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName, EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM 'C:\temp\Security-Export.evtx' WHERE EventID = 4624 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY') and EXTRACT_TOKEN(Strings, 8, '|')='2' "

 

네트워크 로그인

C:\>LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 8, '|') as LogonType,EXTRACT_TOKEN(strings, 9, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 11, '|') AS Workstation, EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName, EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM 'C:\Dropbox\DFIR\Window\Behaviour\Results\Security-Export.evtx' WHERE EventID = 4624 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY') and EXTRACT_TOKEN(Strings, 8, '|')='3' "

 

Failed Logon History

unsuccessful logon

C:\>LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 10, '|') as LogonType,EXTRACT_TOKEN(strings, 11, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 13, '|') AS Workstation, EXTRACT_TOKEN(Strings, 19, '|') AS SourceIP FROM 'C:\temp\Security-Export.evtx' WHERE EventID = 4625 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY')"

 

Find specific User

LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 10, '|') as LogonType,EXTRACT_TOKEN(strings, 11, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 13, '|') AS Workstation, EXTRACT_TOKEN(Strings, 19, '|') AS SourceIP FROM 'C:\temp\Security-Export.evtx' WHERE EventID = 4625 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY') AND Username = 'Administrator'"

          

Find specific IP

LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 10, '|') as LogonType,EXTRACT_TOKEN(strings, 11, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 13, '|') AS Workstation, EXTRACT_TOKEN(Strings, 19, '|') AS SourceIP FROM 'C:\temp\Security-Export.evtx' WHERE EventID = 4625 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY') AND SourceIP = '10.1.47.151'"

 

check ntlm based attempts

LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 5, '|') as Username, EXTRACT_TOKEN(Strings, 6, '|') as Domain, EXTRACT_TOKEN(Strings, 10, '|') as LogonType, EXTRACT_TOKEN(strings, 11, '|') AS AuthPackage, EXTRACT_TOKEN(Strings, 13, '|') AS Workstation, EXTRACT_TOKEN(Strings, 19, '|') AS SourceIP FROM 'C:\temp\Security-Export.evtx' WHERE EventID = 4625 AND Username NOT IN ('SYSTEM'; 'ANONYMOUS LOGON'; 'LOCAL SERVICE'; 'NETWORK SERVICE') AND Domain NOT IN ('NT AUTHORITY') AND AuthPackage LIKE '%NtLmSsp%' AND Username NOT LIKE '%$'"

 

LogOff History

C:\>LogParser.exe -stats:OFF -i:EVT "Select TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 1, '|') AS Username, EXTRACT_TOKEN(Strings, 2, '|') AS Domain FROM 'C:\Dropbox\DFIR\Window\Behaviour\Results\Security-Export.evtx' WHERE EventID = 4634 AND Domain NOT IN ('NT AUTHORITY')"

반응형

반응형

침해사고 분석 대응과 관련하여 저장장치 사용, 웹 활동 등 사용자들의 일반 행위들을 시간순으로 확인
어플리케이션 실행 , 웹 활동(인터넷 검색 등), 자주 열어본 파일 등을 시간 순으로 표시

 

Window + TAB 키를 치면 표시되는 데이터들이며 이 정보는 "Windows 에서 PC의 내 활동을 수집하도록 허용" 
옵션을 선택 활성화해야 수집이 되며
현재를 기준으로 최대 30일 동안 사용자의 활동을 확인할 수 있습니다.

분석 내용
응용프로그램 실행 이력
인터넷 검색 등 웹 활동 이력
자주 열어본 파일이나 최근 접근 파일 확인
사용자의 과거 활동 이력 추적
사건 발생 전후 생성, 수정, 삭제, 접근한 파일 분석

파일 경로
Users\AppData\Local\ConnectedDevicesPlatform\L.\ActivitiesCache.db <- SQLite DB Format
예제
C:\Users\chohb\AppData\Local\ConnectedDevicesPlatform\c0fe10dddb98dd4b\ActivitiesCache.db

 

분석
Last Activity View

From : https://www.nirsoft.net/utils/computer_activity_view.html


실행중인 시스템의 다양한 소스에서 정보를 수집하고 사용자 행위 및 이벤트의 로그를 표시하는 도구

수집 데이터에는 exe 파일 실행, 열기/저장 대화 상자 열기, 탐색기 또는 기타 소프트웨어에서 파일/폴더 열기,
소프트웨어 설치, 시스템 종료/시작, 응용 프로그램 또는 시스템 충돌, 네트워크 연결/연결 끊기 등이 포함

Actions/Events List
The following actions and events are currently supported by LastActivityView:

  • Run .EXE file: .EXE file run directly by the user, or by another software/service running in the background.
  • Select file in open/save dialog-box: The user selected the specified filename from the standard Save/Open dialog-box of Windows.
  • Open file or folder: The user opened the specified filename from Windows Explorer or from another software.
  • View Folder in Explorer: The user viewed the specified folder in Windows Explorer.
  • Software Installation: The specified software has been installed or updated.
  • System Started: The computer has been started.
  • System Shutdown: The system has been shut down, directly by the user, or by a software that initiated a reboot.
  • Sleep: The computer has been placed into sleep mode.
  • Resumed from sleep: The computer has been resumed from sleep mode.
  • Network Connected: Network connected, after previously disconnected.
  • Network Disconnected: Network has been disconnected
  • Software Crash: The specified software has been crashed.
  • Software stopped responding (hang): The specified software stopped responding.
  • Blue Screen: Blue screen event has been occurred on the system.
  • User Logon: The user logged on to the system.
  • User Logoff: The user logged off from the system. This even might caused by a software that initiated a reboot.
  • Restore Point Created: Restore point has been created by Windows operating system.
  • Windows Installer Started
  • Windows Installer Ended
  • Wireless Network Connected: Windows connected to a wireless network, the connection information is displayed in the 'More Information' column.
  • Wireless Network Disconnected: Windows disconnected from a wireless network, the connection information is displayed in the 'More Information' column.

GUI

CLI

C:\>LastActivityView.exe /sort "~ action time" /sxml C:\temp\LastActivity.xml

 

필드명 조회

C:\>logparser.exe -h -i:xml "C:\temp\LastActivity.xml" -headerrow:on

Fields:

  action_time (S)      description (S)    filename (S)    full_path (S)

  more_information (S) file_extension (S) data_source (S)

 

조회

C:\>logparser.exe -stats:off -i:xml "select action_time, filename, description, data_source from 'C:\temp\LastActivity.xml'"

 

WxTCmd
Wxtcmd는 ActivitiesCache.db 의 테이블 중 Activity테이블과  Activity_PackageIDs테이블을 파싱하여
tsv형태로 저장해준다.


F:\>WxTCmd.exe -f "C:\Users\chohb\AppData\Local\ConnectedDevicesPlatform\c0fe10dddb98dd4b\ActivitiesCache.db" --csv f:\temp\activitiescache

 

F:\tool\forensic\WxTCmd>dir f:\temp\activitiescache
2020-03-06  오전 10:15         1,547,408 20200306101553_Activity.tsv
2020-03-06  오전 10:15         4,452,590 20200306101553_Activity_PackageIDs.csv


F:\>LogParser.exe -h -i:tsv "f:\temp\activitiescache\20200306101553_Activity.tsv"
Fields:
 Filename (S)
 RowNumber (I)
 Id|Executable|DisplayText|ContentInfo|StartTime|EndTime|LastModifiedTime|ExpirationTime|CreatedInCloud|LastModifiedOnClient|OriginalLastModifiedOnClient|ActivityType|IsLocalOnly|ETag|PackageIdHash|PlatformDeviceId|Duration (S)

F:\>LogParser.exe -i:tsv "select * from f:\temp\activitiescache\20200306101553_Activity.tsv"

F:\>LogParser.exe -i:tsv "select * from 'F:\temp\activitiescache\20200306101553_Activity_PackageIDs.csv'"

SQLite
F:\>sqlite3.exe C:\Users\chohb\AppData\Local\ConnectedDevicesPlatform\c0fe10dddb98dd4b\ActivitiesCache.db

sqlite> .database
main: C:\Users\chohb\AppData\Local\ConnectedDevicesPlatform\c0fe10dddb98dd4b\ActivitiesCache.db

sqlite> .table
Activity            Activity_PackageId  DataEncryptionKeys  Metadata
ActivityOperation   AppSettings         ManualSequence      SmartLookup

sqlite> pragma table_info(Activity); 
0|Id|GUID|1||1
1|AppId|TEXT|1||0
2|PackageIdHash|TEXT|0||0
3|AppActivityId|TEXT|0||0
4|ActivityType|INT|1||0
5|ActivityStatus|INT|1||0
6|ParentActivityId|GUID|0||0
7|Tag|TEXT|0||0
8|Group|TEXT|0||0
9|MatchId|TEXT|0||0
10|LastModifiedTime|DATETIME|1||0
11|ExpirationTime|DATETIME|0||0
12|Payload|BLOB|0||0
13|Priority|INT|0||0
14|IsLocalOnly|INT|0||0
15|PlatformDeviceId|TEXT|0||0
16|CreatedInCloud|DATETIME|0||0
17|StartTime|DATETIME|0||0
18|EndTime|DATETIME|0||0
19|LastModifiedOnClient|DATETIME|0||0
20|GroupAppActivityId|TEXT|0||0
21|ClipboardPayload|BLOB|0||0
22|EnterpriseId|TEXT|0||0
23|OriginalPayload|BLOB|0||0
24|OriginalLastModifiedOnClient|DATETIME|0||0
25|ETag|INT|1||0
26|UserActionState|INT|0|0|0
27|IsRead|INT|0|0|0
28|GroupItems|TEXT|0||0
29|DdsDeviceId|TEXT|0||0

sqlite> select * from Activity;

반응형