본문 바로가기
Forensics/인터넷 익스플로러 아티팩트 분석

[포렌식] WebCacheV01.dat 데이터 수집 및 분석 - 일반 모드

by 수픽 2020. 7. 15.

1. 데이터 수집

WebCacheV01.dat를 처음엔 바로 찾을 수 있었는데,  나중에 되니까 무슨 문제인지 찾을 수 없었다. 그러다 인터넷 익스플로러를 킨지 2시간만에 찾을 수 있었는데, (가설 1: 아티팩트 파일은 해당 브라우저를 사용한지 2시간 후에 생성?) 폴더에서는 못찾고 파일 이름을 검색을 해야 나왔다. 무슨 일인지는 모르겠지만 경로는 다음과 같다.

C:\Users\(유저이름)\AppData\Local\Microsoft\Windows\WebCache

 

WebCacheV01.dat 수집 방법은 다음 블로그를 참고한다. 

https://blog.naver.com/gyurse/220253178395

 

[TIP] WebCacheV01.dat 수집 & 분석 방법

IE 10 이상부터 모든 인터넷 로그는 %Localappdata%\Microsoft\Windows\Webcache 폴더 안에 있는 We...

blog.naver.com

 

* 나중에 나오지만, 명령 프롬포트는 관리자 권한으로 하자.

(1) 실행중인 프로세스 종료

tasklist | find /i "taskhost"로 현재 실행중인 프로세스를 확인하고,

사용중인 프로세스가 있다면 taskkill /f /im "프로세스.exe" /t으로 프로세스를 종료시켜준다.

사진과 같이 명령어를 사용하여 연결되어 있는 프로세스를 모두 종료시켜준다. 

프로세스 종료

 

(2) WebcacheV01.dat 파일 복사

주의할 점은, copy가 아닌 xcopy를 사용해 최상위 폴더에 숨김파일까지 복사해야한다는 점이다.

WebcaCacheV01.dat 폴더는 숨김 폴더이기 때문에 해당 명령어를 사용해줘야한다.

xcopy /s /h /i /y "%Localappdata\Microsoft\Windows\Webcache\$.dat" C:\

그런데 막상 진행하려고 하니, '공유 위반입니다. ' 라는 오류문구가 계속 떴다.

xcopy 공유 위반 오류

 

해당 오류는 '파일이 COM Surrogate에서 열려 있으므로 이 작업을 완료할 수 없습니다'라는 오류와 같은 문제이다.

1)컴퓨터를 재부팅해도 되지만, 열려있는 프로그램이 너무 많았던 관계로

2)작업관리자에 들어가 COM Surrogate를 모두 작업 끝내기 해주었다.  그리고 다시 xcopy를 해주니 성공!

xcopy 성공

 

(3) WebCacheV01.dat 데이터 파일 상태 점검

그리고 데이터파일의 상태를 점검한다. esentutl /mh WebCacheV01.dat 명령어를 사용하면 중간에 dirty shutdown이라는 문구를 볼 수 있다. 현재 dirty상태이기 때문에 clean상태로 고쳐주어야한다.

데이터파일 상태 점검 - dirty

 

이 파일을 clean 상태로 복구하기 위해서는 esentutl /p WebCacheV01.dat 명령어를 사용한다.

그런데 이때 error 1032가 계속 뜬다. 

데이터파일 상태 점검 - clean

 

저 문구 그대로 검색하면 안뜨는데 eseutil (error) 1032라고 검색하면 확인할 수 있다.

1) 모든 exchange 서비스를 다시 시작하거나 서버를 다시 시작하면 잠금을 제거할 수 있습니다. 

-> 모든 활동을 종료하고 다시 시작해봄. 실패

2) JET_errFileAccessDenied = 파일에 액세스 할 수 없습니다-파일이 잠겨 있거나 사용 중입니다. 다른 프로세스가 파일을"도난 "했습니다. 바이러스 검사기가 실수로 파일을 검역소에 보관하거나 백업 프로세스가 일시적으로 액세스를 거부 할 수 있습니다.

-> 잠겨있는 것 = 관리자 권한으로 묶여있다 라고 해석하여 파일을 내 권한으로 바꿔보았지만 실패.

3) 처음부터 다시 해봄 (xcopy, esentutl -p는 cmd 관리자 권한으로 실행함)

-> 데이터가 소실되는데 괜찮은지 물어보는 Warning 창이 뜬다. 불가피하므로 확인 누르니 성공.

 

∴ 아마 cmd를 관리자 권한으로 실행해야 하는 것 같다.

 

정상적인 Warning 창

 

정상적으로 진행됐을 때의 cmd 내용이다.

 

 

2. 데이터 분석

분석 파일 : WebCacheV01.dat

사용 도구 : ESEDatabaseView

 

  • 각 정보들은 Container_N 테이블에 저장
  • 어떤 정보가 각각의 테이블에 저장되어 있는지는 Container 테이블의 ContainerId 칼럼과 Name 칼럼 참조

 

2-1. History


  • 사용자가 방문한 웹사이트의 접속 정보
  • 사용자의 편의를 위해 저장 (다시 방문, 월별/일별 방문 기록 분류 제공)
  • 저장 형식 분류 (직접 접근: url 입력창에 직접 주소 입력/ 간접 접근: 링크 통해 접근)
  • Name 값 : "History" / "MSHist01~"

 

Container_2에 History 정보가 저장되어 있음을 확인

 

Name 값이 History거나, MSHist01~로 시작

 

Container_2 테이블의 정보

 

