[Tech Report] 윈도우 8 포렌식(3)
2012년 7월호부터 3번에 걸쳐 윈도우 8의 마지막 프리뷰 버전인 릴리즈 프리뷰(Release Preview, 이하 RP)에 대해 살펴보고 있다. 7월호와 8월호에서는 윈도우 8에 새롭게 추가된 메트로 UI 기능과 포렌식 분석에서 다루는 데이터가 윈도우 7과 비교해 어떻게 다른지 설명했다.
이번 호에서는 PC 복구(Refresh), 모든 항목 제거 및 윈도우 다시 설치(Reset), 파일 히스토리 기능과 이를 포렌식 분석에 어떻게 활용할 수 있을지 알아본다.
|
<연재 목차>
|
7월호에서도 살펴본 바와 같이, 윈도우 8에는 운영체계 자체적으로 시스템을 복원시키는 기능 2가지가 추가되었다. 바로 PC 복구와 모든 항목 제거 및 윈도우 다시 설치(PC 초기화) 기능이다. 해당 항목은 [그림 1]과 같이 PC 설정의 일반 범주에서 확인할 수 있다.

[그림 1] PC 설정 → 일반 범주
기존 버전에도 시스템 복원 지점을 이용해 특정 지점으로 되돌리는 기능이 있었지만, 복원 항목에 제약이 있고 사용하는데 추가 설정이 필요해 많이 사용되지는 않았다. 하지만, 윈도우 8에 새롭게 추가된 기능은 간단히 운영체계 설치 초기 상태로 되돌릴 수 있어 일반 사용자들도 매우 쉽게 사용할 수 있을 것이다. 그럼, 각 기능을 수행했을 때 시스템에 어떤 변화가 있는지 살펴보자.
PC 복구
PC 복구(Refresh) 기능을 선택하면 [그림 2]와 같은 대화상자가 열린다. 대화상자의 내용과 같이 PC 복구를 수행하면 파일 및 개인 설정, 윈도우 스토어의 앱은 변경되지 않고 나머지 모든 설정은 기본값으로 복원된다.

[그림 2] PC 복구 대화상자
PC 복구 후 볼륨을 원본 볼륨과 비교해보자. 윈도우 7 이후부터 윈도우를 설치하면 시스템에 기본적으로 볼륨이 2개 생긴다. 하나는 부팅 관련 데이터가 저장되어 있는 예약 볼륨이고, 다른 하나는 윈도우 설치 파일이 저장되는 시스템 볼륨이다.
먼저 예약 볼륨부터 살펴보자. [그림 3]은 PC 복구 전•후의 예약 볼륨을 비교한 것이다.

[그림 3] 원본 예약 볼륨과 PC 복구 후 예약 볼륨의 비교
PC 복구 후 예약 볼륨에 Logs 폴더가 추가된 것을 확인할 수 있다. Logs 폴더에는 Reload.xml 파일이 하나 존재하는데 내용은 다음과 같다.
Reload.xml의 내용은 Recovery\b17699c1-c8be-11e1-8f0f-dc8dcb9b2531 폴더 하위의 ReAgent.xml 파일이 이동한 것이다. [그림 4]는 Recovery\b17699c1-c8be-11e1-8f0f-dc8dcb9b2531 폴더 내용을 살펴본 것이다. 내용 중 ReAgent.xml 파일이 있는데 PC 복구 작업을 수행하면 해당 파일이 Reload.xml로 내용이 추가되어 백업되고 새로운 ReAgent.xml 파일이 생성된다.

[그림 4] 예약 볼륨의 Recovery 폴더 하위 내용
Reload.xml로 백업되면서 ReAgent.xml에 추가되는 내용은 다음과 같다.

