시스템 시간 변경 흔적 정리

안티 포렌식에서 가장 간단하게 할 수 있는 것 중 하나가 시간 변경이다. 운영체제의 시간을 변경하여 두면 이후에 일어나는 일들의 시간이 시스템 시간에 맞춰지기 때문에 추후에 타임라인 분석등을 진행 했을 때 분석에 어려움을 겪을 수 있다. 이번 글에서는 사용자가 운영체제에서 지원하는 기능으로 시간을 변경 했을 때 어떤 흔적들이 남는지 카테고리 분류별로 알아볼 예정이다.

해당 글에서 정한 카테고리는 프리패치, 이벤트로그, 레지스트리, 파일시스템 로그 총 4가지 분류이며, 각각의 카테고리별로 Windows XP와 Windows 7을 중심으로 컨트롤 패널 기능과 명령 프롬프트 기능을 이용했을 때 남는 흔적들을 정리 해 보도록 하겠다.

 

1. Prefetch
 1) Windows XP

Windows XP의 경우 시작표시줄에 있는 패널을 이용 해 날짜를 변경하려 할 경우 RUNDLL32.EXE의 프리패치가 생성되며 해당 참조 목록에 W32TIME.DLL이 존재한다. 하지만, 컨트롤 패널을 열었을 경우에도 해당 흔적이 남기 때문에 날짜를 변경 했다고 확정 할 수는 없다.

W32.TIME
[그림 1] –  W32TIME.DLL

 

2) Windows 7
Windows 7의 경우 컨트롤 패널을 이용할 경우 RUNDLL32.EXE의 프리패치가 생성되며 RUNDLL32.EXE의 참조 목록에 TIMEDATE.CPL이 존재한다. 하지만, 컨트롤 패널을 열었을 경우에도 해당 흔적이 남기 때문에 날짜를 변경 했다고 확정 할 수는 없다.

TIMEDATE
[그림 2] – TIMEDATE.CPL

프리패치의 경우 응용프로그램의 실행과 관련이 있을 뿐, 기능의 수행과는 관련이 없어 정확하게 날짜를 변경했다는 확인을 할 수는 없다. 확인이 아닌 정황만을 포착할 수 있으므로 프리패치에서 이와 같은 흔적들을 발견했다면 다른 추가 흔적을 분석 해 시간변경이 이루어졌다는 것을 파악해야 할 것이다. 그리고 Windows XP/7은 명령프롬프트를 이용해서 날짜를 변경 했을 때 CMD.EXE 프리패치만 생성 될 뿐, 뭔가를 파악하거나 의심할만한 흔적이 남지 않는다.

 

2. Event Log
 1) Windows XP

Windows XP의 경우 컨트롤 패널과 명령프롬프트를 이용 해 시간을 변경하였을 경우 다음과 같은 이벤트로그들이 남는다.

– Event ID 520 : Security 카테고리에 남으며, 변경 전/후의 시간을 알 수 있다. 해당 이벤트로그는 컨트롤 패널과 명령프롬프트 모두 남는다.

WindowsXP_controlpanel
[그림 3] – 컨트롤 패널을 이용하여 변경 하였을 시 생성되는 이벤트로그 모습

WindowsXP_cmd
[그림 4] – 명령프롬프트를 이용하여 변경 하였을 시 생성되는 이벤트로그 모습

 해당 이벤트 로그에서는 시간을 변경한 사용자, 프로세스, 변경 전/후의 시간 정보를 모두 알 수 있다.

 

– Event ID 577 : Security 카테고리에 남으며, Event ID 520 이벤트가 남기전에 생성되는 이벤트로그로 어떤 권한을 사용 했는지 알 수 있는데 시간 변경 권한은 SeSystemtimePrivilege을 이용한다. 520 이벤트의 기록이 사라졌더라도 시스템 시간을 변경했다는 사실을 파악 할 수 있다.

WindowsXP_SeSystemtimePrivilege
[그림 5] – 시스템 시간 변경을 위해 SeSystemtimePrivilege 권한을 사용하여 이벤트로그가 남은 모습

