인기 검색어

Research

What Is Windows Search DB?

  • -

What Is Windows Search DB?

  • Windows Search DB는 Windows 운영 체제에 내장된 검색 기능을 지원하는 데이터베이스이다. 이 데이터베이스는 파일, 폴더, 응용 프로그램, 설정, 문서 등과 같은 사용자의 컴퓨터에 저장된 데이터를 인덱싱하여 저장한 데이터베이스이다.

Windows.EDB (Windows Search DB) 파일의 구조?

EDB 파일의 구조?

  1. 데이터베이스 헤더: EDB 파일의 시작에 위치하며, 데이터베이스의 기본 정보와 구성을 포함함.
  2. 테이블: EDB 파일은 여러 테이블로 구성되는데 각 테이블은 레코드의 집합으로 구성되며, 특정 유형의 데이터를 저장함. 예를 들어, 파일, 폴더, 메일 등은 각각 다른 테이블에 저장됨.
  3. 레코드: 각 테이블에는 레코드가 포함되어 있고, 이러한 레코드는 해당 테이블에 저장된 개별 항목의 데이터를 포함함.
  4. 인덱스: EDB 파일은 효율적인 데이터 검색을 위해 인덱스를 담고 있음.인덱스는 주로 빠른 데이터 액세스를 위해 특정 필드의 값을 키로 사용하여 레코드를 정렬함.

EDB 파일 정보의 구조?

  • EDB 파일은 수 십개의 여러 테이블로 이루어져 있지만, 포렌식에서 쓰이는 테이블은 크게 3가지로 분류할 수 있다.

SystemIndex_Gthr

  • 이 테이블에는 Search Indexer에서 인덱싱 된 모든 파일과 폴더 등의 메타데이터가 포함되어 있다. 포렌식 할 때 주로 조사하는 테이블 중 하나.
  • 이 테이블의 구조는 아래와 같다 :여기서 우리가 눈여겨 볼 Column은 ScopeID, DocumentID, SDID, LastModified, Filename 등이 있는데, 이 테이블의 각각의 저장 내용을 살펴보자면 아래와 같이 정리할 수 있다.
    • ScopeID: 레코드의 상위 폴더를 담고 있다. 아래에서 볼 GthrPth 테이블에서도 참조된다.
    • DocumentID: 모든 파일 및 폴더에 할당 된 순차적 정수. 이 ID는 파일이 생성될 때 순차적으로 할당됨. 이 ID는 PropertyStore 테이블에서 참조됨.
    • SDID: 파일 소유권 및 액세스 제어에 대한 정보가 포함된 보안 설명자 ID. 자세한 내용은 MSDN 문서 참조(SDID 설명)
    • LastModified: 이름 그대로 마지막 수정 된 시간의 타임스탬프.
    • Filename: 이름 그대로 파일의 이름

SystemIndex_GthrPth

이 테이블에는 SystemIndex_Gthr 테이블에 인덱싱된 파일의 상위 폴더가 포함되어 있다.

  • 이 테이블의 구조는 아래와 같다:이 테이블은 Scope, Parent, Name이라는 세 가지 Column을 갖고 있다.
    • Parent: Scope 레코드의 상위 폴더.
    • Name: 폴더의 이름
  • Scope Column은 이미 살펴봤으므로 Parent, Name 칼럼의 역할을 정리해보면 아래와 같다

SystemIndex_PropertyStore

  • 이 테이블에는 인덱싱 된 파일과 폴더에 대한 추가적인 속성이 포함되어 있다. PropertyStore에는 너무 많은 Column들이 있어 모두 소개할 순 없고, 포렌식에서 자주 확인되는 Column들을 소개한다:

  • 위 칼럼들의 역할을 정리해보면 아래와 같다:
    • WorkID: 레코드에 할당 된 정수, DocumentID 과 같이 매핑 됨.
    • System_Search_GatherTime: Windows 파일 시간 형식으로 저장 된 데이터베이스에서 레코드가 인덱싱 된 시간을 저장
    • System_Size: 말 그대로 파일 크기(바이트 형식)
    • System_ModifiedTime: Windows 파일 시간 형식으로 저장된 마지막 수정 시간
    • System_CreatedTime: Windows 파일 시간 형식으로 저장된 레코드의 생성 시간
    • System_FileOwner: 사용자 이름으로 저장된 파일을 만든 사용자의 이름
    • System_ItemPathDisplay: 레코드의 전체 경로
    • System_ItemType: 파일 확장자를 기반으로 하는 레코드의 파일 유형. 확장자가 없는 FILE일 경우 값은 “ “임.
    • System_FileAttributes: 윈도우 파일 속성(문서 참고:참고문서)
    • System_Search_AutoSummary: 파일의 일부 내용(Summarize 된 값)
  • 실제로 Property 테이블만 참고해도, 파일의 확장자, 소유자, 설명(Summary), 위치, Modified/MakeTime(16진수)등을 한 번에 볼 수 있었다. 삭제한 파일도 정상적으로 뜨는 것을 확인했다.