결과적으로, 조사하는 시스템의 예약 볼륨에 Logs\Reload.xml 파일이 존재한다면 해당 시스템은 PC 복구를 수행한 것이라고 판단해야 한다. 또한, ReAgent.xml 파일이 새로 생성되므로 해당 파일의 생성 시간을 확인하면 PC 복구 수행 시각을 알 수 있다. 다음으로, PC 복구 후 시스템 볼륨의 변화를 살펴보자. [그림 5]는 원본과 PC 복구 후 시스템 볼륨을 비교한 것이다. PC 복구 후의 시스템 볼륨을 확인해보면 새로운 $SysReset 폴더와 Windows.old 폴더가 추가된 것을 확인할 수 있다. [그림 6]은 $SysReset 하위 폴더를 보여준다. 이 폴더에는 PC 복구 작업에 사용한 파일과 복구 작업에 대한 마이그레이션 로그가 저장된다. $SysReset 폴더 하위의 폴더와 파일은 복구 중에 생성되므로 생성 시간은 복구 작업을 수행한 시간이다. 즉, 어떤 시스템 볼륨에 $SysReset 폴더가 존재한다면 그 시스템은 한 번 이상의 복구 작업을 수행한 것이다. 따라서 이러한 흔적을 고려하여 시스템 조사를 수행해야 한다. 게다가 마이그레이션 로그를 확인하면 복구 작업과 관련한 정보도 얻을 수 있다. [그림 7]은 Windows.old의 내용이다. Windows.old 폴더에는 복구되기 전 원본 볼륨의 폴더가 그대로 백업된다. 다만, $Extend, System Volume Information 폴더와 기본 NTFS 메타데이터 파일은 제외된다. 백업 파일은 원본에서 단지 이동하는 것이기 때문에 시간 정보가 수정되지는 않는다. 이로써 어떤 시스템 볼륨에 Windows.old 폴더가 존재한다면 해당 시스템은 한 번 이상의 복구 작업을 수행한 것이라고 판단할 수 있다. 또한 Windows.old 폴더에는 PC 복구 이전의 파일이 그대로 저장되므로 사용자가 해당 폴더를 삭제하지 않았다면 복구하기 이전의 흔적에 대해서도 살펴볼 수 있다. 모든 항목 제거 및 윈도우 다시 설치(PC 초기화) 다음을 선택하면 [그림 9]와 같은 대화상자가 나타난다. ‘내 파일만 제거’와 ‘드라이브를 완전히 정리’ 옵션을 선택할 수 있다. ‘내 파일만 제거’는 사용자 프로파일과 관련된 정보는 복구가 불가능하도록 완전삭제(wiping)하고 나머지 파일은 그냥 삭제만 한 후, 시스템을 재설치 는 것이다. 반면, ‘드라이브를 완전히 정리’ 옵션은 사용자 프로파일을 포함하여 시스템 전체의 모든 파일을 완전삭제하고 시스템을 재설치하는 것이다. 완전삭제는 데이터를 복구하기 어렵도록 0x0, 0x1 혹은 랜덤한 데이터로 대상을 덮어쓰는 기법을 말한다. PC 초기화에서 사용하는 완전삭제 기법은 랜덤한 데이터를 덮어쓴다. [그림 10]은 비할당 영역의 데이터로, 마지막 부분까지 랜덤한 데이터로 덮인 것을 확인할 수 있다. PC 초기화 후 예약 볼륨과 시스템 볼륨의 변화 예약 볼륨은 [그림 3]과 같이 이전 변화 상태와 동일하다. 결과적으로 PC를 초기화하면 윈도우 설치 상태와 동일하게 변경된다. 다만, 초기화 옵션의 선택에 따라 사용자 데이터만 완전삭제하거나 전체 데이터를 완전삭제할 수 있다. 윈도우 8 이전에 시스템을 다시 설치하려면 포맷을 해야 한다. 운영체계상에서 수행하는 포맷은 데이터를 완전삭제하는 것이 아니기 때문에 포맷 후 윈도우를 다시 설치하더라도 이전 데이터가 덮어써지지만 않았다면 데이터 카빙을 통해 복구할 수 있다. 윈도우 8에서는 포맷 작업 없이 윈도우를 다시 설치할 수도 있고 중요 데이터를 사용자 요구에 따라 완전삭제할 수도 있기 때문에 사용자에게는 더 편리해졌다. 하지만, 포렌식 조사에서는 사용자가 완전삭제할 경우, 데이터를 복구할 방법이 없기 때문에 또 다른 안티포렌식 기법이 될 수도 있다. 파일 히스토리 파일 히스토리는 파일의 백업 기능이다. 기존 윈도우에서 파일 히스토리와 같이 데이터의 안정성과 신뢰성을 보장하기 위한 방법은 시스템 복원과 윈도우 7 파일 복구가 있다. 윈도우 8에서는 이 기능에 파일 히스토리 기능이 추가됐다. 파일 히스토리 기능은 [그림 12]에서도 확인할 수 있듯이 라이브러리, 바탕화면, 연락처, 즐겨찾기의 파일을 외부 저장 장치나 공유된 네트워크 위치에 백업한다. [그림 13]은 파일 히스토리의 고급 설정 화면이다. 설정 내용을 살펴보면 기본적으로 파일이 백업되는 주기는 1시간이고, 오프라인 캐시의 크기는 디스크의 5%이며, 백업된 파일은 전체를 유지한다. 각 옵션은 사용자의 요구에 따라 수정할 수 있다. 파일 히스토리의 설정은 원하는 외장 저장 장치를 연결하거나 네트워크 위치를 지정하면 바로 활성화가 가능하다. 파일 히스토리가 설정된 외장 저장 매체로 하위 폴더를 탐색해보면 컴퓨터명 하위에 ‘데이터(Data)’와 ‘환경설정(Configuration)’ 폴더가 위치한다. 데이터 폴더에는 앞서 언급한 라이브러리, 바탕화면, 연락처, 즐겨찾기 폴더의 파일이 원본 트리 구조와 똑같이 백업된다. 환경설정 폴더에는 XML 형식과 ESE(Extensible Storage Engine) 형식의 설정 정보가 저장된다. ESE 데이터베이스 파일에는 [그림 16]과 같이 백업 파일의 카탈로그 정보가 저장된다. 파일 히스토리 기능을 설정하면 대상 백업 장치에 백업되는 정보 이외에 로컬에도 많은 정보를 남긴다. 대표적으로 파일 히스토리와 관련된 이벤트는 다음 2개의 이벤트 로그를 통해 확인할 수 있다. 앞서 살펴본 환경설정 폴더 정보도 로컬의 다음 위치에 동일하게 저장된다. 레지스트리도 다음 위치를 확인하면 기본 설정 정보와 [그림 17]과 같이 백업 외부 저장 장치 및 네트워크 위치에 대한 세부 사항을 확인할 수 있다. 위 레지스트리 항목 이외에도 파일 히스토리는 서비스로 동작하기 때문에 [그림 18]과 같이 서비스 레지스트리 키 값을 확인하면 파일 히스토리 서비스의 시작 유형이나 관련 설정을 확인할 수 있다. 다음은 파일 히스토리 서비스의 설정 정보가 기록된 레지스트리 키 경로다. 이런 정보는 포렌식 조사에서 매우 유용할 수 있는데, 이벤트 로그, 환경설정 정보, 레지스트리를 확인하면 파일 히스토리 기능의 사용 여부를 확인할 수 있다. 또, 만약 해당 기능을 사용했다면 백업되는 폴더가 사용자의 행위나 특성을 표현해줄 수 있는 중요한 폴더인 만큼 로컬 시스템 이외에 관련 백업 저장 장치 혹은 네트워크 위치를 추가로 조사할 필요가 있다. 이상으로 윈도우 8에서 새롭게 추가된 대표적인 3개의 기능과 이를 포렌식 조사에서 어떻게 활용할 수 있을지 살펴봤다. 윈도우 8은 윈도우 7에 기반하고 있기 때문에 조사에 활용하던 데이터는 크게 변하지 않았지만, 추가된 기능이 있으므로 조사에 어떻게 활용할 수 있을지 미리 확인하는 것이 필요하다.@
[그림 5] 원본 시스템 볼륨과 PC 복구 후 시스템 볼륨의 비교
[그림 6] $SysReset 하위 폴더
[그림 7] Windows.old 폴더 내용
모든 항목 제거 및 윈도우 다시 설치를 선택하면 [그림 8]과 같은 대화상자가 열린다. 대화상자의 내용과 같이 모든 파일과 앱을 제거하고 모든 설정을 기본값으로 복원한다. 초기화가 완료되면 제품 키를 넣는 과정부터 윈도우 초기 설정과 동일하게 진행된다. 
[그림 8] PC 초기화 대화 상자
[그림 9] 드라이브 정리 옵션 대화상자
[그림 10] 랜덤한 데이터로 덮어쓴 비할당 영역
시스템 볼륨을 살펴보자. [그림 11]은 원본과 PC 초기화 후 시스템 볼륨을 비교한 것이다. 눈으로 확인할 수 있듯이 PC 초기화 작업은 이전 파일을 삭제한 후 윈도우를 새로 설치하는 작업이기 때문에 폴더 구조에서 이전 볼륨의 흔적을 찾을 수 없다. 
[그림 11] 원본 시스템 볼륨과 PC 초기화 후 시스템 볼륨의 비교
윈도우 8 설치 후 제어판을 살펴보면 새롭게 추가된 아이콘을 확인할 수 있다. 바로 ‘파일 히스토리’ 기능이다. 파일 히스토리 기능을 실행해보면 [그림 12]와 같이 기본적으로 비활성화되어 있는 것을 알 수 있다. 
[그림 12] 제어판 → 파일 히스토리
[그림 13] 파일 히스토리의 고급 설정
[그림 14] 파일 히스토리 기능이 설정된 외부 저장 장치
XML 형식은 [그림 15]와 같은데 사용자명, 컴퓨터명, 백업 폴더 정보, 백업 장치의 볼륨 경로, 장치 타입, 볼륨명 등을 확인할 수 있다. 
[그림 15] 파일 히스토리 XML 구성 파일 내용
[그림 16] 파일 히스토리 카탈로그 구성 파일 내용
• Microsoft-Windows-FileHistory-Core%4WHC.evtx
• Microsoft-Windows-FileHistory-Engine%4BackupLog.evtx
• %SystemDrive%\Users\%UserName%\AppData\Local\Microsoft\Windows\FileHistory
• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\FileHistory
[그림 17] 파일 히스토리 레지스트리 기본 설정 정보
• HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\fhsvc
[그림 18] 파일 히스토리 레지스트리 서비스 설정 정보
- AhnLabA-FIRST 김진국 주임 연구원