윈도우 환경에서 운영체제 설치시간을 알아보자.
포렌식 업무에 종사하거나 공부하는 사람들이라면 이미 누구나 아는 내용일테지만 새삼스럽게 정리하는 이유는 포렌식을 처음 공부하는 사람들에게 조금이나마 도움이 되길 바라는 마음 때문이다. 의외로 학회나 세미나를 참석해보면 다 알고 있을 것이라고 생각했던 내용을 모르고 있는 경우가 종종 있어서 앞으로 간단하게나마 정리해보려고 한다.
운영체제 설치 시간의 포렌식적 의미
우선 포렌식적으로 운영체제 설치 시간을 파악하는 것이 무슨 도움이 될까?
우선 용의자는 자신의 증거 은폐를 위해 포맷이나 완전삭제(wiping) 후 운영체제를 새로 설치할 수 있다. 하지만 자신의 은폐사실을 숨기는 경우가 있다. 실제 현장에서도 운영체제를 새로 설치했음에도 불구하고 사건 시점 이전부터 계속 사용해왔다고 우기는 사람이 종종 있다고 한다.
다른 예는 현재 파일시스템의 모든 파일은 운영체제 설치 시간 이후의 시간을 가져야 한다. 하지만 시간 정보가 운영체제 설치 시간보다 이전이라면 용의자가 의도적으로 수정을 했을 가능성이 있다. 하지만, 다른 장소(다른 저장매체 등)에서 이미 생성된 파일을 이동 및 복사한다면 생성 시간은 운영체제 시간보다 전으로 설정되어 있을 것이다.
이외에도 운영체제 설치 시간을 파악한다는 것은 시스템을 조사하는데 많은 참고가 될 수 있다.
윈도우 설치 시간 확인
윈도우 설치 시간을 확인하는 방법은 레지스트리를 이용하거나 WMI(Windows Management Instrumentation)를 이용해 확인할 수 있다.
1. 레지스트리를 이용한 확인
레지스트리의 다음 키 값을 확인하면 윈도우 설치 시간을 확인할 수 있다.
Windows 98/ME :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FirstInstallDateTime
Windows NT/XP/Vista/7 :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
시간은 유닉스 시간(Unix Timestamp) 형식으로 되어 있다. 위 시간을 유닉스 시간으로 변경하면 다음과 같다.
InstallDate Value: 4B0B3BA0
Unix Timestamp : 2009년 11월 24일 10:49:20
2. WMI – Win32_OperatingSystem
WMI의 Win32_OperatingSystem 클래스를 확인하면 InstallDate를 확인할 수 있다.
http://msdn.microsoft.com/en-us/library/aa394239(VS.85).aspx
WMI를 쉽게 확인하는 방법은 윈도우에 기본으로 내장되어 있는 wmic.exe 를 활용하는 방법이다.
시작 -> 실행에서 “wmic”를 치면 WMI를 사용할 수 있는 명령창이 뜬다.
wmic -> os get installdate [엔터]
앞서 살펴본 레지스트리의 값과 동일하게 나온다. WMI는 윈도우 내부에 존재하는 데이터베이스에 질의하여 정보를 얻어온다.
문제는 레지스트리 값은 손쉽게 변경시킬 수 있다는 점이다. 그러면 WMI 시간은 변경되지 않는 것인가?
레지스트리의 값을 0xd2029649(1234567890)로 변경한 후 wmic를 이용해 시간을 확인해 보았다.
이처럼 레지스트리를 변경하면 WMI도 함께 변하게 된다. 윈도우 설치 시간을 사용자가 수정을 했다면 수정한 사실은 어떻게 알 수 있을까? 여러 가지 방법이 있겠지만 파일시스템이 NTFS인 경우 NTFS 포맷 시간을 기반으로 알아 볼 수 있다. NTFS 포맷 시간은 다음 포스팅에서 살펴보자.
'윈도우 서버에 대해서' 카테고리의 다른 글
precompiled header 에러 문제 (0) | 2014.08.23 |
---|---|
비주얼 스튜디오 컬러 생성 (visual studio theme Generator) (0) | 2014.08.04 |
빠르고 안전한 통신 프로토콜을 만들어 보자 - XOR 가지고는 문제가 해결되지 않는다. (0) | 2013.07.07 |
게임 해킹을 막는 보안 전략 (0) | 2013.07.07 |
ASP.Net, VB를 이용해서 서버의 레지스트리 값 얻어오기 (0) | 2012.12.05 |