그럼 왜 Windows Search Database가 생기나?

  • Windows Search DB는 파일 및 폴더의 이름, 속성, 메타데이터, 내용 등을 수집하고 이 정보를 색인화하여 빠른 검색을 지원. 사용자가 파일을 찾기 위해 검색 기능을 사용하면, 이 데이터베이스를 활용하여 컴퓨터에서 해당 파일을 빠르게 검색할 수 있음.
  • Window Search는 ”%ProgramData%\Microsoft\Search\Data\Applications\Windows”에 Windows.edb 파일을 만듦.(필자의 컴퓨터에서 찍은 사진이다)

Windows Search Database가 성능에 무슨 이점을?

  1. 빠른 검색 속도: Windows Search Database는 파일 및 애플리케이션에 대한 메타데이터를 인덱싱하여 빠른 검색 속도를 제공. 검색 쿼리가 발생할 때 미리 작성된 인덱스를 사용하여 결과를 더 빠르게 찾아낼 수 있으므로 일반적인 파일 시스템 검색보다 훨씬 빠름.
  2. 최적화된 검색 쿼리: Windows Search Database는 복잡한 검색 쿼리도 처리할 수 있음. 파일 이름, 크기, 유형, 수정 날짜, 작성자 등 다양한 Attributes들을 기반으로 검색을 하면서, 이를 통해 사용자가 원하는 파일이나 애플리케이션을 더 정확하게 찾을 수 있음.
  3. 백그라운드 인덱싱: Windows Search Database는 백그라운드에서 작동하여 시스템 리소스에 큰 영향을 미치지 않으면서 파일 및 애플리케이션의 새로운 변경 사항을 실시간으로 감지하고 인덱싱을 함. 따라서 파일이나 애플리케이션이 추가되거나 변경되면 빠르게 새로운 데이터를 검색할 수 있음.

Windows Search Database(EDB)의 특징?

  • AutoSummary라는 값을 보면, 파일이 어떤 활동을 하고 있는지 대충 유추할 수 있음.
    • 이렇게 강력한 기능이어도, 확장자에 따라 autosummary 기능이 작동하고 안하고가 달라짐. 아래는 호환 확장자 목록
      • Active Server Page (.asp)
      • Batch files (.bat)
      • Command files (.cmd)
      • Email files (.eml)
      • Excel files (.xlsx)
      • HTML files (.html)
      • Configuration files (.ini)
      • JavaScript (.js)
      • OneNote files (.one)
      • PDF files (.pdf)
      • Registry files (.reg)
      • SQLite files (.sql)
      • Text files (.txt)
      • Visual Basic files (.vbs)
      • Word files (.docx)
      • XML files(.xml)
      • Zip files (.zip) – Windows 10에서만…
  • 파일의 크기가 전체 파일의 개수,크기에 따라 비례해서 커짐. 인덱싱을 해야할 개수가 늘어나니,
    인덱싱 된 결과값이 많아져 크기가 커지게 됨.

  • 또, 다른 파일과는 다르게 Windows Search Service가 켜져있으면 파일을 열람하거나 수정 불가.

  • 다른 아티팩트보다 크기가 커, 한 번에 확인할 수 있는 정보가 되게 많음(아래와 같은 페이지가 6개가 넘게 있음. Property 테이블에만..

  • 윈도우 10과 윈도우 11에 들어오면서 EDB 파일의 구조가 달라졌음. Gather와 Property를 나눈듯 함. 분석하면서 파일이 너무 커 분석에 오래 걸렸는데, 이를 해결하기 위해 db를 파편화하려는 노력의 일환 같음(아마도? 개인적인 주관임.)

위 3D 그림 출처: https://www.aon.com/cyber-solutions/wp-content/uploads/Aon_Cyber_Labs_Blog_Windows_Search_Index-2.png

Windows Search Database(EDB) 분석 프로그램

  • ESEDatabaseViewer: 분석하고 싶은 테이블을 지정할 수도 있고, Export도 가능함. 여러 정보를 한 눈에 볼 수 있음. 그러나 EDB 파일을 열 때 Windows Search 서비스를 끄고 읽어야함. 그리고 Property 테이블과 같은 큰 테이블은 10분정도 기다려야 오픈할 수 있음.

 

 

  • WinSearchDBAnalyzer
    • GUI 형태로 조금 더 쉽게 볼 수 있음. Recovery Deleted File이라는 부가적인 옵션이 있어, 이를 통해 더 나은 포렌식을 할 수 있음. 또, 특정 테이블만 볼 수 있도록하는 필터링하는 기능이 있음. 난잡하게 보이는 위 프로그램과 달리, 파일을 GUI 형태로 볼 수 있어 훨씬 가독성 있었음.

참고 문헌:

http://forensic-proof.com/wp-content/uploads/2011/07/Windows-Search.pdf

https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/larger-windowsdotedb-file

https://www.aon.com/cyber-solutions/aon_cyber_labs/windows-search-index-the-forensic-artifact-youve-been-searching-for/

https://www.coursehero.com/file/145545329/Lectures-9-10pdf/

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2429795

 

'Research' 카테고리의 다른 글

SeedSeeker  (1) 2024.02.18
ComRaceConditionSeeker  (0) 2024.02.13
CodeQL Summary  (1) 2024.02.06
Twice the Bits, Twice the Trouble: Vulnerabilities Induced by Migrating to 64-Bit Platforms  (2) 2023.11.22
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.