보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

윈도우 레지스트리 분석을 이용한 침해사고 분석 기법

2018.04.04

24,329

서비스사업본부 보안분석팀 윤승균

 

 

1. 개요

 

최근 대기업은 물론 소기업들까지도 각종 보안 솔루션을 도입하여 이전보다 보안을 크게 강화시켰음에도 불구하고 내부 직원의 중요 정보 유출 사고가 빈번히 발생하고 있다.

 

흥미로운 점은 정보 유출 피해의 상당수가 악성코드가 아닌 전·현직 임직원들에 의한 것으로 확인되고 있다는 점이다.  이 점은 정보보호 업무를 수행함에 있어 가장 경계해야 할 대상이 ‘사람’으로 지목되는 이유이기도 하다.

 

일반적으로 국내 기업의 임직원들은 윈도우 운영체제의 PC를 사용한다. 윈도우시스템은 레지스트리를 이용하여 운영체제의 설정과 선택 항목을 관리하고 있는데, 레지스트리에는 하드웨어, 소프트웨어, 사용자 PC 설정 등에 대한 윈도우시스템의 모든 정보가 기록된다. 즉, 레지스트리를 분석할 수 있다면 PC 사용자의 사용 환경과 생성, 가공, 전송한 데이터 등을 역으로 파악하여 정보 유출의 정황이나 근거를 확인할 수 있다는 의미이다.

 

금번 기고는 정보 유출에 대한 정황이나 증거를 확보할 수 있는 윈도우 레지스트리 분석 방법에 대하여 설명하는 동시에 해당 분석기술을 소개한다. 특히 정보 유출을 쉽게 확인할 수 있는 방법을 제시하여 최종적으로는 내부 정보 유출 방지에 도움이 되고자 한다.

 

 

2. 레지스트리(Registry)

 

레지스트리는 구분의 용이를 위해 다음과 같은 Hive를 사용한다.

 


[표 1] 레지스트리 주요 Hive

 

 

침해사고 분석은 레지스트리 Hive 중 HKLM, HKU을 통해서 확인이 가능하다. HKLM은 시스템에 한번이라도 연결되었던 하드웨어, 소프트웨어 설정 및 기타 환경정보 등이 기록되며 HKU에는 윈도우 시스템에 등록되어 있는 모든 사용자와 그룹에 대한 프로파일 정보가 기록된다. 각 Hive의 Sub Key는 다음과 같다.

 

 

분류

Hive

Sub key

설명

응용프로그램

HKLM

SYSTEM

윈도우 시스템과 관련된 모든 설정 정보

SOFTWARE

윈도우 시스템에 설치된 모든 응용프로그램 정보

SAM

윈도우 시스템에 등록된 계정 정보의 접속 접속기록

사용자 정보

HKU

USER_SID

각 사용자의 설정 정보 (NTUSER.dat)

 

[표 2] 주요 Hive의 하위키

 

 

Hive

설명

HKLM

C:WindowsSystem32config

HKU

%userprofile%ntuser.dat

   

[표 3] HKLM, HKU Hive 파일 위치

 

 

[그림 1] HKLM 하위 레지스트리 키 파일

 

 

 

[그림 2] HKU 하위 레지스트리 키 파일

 

 

3. 데이터분석

 

1) SYSTEM 하위 키에서 확인할 수 있는 정보

 

① TimeZone (시스템 표준시간)

 

Time Zone 레지스트리 키는 증거의 타임라인이 조작되었는지를 확인하는 중요한 정보이다. 이 키에는 UTC 시간을 현지 시간으로 변환하는 데 필요한 값이 포함되어 있으므로 포렌식 분석 시 시스템 시간을 확인할 수 있는 절대적인 역할을 한다.

 

 

[그림 3] Timezone 설정 정보

 

 

② Storage Devices (저장매체 연결 정보)

 

저장매체가 연결될 때마다 드라이버에 대한 query가 수행되고 장치의 정보가 레지스트리에 저장된다. 가장 먼저 살펴볼 key는 USBSTOR이다.

 

 

 

