디지털 포렌식 - Web browser artifact
1. 웹 브라우저 아티팩트
1.1 웹 브라우저
- 웹은 HTML 언어(?)를 기본으로 하고, 클라이언트와 서버가 서로 통신하는 방식으로 동작함
- 클라이언트가 서버에게 데이터를 요청하면, 서버는 클라이언트가 요청한 데이터를 HTML 형식으로 반환함
- 웹 브라우저 : 클라이언트가 웹을 쉽게 이용할 수 있도록 해주는 응용프로그램, 구체적으로 HTML 코드를 처리해 사용자에게 보여주고, 사용자의 요청을 서버에 전송해주는 역할을 함
1.2 웹브라우저의 종류
- 크롬, 사파리, 엣지 ..
- Chromium 프로젝트란 구글에서 개발하는 오픈 소스 웹 브라우저 프로젝트로, Chrome, Edge, Whale, Brave 등의 브라우저들이 Chromium 프로젝트 기반으로 만들어짐
1.3 웹 브라우저 아티팩트
- 검색, 로그인, 파일 다운로드 등 각 사용자의 행위에 맞는 브라우저 아티팩트가 존재함
브라우저 아티팩트 | 획득 가능 정보 | 사용자 행위 |
History | URL 방문 목록, URL 방문 횟수, URL 방문 시각, 다운로드 목록 | 웹 사이트 검색, 파일 다운로드 |
Cache | 방문한 웹사이트에 대한 이미지, 텍스트, 스크립트 등 | 웹 사이트 검색, 로그인 |
영상 시청 등 전반 | ||
Cookies | 사용자 계정에 대한 Cookie | 웹 사이트 로그인 |
Bookmarks | 사용자 북마크 지정 목록 | 웹 사이트 검색 |
- 웹 브라우저 아티팩트는 브라우저의 종류에 따라 경로가 다름
브라우저 | 브라우저 아티팩트 경로 |
Chrome | %UserProfile%\AppData\Local\Google\Chrome\User Data\profile |
Edge | %UserProfile%\AppData\Local\Microsoft\Edge\User Data\profile\Cache |
Whale | %UserProfile%\AppData\Local\Naver\Naver Whale\User Data\profile\Cache |
IE(Internet Explorer) | %UserProfile%\AppData\Local\Microsoft\Windows\WebCache\WebCacheV##.dat |
- %UserProfile%이라고 표시된 것은 환경변수의 한 종류
- 환경 변수를 사용하는 이유는 서로 다른 사용자간에 동일한 경로 변수를 이용하기 위함임
변수 이름 | 변수 값 (자주사용되는 환경 변수) |
%AppData% | C:\Users\${USERNAME}\Roaming |
%HomePath% | C:\Users\${USERNAME} |
%UserProfile% | |
%LocalAppData% | C:\Users\${USERNAME}\AppData\Local |
%SystemRoot% | C:\Windows |
%Temp% | C:\Users\${USERNAME}\AppData\Local\Temp |
1.4 크롬 아티팩트
- 아티팩트 경로 : %UserProfile%\AppData\Local\Google\Chrome\User Data\profile
- 해당 폴더 내에서 Histroy, Cookies, Cache 등 아티팩트를 발견할 수 있음
1.5 크롬 아티팩트 수집
- 크롬은 몇몇 파일을 열거나 복사하지 못하도록 막고 있으므로, FTK Imager로 해당 폴더를 Export하여 분석함
아티팩트 경로 | 설명 |
Google Profile Picture | 프로필 사진 |
History | 사용자 브라우저 이용 기록. 방문 URL 목록, 횟수, 다운로드 목록 등 많은 정보를 포함 |
Bookmarks | 사용자가 지정한 북마크 목록과 시간 값 포함 |
Favicons | 사용자가 방문한 웹사이트의 Favicons 목록 및 데이터. 사용자가 방문한 웹사이트를 추측 가능함. |
Login Data | 사용자가 Chrome에 저장한 자동 로그인 목록 및 데이터. 웹사이트와 아이디는 획득 가능하지만, 패스워드는 암호화되어 저장됨. |
Network Action Predictor | URL 검색 과정에서 페이지를 미리 로드하는 기능. 사용자 검색 환경에서 어떤 데이터가 자동 환경되었을지 추측할 수 있는 데이터 |
Shortcuts | Google 검색 환경에서 자동으로 웹사이트를 추천하는 바로가기 기능을 제공하는 데이터. 사용자 검색 환경을 추측할 수 있는 데이터 |
Web Data | 아이디, 패스워드, 전화번호 등 입력 창에서 자동 완성되는 데이터. 사용자의 개인정보를 알아낼 수 있는 필드 |
Cache\Cache_Data\ | 브라우저 이용 중 임시로 저장되는 캐시 데이터 |
Extensions\ | Chrome 확장 프로그램 데이터 |
File System\ | 브라우저 이용 중 임시로 다운로드되는 사진 등 미디어 데이터 |
IndexedDB\ | 각 웹사이트에서 사용자의 브라우저에 저장하는 데이터 |
Local Storage\leveldb\ | 각 웹사이트에서 사용자의 브라우저에 저장하는 데이터 |
Network\Cookies | 사용자가 각 웹사이트에서 가지는 쿠키값 |
1.6 크롬 아티팩트 실습
- 아티팩트를 DB Browser for SQLite로 확인하기
url : 방문한 URL, title : 웹사이트의 제목 데이터 크롬 아티팩트 - visits : id, url from_visit : 어디서 방문했는지
- 디지털 포렌식을 통해 사용자가 어떤 웹사이트에서 어떤 데이터를 다운받았는지, 어떤 페이지에 얼마나 오랜 기간 머물렀는지 파악 할 수 있음
1.7 사용자 로그인 크리덴셜
- 크리덴셜이란, 사용자가 자신을 인증하기 위해 이용하는 데이터를 의미함. 사용자의 로그인 패스워드나 자동 로그인 기능, 서버와 유지되고 있는 세션 등은 모두 크리덴셜에 해당함
- 크리덴셜은 아티팩트로 컴퓨터에 기록되지만 사용자 크리덴셜 정보는 암호화되어 저정되기에 알아내기
Login Data
- 암호화된 데이터들은 Windows에서 제공하는 운영체제 수준의 암호 DPAPI(data protection application programming interface)를 이용해 복호화가 가능하다고 알려져 있음
1.8 웹사이트 방문 흔적 / 확장 프로그램
- Bookmarks, Favicons, Cache\Cache_Data 와 같은 간접 증거들로 웹사이트 방문 사실을 확인할 수도 있음
- MetaMask 확장 프로그램은 암호화폐 관련 사건에서 필수적으로 분석해야 하는 아티팩트.
2. 프리패치 및 캐시
2.1 프리패치(Prefetch)
- 프리패치란 Windows 운영체제에서 응용프로그램을 시작할 때 성능을 향상하기 위한 파일임
- Windows 운영체제는 으용프로그램의 실행 정보를 프리패치 파일로 미리 저장해두고, 메모리에 프리패치 파일을 미리 로드함.
- 부트 프리패치와 응용 프로그램 프리패치가 있지만, 부트 프리패치는 Windows 7 이전에만 존재함.
- 프리패치 분석을 통해 실행 파일 이름, 실행 파일 경로, 실행 파일의 실행홧수, … 등을 알 수 있음
2.2 프리패치 동작 원리
- FileName은 실행된 응용프로그램의 이름
- FilePathHash는 응용프로그램이 위치하는 경로를 이용해 계산한 해시 값, 파일의 경로가 달라지면 해시 값이 달라짐
- 프리패치는 10초 이상 실행된 응용 프로그램에 대해서만 생성되며, 최대 개수는 1,024개
- 기본적으로 압축되어 저장됨. 압축된 프리패치의 시그니처는 MAM, 압축 해제된 프리패치의 시그니처는 SCCA
압축 전후 프리패치
2.3 프리패치 분석 도구
<위쪽 화면>
속성 | 설명 |
Filename | 프리패치 파일 이름 |
Created Time | 프리패치 생성 시각 (=응용프로그램 최초 실행 시각) |
Modified Time | 프리패치 변경 시각 (=응용프로그램 마지막 실행 시각) |
File Size | 프리패치 파일 크기 |
Process EXE | 응용프로그램(EXE) 이름 |
Process Path | 응용프로그램 경로 → 응용프로그램이 실행된 볼륨의 정보를 알 수 있음 |
Run Counter | 응용프로그램 실행 횟수 |
Last Run Time | 응용프로그램 마지막 실행 시각 |
Missing Process | 응용프로그램 삭제 여부 |
<아래쪽 화면> 응용 프로그램이 동작할 때 로드했던 파일들의 목록 및 관련 정보를 얻을 수 있음
속성 | 설명 |
Filename | 응용프로그램과 함께 로드된 파일의 이름 |
Full Path | 응용프로그램과 함께 로드된 파일의 경로 |
Device Path | 볼륨 정보를 포함한 경로 → 응용프로그램이 실행된 볼륨 정보를 알 수 있음 |
Index | 응용프로그램 실행 과정에서 로드된 순서 |
2.4 프리패치 수집 및 분석
- 프리패치 경로 : %SystemRoot%\Prefetch
- 프리패치 확장자 : .pf
- FTK Imager를 이용해 폴더 전체 파일 수집.
1. 프리패치 수집 2. WinPreFetch에서 FTK Imager로 수집한 프리패치를 분석하기 위해 경로를 다시 저장
2.5 응용 프로그램 캐시
- 응용 프로그램 캐시 : 응용프로그램이 실행되면서 운영체제에 기록한 데이터
- 응용프로그램 존재 여부, 파일 이름, 파일 경로 등을 포함
- MUICache: 다중 언어를 지원하기 위한 캐시
- AmCache: 프로그램 호환성 관리자와 관련된 캐시
- ShimCache: 응용 프로그램 간의 호환성을 지원하기 위한 캐시
2.6 MUIChace