명령프롬프트를 사용했을 경우에도 577 이벤트로그는 컨트롤 패널과 동일하게 생성된다. 하지만 위 두 가지의 이벤트로그는 설정을 통해서만 남으므로 기존에 해당 이벤트로그가 생성될 수 있도록 설정을 해주어야 한다.

 

2) Windows 7
Windows 7의 경우 컨트롤 패널과 명령프롬프트를 이용 해 시간을 변경하였을 경우 다음과 같은 이벤트로그들이 남는다.

– Event ID 4616 : Security 카테고리에 남으며, 변경 전/후의 시간을 알 수 있다. 해당 이벤트로그의 생성을 위해서는 설정이 필요하다.

Windows7_controlpanel
[그림 6] – Event ID 4616

 

– Event ID 20000 : Application and Service Logs\Microsoft\Microsoft\Windows\DateTimeControlPanel\Operational 카테고리에 남으며, 컨트롤 패널에 의한 시간 변경이 이루어졌을 때 생성되는 이벤트 로그이다. 명령프롬프트를 이용 해 시간을 변경하면 해당 카테고리에는 이벤트로그가 생성되지 않는다.

DateTimeControlPanel
[그림 7] – Event ID 2000

 

– Event ID 1 : System 카테고리에 남으며, 변경 전/후의 시간을 알 수 있다. 해당 이벤트로그는 컨트롤 패널과 명령프롬포트 상관없이 생성 된다.

Windows7_kernelgernal
[그림 8] – Event ID 1

 

– Event ID 34 : System 카테고리에 남으며, 시간 변경 여부를 확인 할 수 있다. 시간을 변경 할 때 발생하는 오류를 기록하는 이벤트로그인데 해당 이벤트로그를 통해 정확한 시간 변경 값을 알수는 없지만, 시간을 임의로 변경하려고 했던 행동에 대한 판단은 가능하다. 해당 이벤트 로그의 생성을 위해서는 설정이 필요하며, 명령프롬프트를 이용한 시간변경에도 동일한 이벤트로그가 남는다.

Windows7_EventID34
[그림 9] Event ID 34

참고로, Windows XP에도 Event ID 34와 동일한 이벤트로그가 남는다.

 

3. Registry
 1) Windows XP

– HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count\HRZR_EHAPCY:gvzrqngr.pcy

위 레지스트리 값을 분석하면 컨트롤 패널인 timedate.cpl의 실행 횟수를 알 수 있다. 그러나 프리패치 흔적과 마찬가지로 시간을 변경했다는 확인은 할 수 없다.

 

2) Windows 7
Windows 7은 시간을 변경하였을 때 레지스트리에 흔적이 남지 않는다.

 

4. FileSystem Log
 1) Windows XP

Windows XP의 경우 프리패치등의 파일이 생성되는 것을 제외하고는 시간변경과 관련 된 흔적이 남지 않는다.

 

2) Windows 7
Windows 7의 경우 기본적으로 위에서 소개 되었던 DateTimeControlPanel\Operational 이벤트 로그가 생성되기 때문에 해당 이벤트 로그의 생성을 위해 파일의 생성 이벤트가 발생한다.

Windows7_filesystemlog
[그림 10] – FileSystem Log

 

5. 결론
 시스템 시간 변경에 관련한 흔적은 의외로 많은 곳에 남는다. 기본적으로 남는 흔적이 아닌 것도 있지만, 간단한 설정으로 얻을 수 있는 정보들이다. 정보를 얻어 이러한 행동을 파악하는 것도 중요하지만 사전에 방지하는 것이 더 중요한 일이다. 간단하게 Windows의 로컬보안정책을 통해 아래와 같은 사항을 적절히 수정한다면 사전에 시스템 시간 변경을 방지 할 수 있다.

로컬정책
[그림 11] – 로컬보안정책(Windows 7)

로컬보안정책2
[그림 12] – 로컬보안정책(Windows XP)