시스템에 연결된 모든 외부 저장장치의 제품정보와 장치 ID가 USBSTOR에 저장된다

 

 

[그림 4] 연결되었던 저장장치 정보

 

 

다음으로 레지스트리 분석도구인 RegRipper를 사용해서 USBSTOR에 어떠한 내용이 포함되어 있는지를 살펴보겠다. 

 

 

 

[그림 4] 연결되었던 저장장치 정보

 

 

각 장치 아래에는 시리얼 넘버가 있다. 이러한 장치의 시리얼 넘버는 NIC의 MAC과 마찬가지로 제조업체에서 할당한 고유 값이다. 따라서 특정 외부저장장치를 식별하여 윈도우시스템에 연결되었는지의 여부를 확인할 수 있다.

또한 마지막 사용시간, 드라이버 설치시간, 디바이스 이름 등을 포함하고 있기 때문에 침해사고분석 시 큰 도움이 된다. 

 

 

2)  SOFTWARE 하위 키에서 확인할 수 있는 정보

 

① Autorun Location (자동실행 목록 위치)

 

자동 실행목록은 윈도우가 부팅될 때 자동으로 실행되는 프로그램의 목록이다. 일반적으로 악성코드에 감염될 경우 자동 실행목록에 악성코드 실행파일이 등록되어 자동으로 실행된다. 그러므로 자동 실행목록에서 인가되지 않거나 알 수 없는 출처의 프로그램이 등록되어 있을 경우 제거해야 한다. 

 

 

 

자동 실행목록의 경로 중에서 ‘HKLMSoftwareMicrosoftWindowsCurrentVersionRun’ 를 확인한 결과 vmware tool 프로그램이 자동실행 목록에 추가되어 있었고, 부팅 시 자동 실행된 것을 확인할 수 있었다. 

 

 

 

[그림 5] 자동실행 목록 확인

 

 

3) NTUSER.DAT 에서 확인할 수 있는 정보 

 

① MRU (최근 실행 작업)

 

MRU(Most Recently Used)는 사용자가 수행한 가장 최근 작업에 대한 내용을 포함하고 있으며, MRU 리스트는 크게 윈도우 “실행” 창에 입력한 RunMRU와 이와 연결된 RecentDocs(최근 실행문서)로 구분할 수 있다. 

 

● RecentDocs (최근 실행 파일)

 

RecentDocs 키에는 윈도우 탐색기를 통해 최근에 실행되었거나 열린 파일 목록을 기록하고 있다. 또한 최근에 실행한 모든 네트워크 및 외부 저장매체 파일을 모두 기록하기 때문에 침해사고 분석에서 중요한 증거자료로 사용될 수 있다.

 

RecentDocs 하위 키는 다음을 포함하고 있다.

- 시스템에서 사용되는 모든 파일 확장자 이름을 가진 하위 키

- 가장 최근에 열었던 폴더의 하위 키

 

 

 

[그림 6] RecentDocs 루트키의 MRUListEx값 목록

 

 

※ [그림 6]에서의 MRUListEx 값은 파일접근 순서를 기록하는 값이다.

 

 

RegRipper 레지스트리 분석도구를 이용하여 MRUListEx값을 파싱한 결과는 다음과 같다. 

 

 

 

[그림 7] 최근 실행 파일 목록(RecentDocs)-1

 

 

RecentDocs 레지스트리 키는 가장 최근에 열람한 파일의 LastWrite시간만을 기록하고 있다. 그러므로 다음 그림과 같이 현재 위치하고 있는 키에서 가장 마지막에 실행된 파일인 RegistryExplorer RECmd.zip 파일의 LastWrite 시간만을 확인할 수 있다.

 

 

 

[그림 8] 최근 실행 파일 목록(RecentDocs)-2

 

 

나머지 파일의 LastWrite 시간은 해당 파일의 확장자명을 가진 하위 키를 통해 알아낼 수 있다. 다음은 NTUSER.DAT.copy0 파일의 LastWrite 시간을 알아내기 위해 .copy0 하위 키를 확인한다.

 

 