- 프로그램이 한번이라도 실행되었다면 MUICahce 목록에 존재하고, 삭제 메커니즘이 없음
- 외부 저장장치에서 실행되었는지를 알 수 있음
2.8 Amcahce
- 응용프로그램 호환성 관리자와 관련된 레지스트리 하이브 파일, 응용프로그램의 실행 정보를 저장
경로 :
- PC가 실행 중일 때에는 해당 파일의 수집이 불가하여 FTK Imager로 파일 수집
- 수집한 파일을 Registry Explorer로 열어 데이터 확인
경로 설명 Root\InventoryDevicePnp 시스템에 연결되었던 기기 및 드라이버 정보 Root\InventoryApplication 시스템에서 실행된 응용프로그램 정보
2.9 ShimCache(AppCompatCache)
- 응용 프로그램과의 호환성 문제를 해결하기 위해 생성된 파일
- Shim이란 프로그램이 실행될 때 API 호출을 가로채서 전달할 수 있는 라이브러리
경로 :
- ApCompatCacheParser 도구를 다운받아 아래 커맨드 입력
C:\Windows\System32>C:\Tools\AppCompatCacheParser\AppCompatCacheParser.exe --csv C:\경로\
AppCompatCache Parser version 1.5.0.0
Author: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/AppCompatCacheParser
Command line: --csv C:\경로
Processing hive 'Live Registry'
Found 1,024 cache entries for Windows10C_11 in ControlSet001
Results saved to 'C:\경로\20240407172809_Windows10C_11_DESKTOP-0OIG93H_AppCompatCache.csv'

