forensic/Win Artifact
Windows Artifacts - ShellBags
SKUSTI
2022. 8. 17. 14:39
윈도우 아티팩트 Shellbags
Writer : KUSTI
환경 : Windows 10
도구 : x
디지털 포렌식 관점에서의 의미
- 사용자가 특정 폴더에 접근한 시간 정보 확인
- 사용자가 특정 폴더에 관해 덮어쓰기, 삭제에 대한 증거 수집
Shellbags 레지스트리
- Bags : 창 크기, 위치 및 보기보드와 같은 보기 기본설정 저장
- BagsMRU : 유사한 트리구조를 생성하여 폴더 이름과 레코드 폴더 저장경로를 저장
주요 레지스트리 키
- MRUListEX : 최근 접근한 파일을 나열하는 레지스트리 키이다. 앞에서 부터 순서대로 가장 마지막에 열었던 폴더를 의미한다. 해당 키에 들어있는 값은 NodeSlot의 값을 가진다.
- NodeSlot : Bags의 하위키의 이름을 갖고 있다.
- NodeSlots : 고정값 2
- COMDlg : Dialog Box를 열었을때 생성됨
- LegacyCOMDlg : Legacy Dialog Box를 열었을때 생성됨
추가 지식
- Dialog Box : 대화상자라고도 불리며 윈도우에서 일반적인 창이다.
- Legacy Dialog Box : Dialog Box의 구버전
주요 레지스트리 경로 :
- HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags
- 846에서 Shell을 들어가면 KUSTI폴더의 Bags 정보를 볼 수 있다.
- 하위 설정파일에 SniffedFolderType이 있는데 이는 폴더타입을 나타낸다.
- Shell 밑에 5C4F28B5로 시작하는 값이 있는데 이는 Generic을 뜻하는 GUI 값이다.
그 외 GUI
{57807898-8c4f-4462-bb63-71042380b109} Generic
{5fa96407-7e77-483c-ac93-691d05850de8} Videos
{b3690e58-e961-423b-b687-386ebfd83239} Pictures
{cd0fc69b-71e2-46e5-9690-5bcd9f57aab3} UserFiles
{d674391b-52d9-4e07-834e-67c98610f39d} Programs
{7d49d726-3c21-4f05-99aa-fdc2c9474656} Documents
{0b0ba2e3-405f-415e-a6ee-cad625207853} Searches - 5C4F28B5~ 하위 파일
- ColInfo(Dataset을 구성하는 Column information) FD DF DF FD 10 00 00 00 00 00 00 00 00 00 00 00 은 고정인것 같다. 그 뒤 4byte는 윈도우 탐색기 세부목록의 개수이다. 나의 경우 04 00 00 00으로 되어있다.
- FFlags
- GroupByDirection 오름차순과 내림차순 정렬 1 : 오름차순 / ffffffff : 내림차순
- 기타는 생략
- 밑 2에 있는 BagMRU에서 NodeSlot값을 먼저 보고 오자.
- HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU GUI로 접근하지 않고 악성바이러스나 cd 명령어를 이용해 접근했을 경우 생기지 않는다.
- 바탕화면에 있는 폴더들을 표시한다.
- 실험삼아 바탕화면에 KUSTI라는 폴더를 만들고 접근한 후 레지스트리값을 보았을대 59 레지스터키가 생성되었다. (상위키)
- MRUListEX에 3b 값이 추가되었다.
- LegacyCOMDlg와 COMDlg가 생성될 수 있다.
- NodeSlot값을 확인하고 Bags으로 넘어간다. 나는 34E (846)이 나왔다.
- HKEY_CURRENT_USER\Microsoft\Windows\Shell\Bags
- HKEY_CURRENT_USER\Microsoft\Windows\Shell\BagMRU
Window 10 ShellBagsMRU Structure
- Block + Extension Block 형태로 되어있고 Block 구조안에 Extension Block 구조를 갖고 있다 말한다.
- Block
Address RangeSizeFiled nameDescription
0x00~0x01 | 2 | BlockSize | Block Size |
0x02~0x03 | 2 | Type | 0x31 : Directory, 0x32 : File |
0x04~0x07 | 4 | File Size | Folder : 00 00 00 00 |
0x08~0x0B | 4 | M Time | M time |
0x0C~0x0D | 2 | Type | 0x10 : Directory, 0x20 : Zip File |
0x0E~ | . | ShortName | Shortname(diff) |
Extension Block
Address RangeSizeFiled nameDescription
0x00~0x01 | 2 | Extension BlockSize | Block Size |
0x02~0x03 | 2 | Version | Version |
0x04~0x07 | 4 | Signature | be ef 00 04 |
0x08~0x0B | 4 | C Time | C Time |
0x0C~0x0F | 4 | A Time | A Time |
0x10~0x13 | 4 | Identifier | 0x2E : Windows 8.1, 10 |
0x14~0x17 | 4 | MFT Entry Number | MFT Entry Number |
0x18~0x19 | 2 | Reserved Area | Reserved Area set 0x00 |
0x1A~0x1B | 2 | MFT Sequence Number | MFT Sequence Number |
0x1C~0x29 | 14 | Reserved Area | Reserved Area set 0x00 |
0x2A~0x2D | 4 | Check Sum | file/folder Unique Number |
0x2E~?? | ?? | File Name | File name (diff) |
??~??+4 | 4 | Extension Block Offset | Extension Block offset (Starting point Extention Block) |
의문 : Extension BlockSize에서 3E가 나왔다면 Extension BlockSize의 2byte를 빼고의 size이다.
도구없이 Extension Block을 조사 할때는 Extension Block offset -> Extension Block Size -> Filename -> C,A Time을 보는게 편할것 같다.
Reference
https://c0wb3ll.tistory.com/entry/ShellBags-Windows10
ShellBags (Windows10)
Shellbags (Windows10) Shellbag이란? 1-1. 정의 Shellbags란 User Registry Hive 파일 (ntuser.dat/usrclass.dat) 의 ShellBag의 하위키이며 사용자가 로컬, 네트워크 및 이동식 저장장치에서 접근한 폴더 정보가..
c0wb3ll.tistory.com