[그림 9] .copy0 하위 키의 MRUListEx  목록

 

 

다시 RegRipper 툴을 사용하여 출력한 .copy0 의 MRUList는 다음과 같다

 

 

 

[그림 10] 최근 실행 파일 목록(.copy)

 

 

위의 방법을 반복하여 나머지 파일의 대한 마지막 사용시간도 확인할 수 있다. 

 

 

●​ runMRU(최근 실행 명령어)

 

RunMRU 레지스트리 키에는 최근 “실행"창에서 실행되었던 명령어가 저장되어있다. 

 

RunMRU의 MRUList 값은 RecentDocs의 MRUListEx 값과는 달리 평문으로 저장되므로 일반 레지스트리 뷰어를 통해 쉽게 확인이 가능하다. 

 

 

[그림 11] RunMRU 레지스트리값 목록

 

 

윈도우 “실행” 창을 통해 입력한 명령어의 실행 순서를 파악하기 위해 [그림 11]-MRUList 값의 데이터를 확인한다. 데이터를 확인한 결과 (“dfaecb”)라는 문자열이 저장되어있는데, 이는 MRUList 값이 d → f → a → … 순으로 명령어가 실행되었다는 것을 의미한다. 그러므로 MRUList 값 “d”에 해당하는 ‘regedit’이라는 명령어가 가장 최근에 실행되었다는 것을 알 수 있다.

 

 

② UserAssist (파일 실행 흔적)

 

UserAssist는 시스템에서 실행되었던 프로그램의 목록, 실행 횟수, 마지막 실행시간 등의 정보를 가지고 있다. UserAssist 키는 16진수로 표기되어있는 GUID를 나타내는 하위 키로 구성되어있으며 사용자가 실행한 특정 개체(제어판, 바로가기 파일, 프로그램 등)와 관련된 값을 저장한다.

 

 

[그림 12] UsserAssist 레지스트리 목록

 

 

UserAssist의 하위 키로 접근하면 [그림 12]와 같이 실행한 프로그램의 목록이 저장되어있는데 이 값들은 모두 CISEAR 암호라고도 불리는 ROT13으로 인코딩 되어있다. 

 

 

 

[그림 13] UsserAssist 레지스트리값

 

 

 

ROT13 인코딩된 P:HfrefFRHATQrfxgbccl2rkr-0.6.9.jva32-cl2.7.각 파일명과 64비트로된 FILETIME 값 62-40-F4-12-7D-33-D3-01을 디코딩한 결과, 

 

 

[그림 14] 디코딩 결과

 

Fri, 02 March 2018 01:06:22 UTC에 C:UsersSEUNGDesktoppy2exe-0.6.9.win32-py2.7.exe 설치프로그램이 실행된 것을 확인하였다. 

 

 

4) SAM에서 확인할 수 있는 정보 

 

SAM(보안계정 관리자)은 사용자의 비밀번호를 저장하는 윈도우시스템에서 사용하는 데이터베이스 파일이다. 시스템 및 원격 로그인을 진행할 때 윈도우시스템은 SAM 파일을 참조하여 인가되지 않은 사용자의 접근을 제한한다.

 

 

 

RegRipper 레지스트리 도구를 통해 SAM 파일에 포함되어 있는 내용을 살펴보면 다음과 같다. 

 

 

● 사용자 계정 정보 

 

구분

내용

비고

Username

Administrator [500]

계정명

Full Name

-

 

User Comment

-

 

Account Type

Default Admin User

계정 종류

Account Created

Fri Sep 22 08:30:54 2017 Z

계정 생성 시간

Password hint

-

비밀번호 힌트

Last Login Date

Mon Mar 12 13:36:24 2018 Z

마지막 로그인 시간

Pwd Reset Date

Mon Mar 12 13:36:24 2018 Z

비밀번호 변경 시간

Pwd Fail Date

Mon Mar 12 13:36:24 2018 Z

로그인 실패 시간

Login Count

11

로그인 횟수

 

[표 4] 사용자 계정 정보

 

 

​● ​그룹 정보 

  

구분

내용

비고