2.10 캐시 분석시 주의할 점
- 응용 프로그램 캐시 분석 시 항상 교차검증을 할 것
- Windows 버전과 실행 환경에 따라 캐시 데이터 동작 방식이 일부 변경될 수 있음
- 모든 응용프로그램의 실행에 대해 반드시 생성되는 것은 아님
아티팩트 | 획득 가능 데이터 |
프리패치 | 파일 이름, 파일 경로, 파일 실행 횟수, 최초 실행 시간, 마지막 실행 시간, 파일 실행 시 로드되는 파일 정보 등 |
MUICache | 파일 이름, 파일 경로, 파일 실행 여부 |
AmCache | 시스템에 연결되었던 기기 및 드라이버 정보, 시스템에서 실행된 응용프로그램 정보, 응용프로그램 설치 시간 |
ShimCache | 파일 이름, 파일 경로, 마지막 수정 시간, 실행 여부 |
3. 휴지통 및 파일 복구
3.1 휴지통 아티팩트 동작 원리
‘삭제’된 파일은 $R{문자열6자리}.{확장자}와 $I{문자열6자리}.{확장자} 형태로 휴지통 저장됨.
$R 파일은 원본 파일과 완전히 동일한 데이터를 가지지만 이름만 변경된 형태로 휴지통에 이동함.
$I 파일은 원본 파일의 이름을 포함한 메타데이터를 가짐.
- 휴지통에서 데이터를 삭제하면 $R, $I 파일이 생성
- 휴지통에서 데이터를 복원하면 $R 파일이 원래 위치로 이동
- 휴지통 비우기를 수행하면, $R, $I가 모두 있는 데이터만 삭제
휴지통에서 복원된 적이 있는 데이터는 휴지통 비우기를 해도 데이터가 삭제되지 않으며, 이때 $I 파일이 원본 파일의 경로, 파일이 삭제된 시간 등 메타데이터를 담고 있음
3.2 휴지통 아티팩트 수집