상세 정보

  • Sync Time : Access Time과 동일
  • Creation Time : 항상 0
  • Expiry Time : 해당 History 데이터 만료 시간. 만료되면 테이블에서 레코드 삭제 (기본 20일)
  • Modified Time : AccessTime과 동일 (변환해보면 초시간까지 동일)
  • Access Time : 해당 사이트 접근 시간 or 해당 파일 열람 시간 (FILETIME을 10진수로 변환)
  • Url : http://~ : 방문 사이트 URL , file:///~ : 열람한 파일 전체 경로
  • ResponseHeader : 웹 페이지 제목 정보가 들어있는 데이터 저장 (Hex)

-> Hex 에디터에 붙여넣으면 정보가 나온다.

-> 0x3A 위치 : 웹페이지 제목 문자열 크기 정보 (4바이트) (유니코드이므로 실제 값에 2배를 해주어야 읽을 바이트 수 를 구할 수 있음)

-> 문자열 크기 데이터에 바로 이어서 웹페이지 제목 문자열 (유니코드)

 

2-2. Cache

  • 웹 사이트 접속 시, 방문사이트로부터 데이터를 자동으로 다운받는 것
  • 재접속 시, 다시 다운 받지 않고 다운 받은 데이터를 사용 (빠른 웹페이지 로딩)
  • Cache 데이터 / Cache 인덱스 정보로 구분
  • Name 값 : "Content"

 

Cache 중 하나인 Container_1 테이블

 

상세정보

  • UrlHash : URL의 앞 부분이 비슷하면 Hash의 앞 부분도 비슷해짐
  • Sync Time : Access Time과 동일
  • Creation Time : 항상 0
  • Expiry Time : 해당 Cache 데이터 만료 시간. 만료되면 테이블에서 레코드 삭제 (기본 20일)
  • Modified Time : AccessTime과 동일 (변환해보면 초시간까지 동일)
  • Access Time : 해당 사이트 접근 시간 or 해당 파일 열람 시간 (FILETIME을 10진수로 변환)
  • Url : 해당 Cache 데이터를 다운로드 한 URL
  • Filename : Cache 데이터 파일명
  • Filesize : Cache 데이터 크기
  • ResponseHeader : 웹 페이지 제목 정보가 들어있는 데이터 저장 (Hex)
  • SecureDirectory : 해당 Cache 데이터가 저장되어 있는 폴더의 인덱스 정보

-> SecureDirectories 필드의 16진수 값을 사용

-> 해당 16진수값을 8자 단위로 끊어서 배열로 만듬

-> SecureDirectory 필드의 인덱스 값을 위에서 만든 배열에 적용

-> 인덱스 값을 통해 배열에서 얻어온 16진수가 해당 캐시 데이터가 저장되어 있는 폴더명임

     => 이를 통해 해당 캐시 데이터가 저장되어 있는 전체 경로를 구할 수 있음

 

ResponseHeader의 값은 해당 캐시 데이터의 HTTP 헤더값 (HEX)

 

URL의 앞 부분이 비슷하면 UrlHash의 앞 부분도 비슷해짐

 

2-3. Cookie

  • 웹사이트에서 사용자의 하드디스크에 저장시켜놓는 사용자에 관한 데이터
  • 웹 사이트에서 사용자 별, 개인화된 서비스 제공을 위해 사용 (자동 로그인..)
  • Name 값 : "Cookies"

 

상세 정보

  • Sync Time : Access Time과 동일
  • Creation Time : 해당 쿠키 파일 생성 시간
  • Expiry Time : 해당 Cookie 데이터 만료 시간. 만료되면 테이블에서 레코드 삭제 (기본 20일)
  • Modified Time : AccessTime과 동일 (변환해보면 초시간까지 동일)
  • Access Time : 해당 사이트 마지막 접근 시간 (FILETIME을 10진수로 변환)
  • Url : 해당 Cookie의 호스트 정보
  • Filename : 실제 쿠키 정보를 저장하고 있는 쿠키 파일의 이름. (경로는 Containers 테이블의 Directory에서 확인)

 

*본인은 인터넷 익스플로러가 주 브라우저가 아니라 쿠키값이 없음

 

2-4. download

  • 사용자가 의도적으로 선택해서 자신의 컴퓨터로 내려 받은 파일에 대한 정보 <->캐시 데이터 (사용자 의도 x 다운)
  • Name 값 : "iedownload"

 

 

Container_18

 

상세정보

  • Url : 다운로드 GUID 값 저장 
  • Access Time : 다운로드 시간 (FILETIME을 10진수로 변환한 값)
  • Creation Time : 항상 0 ü Modified Time : 항상 0 ü Expiry Time : 항상 0
  • Sync Time : Access Time 과 동일
  • ResponseHeader : 소스 URL, 저장 경로 정보가 들어 있는 데이터가 저장됨(Hex 값)

-> 시작 위치 부터 0x48 위치에 다운로드 데이터 크기 정보(8byte)

-> 시작 위치 부터 0x148(index.dat 에서는 0x138) 치에 문자열 배열 시작

 

-> 문자열 배열의 마지막 문자열은 저장 경로, 마지막에 두 번째 문자열은 소스 URL

 

 

http://forensicinsight.org/wp-content/uploads/2012/09/INSIGHT-IE-10-Forensics.pdf
http://www.igloosec.co.kr/BLOG_Microsoft%20Edge%20Web%20Browser%20Forensics?bbsCateId=1
http://forensicinsight.org/wp-content/uploads/2012/03/INSIGHT_Web-Browser-Forensics_Part1.pdf