Group Name

Administrator [500]

그룹명

LastWrite

Fri Sep 22 08:30:54 2017 Z

마지막 변경 시간

Group Comment

-

 

Users (SID)

S-1-5-21-4019899649-2132122750-2430854516-500

등록된 사용자

  

[표 5] 그룹 정보

 

 

사용자 계정 또는 그룹 정보 중 유심히 살펴봐야 할 항목 중 그룹 정보의 SID가 있다. 그룹 정보의 경우 SID* 정보(http://support.microsoft.com/kb/243330 참고)와 매칭하여  사용자정보를 파악할 수 있다. 

위 그림에서의 SID(S-1-5-21-{도메인}-500)와 매칭되는 정보는 다음과 같다.

 

 

 

특정 도메인에서 생성된 계정 또는 그룹의 SID는 중복 생성이 될 수 없는 고유식별 값이기 때문에 이러한 정보를 통해 침해사고 또는 보안 관련 문제 발생 시 사용자 및 그룹을 식별해 낼 수 있는  중요한 정보이다.

* SID = 윈도우 운영체제의 보안 사용자 및 보안 그룹을 식별하는 고유 값이다.

 

 

4. 요약

 

다음은 본 고에서 설명한 레지스트리 키 목록이다.

 

· SYSTEMCurrentControlSetControlTimeZoneInformation 

​· ​SYSTEM ControlSet00x Enum USBSTOR

​· ​SOFTWAREMicrosoftWindowsCurrentVersionRunOnce

​· ​SOFTWAREMicrosoftWindowsCurrentVersionpoliciesExplorerRun 

​· ​SOFTWAREMicrosoftWindowsCurrentVersionRun 

​· ​NTUSER.datSoftwareMicrosoftWindowsNTCurrentVersionWindowsRun 

​· ​NTUSER.datSoftwareMicrosoftWindowsCurrentVersionRun

​· ​NTUSER.datSoftwareMicrosoftWindowsCurrentVersionRunOnce

​· ​​​NTUSER.datSoftwareMicrosoftWindowsCurrentVersionExplorerRecentDocs

​· ​NTUSER.datSoftwareMicrosoftWindowsCurrentVersionExplorerRunMRU

​· ​NTUSER.datSoftwareMicrosoftWindowsCurrentVersionExplorerUserAssit

​· ​SAM

 

본 고에서 다룬 레지스트리 키는 수 많은 레지스트리 키 중 일부에 해당된다. 보다 많은 레지스트리 키에 대한 정보는 AccessData에서 작성한 Registry Quick Find Chart에서 확인할 수 있다.

(https://support.accessdata.com/hc/en-us/article_attachments/201717329/Registry_Quick_Find_

Chart_9-27-10.pdf)

 

 

5. 결론

 

금번 기고를 통해 윈도우 레지스트리 분석방법과 해당 분석기술을 활용하여 정보유출에 대한 정황이나 증거를 확보할 수 있는 방법에 대해 알아보았다. 앞에서 살펴봤듯이 레지스트리로 찾은 흔적 하나하나가 또 다른 흔적을 찾아 나갈 수 있는 중요한 실마리가 되기 때문에 세심하고 정밀한 분석이 필요하다. 본 기고에서 기술한 과정 이후 분석자가 진행해야 할 작업은 레지스트리 분석을 통해 얻은 정보를 활용하고 가공하여 원하는 결과를 도출해내는 것이다.

 

 

6. 참고자료

 

[1] http://www.forensicfocus.com/a-forensic-analysis-of-the-windows-registry

[2] https://pdfs.semanticscholar.org/3199/ef692533d466a9dd627cbc8ac3aa51d33406.pdf

[3] https://gbhackers.com/windows-registry-analysis-tracking-everything-you-do-on-the-system/

[4] https://www.forensicmag.com/article/2012/08/windows-7-registry-forensics-part-6

[5] https://www.magnetforensics.com/computer-forensics/how-to-analyze-usb-device-history-in-windows/

[6] https://www.slideshare.net/Himanshu0734/windows-registry-analysis-51637213