- C 드라이브 / D 드라이브 휴지통이 각각 있으나, 사용자에겐 가시성을 위해 휴지통을 하나로 모아서 보여줌. 따라서 cmd를 이용해 조회하거나 FTK Imager로 별도 추출해 분석하는 것이 좋음
휴지통 폴더가 보이지 않게 설정되어 있기에 폴더가 아닌 파일 전체를 추출
3.3 휴지통 아티팩트 분석
- 휴지통 아티팩트에서 $R 파일은 원본과 동일하므로, $I 파일의 구조만 분석하면 됨

오프셋 | 설명 |
0x0-0x7 | 시그니처 |
0x8-0xF | 원본 파일의 크기 |
0x10-0x17 | 파일이 삭제된 시간 (Windows Filetime) → DCode 도구로 분석 가능 |
0x18-0x1B | 원본 파일 경로의 길이 |
0x1C 이후 | 원본 파일 경로 |

3.4 파일 복구 기법
- 일반적인 삭제는 파일이 사라지는 것이 아닌, 휴지통으로의 이동임
- Shift + Delete의 삭제 방식은, MFT 엔트리를 삭제하는 방식으로 동작함
- 두가지 방식 모두 파일 콘텐츠는 삭제되지 않음
MFT 엔트리 MFT 엔트리(Master File Table Entry)는
NTFS 파일 시스템
에서
각 파일이나 디렉터리에 대한 메타데이터를 저장하는 기본 단위,
MFT는 Windows 운영체제에서 NTFS(새로운 기술 파일 시스템)가 사용하는
파일 인덱스 테이블
로, 일종의 파일 시스템의 '전화번호부'
3.5 파일 삭제 실습
- NTFS 파일 시스템 준비 (텍스트 파일)
C드라이브는 동작하는 프로그램이 많은 경우 파일 삭제 이후 바로 덮어써지기 때문에 USB 활용
- HxD > 디스크 열기 >NTFS 볼륨을 열어주기
MFT 시작 주소 : 0xC0000 & 0x1000 (클러스트 크기) = 0xC0000000
- MFT 시작 주소에서 HxD 검색 기능으로 파일 검색 (유니코드 옵션)
- $DATA 영역의 Cluster Run 구조 찾기
$DATA 의 속성 ID는 0x80, 그로부터 0x40 오프셋 뒤에 Cluster Run 구조가 위치함
$Attribute ID (빨간색 영역) : - Cluster Offset: 0x1188 → 클러스터(0x1000) 크기와 곱해 0x1188000 오프셋을 가리킴
- Cluster Length: 0x2 → 2개 클러스터(0x2000) 만큼 파일이 존재함
따라서 0x1188000 위치로 이동해 보면, 아래와 같이 파일 데이터를 확인할 수 있음
- Shift + Delete로 파일 삭제 후 분석하면
MFT Entry의 Flag영역에 삭제 표시했지만, 데이터 영역은 변경되지 않았고 이를 활용해 데이터 복구 가능
FTK Imager 파일 복구
3.6 파일 카빙 기법
- 파일 카빙 : 파일 시스템에 메타데이터가 없을 때에도 파일 조각들을 모아서 파일을 재조합하는 과정
- 파일 시그니처를 기반으로 하는 카빙 / 파일 구조를 기반으로 하는 카빙
3.7 파일 시그니처 기반 카빙
- 헤더와 푸터 정보를 이용하는 카빙 : 바이너리 파일에서 헤더, 푸터를 찾아내고 잘라내어 하나의 파일을 만들어 내는 방법
- 속도 빠르지만 정확도가 낮음
Python 스크립트 실행 후 결과 예시
3.8 파일 구조 기반 카빙
- 파일의 구조를 기반으로 파일의 시작 위치와 파일의 끝 위치를 정확하게 판단하여 카빙
- 파일마다의 예외 처리 등 어렵고 복잡한 과정
기본 과정 요약
단계 | 설명 |
1️⃣ 파일 시스템 파싱 | 디스크 이미지에서 NTFS/FAT/ext 등 파일 시스템 구조를 분석 |
2️⃣ MFT 등 메타데이터 추출 | 삭제되었거나 연결이 끊긴 MFT 엔트리 등에서 정보 수집 |
3️⃣ 클러스터/섹터 추적 | MFT 엔트리 내 데이터 영역 포인터(클러스터 주소)를 바탕으로 실제 파일 데이터 추적 |
4️⃣ 파일 재조합 | 클러스터를 순서대로 모아 파일 복원 |
5️⃣ 무결성 검증 | 파일 크기나 헤더/푸터, Magic Number 등을 통해 완전성 확인 |
예시: NTFS에서의 파일 구조 기반 카빙
- 삭제된 파일의 MFT 엔트리 찾기
→ $MFT에서 삭제 표시(예: 사용 안 함 상태)의 엔트리를 확인
- $DATA 속성 확인
→ Non-resident일 경우 클러스터 목록(Run list)을 확인
- 클러스터 주소 따라가기
→ 실제 데이터 영역에서 해당 클러스터의 내용을 추출
- 원래 파일 이름, 타임스탬프도 복구 가능
4. Windows 아티팩트 정리
4.1 Windows 아티팩트
- Windows Notification : 알림 정보
- Windows Timeline : 사용자의 시간별 행위를 타임라인으로 제공(win 10에서만 제공)
- Volume Shadow Copies : 백업을 위한 복사본
- 바로가기 목록 : 열거나 생성한 파일에 대해 바로가기 생성
- Jumplists : 여러 프로그램에서 접근한 최신 파일들 확인
- Shellbags : 파일 탬색기를 통해 폴더를 볼 때의 기본적인 설정 값들 저장(이름, 수정한 날짜, 유형, 크기, 정렬방법, … )
- 기타 아티팩트 확인 방법 : SANS : Windows Forensic Analysis , Windows Forensic Handbook