Regripper – Windows Forensic Registry

Regripper는 “Windows Forensic Analysis”의 저자인 ‘할렌 카비’가 펄로 작성한 레지스트리 분석기로써, 레지스트리에서 필요한 정보들을 자동으로 추출하여 준다. CLI버전(rip.exe)과 GUI버전(rr.exe)를 제공하며, http://regripper.wordpress.com/ 에서 관련 자료를 확인할 수 있다.

레지스트리의 분석을 하는데 많은 도움이 되며, 수작업으로 분석할 필요없이 레지스트리 하이브 파일을 입력하고, 유형을 선택하면 해당 하이브 파일에서 유용한 정보들을 텍스트로 작성하여 준다.

 

[그림] Regrepper GUI툴로 이용하여 편리하게 분석할 수 있다

 

그럼 Regrepper를 이용하여 각 하이브 파일에서 얻을수 있는 유용한 정보들이 어떻 것들이 있는지 확인해 보자.

 

System

레지스트리 이름에서 알 수 있듯이 운영체제의 환경설정과 하드웨어에 대한 내용들을 확인할 수 있다.

 

컴퓨터이름(ComputerName)

레지스트리 위치: SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName

컴퓨터를 네트워크에서 식별할 수 있는 이름을 확인할 수 있다.

 

ComputerName = JUHAN-1 ß 로컬에서 구분되는 컴퓨터 이름

TCP/IP Hostname = juhan-1 ß 네트워크상 구분되는 컴퓨터 이름

[내용] System.txt의 제일 처음 컴퓨터이름을 확인 할 수 있다

 

이벤트 파일 정보(Event Information)

레지스트르 위치: SYSTEM\CurrentControlSet\Services\Eventlog

설정된 이벤트 파일의 위치와 저장 용량, 최대 일수 등을 확인할 수 있다.

 

Application \ Tue Oct 11 08:37:15 2011Z ß 어플리케이션 로그임

File = %SystemRoot%\system32\config\AppEvent.Evt ß 로그의 저장위치

DisplayNameFile = %SystemRoot%\system32\els.dll ß 이벤트로그스냅인 라이브러리

MaxSize = 512.00KB ß 로그저장 최대사이즈

Retention = 7.00 days ß 기록된 로그 유지 일수

[내용] 확인 가능한 이벤트 파일 정보

 

이 정보를 변경하고자 한다면 시작메뉴의 실행을 눌러 “eventvwr.msc”실행하여 이벤트 뷰어르 실행한 후 변경하고자 하는 로그분류를 선택하고, 마우스 우클릭후 “속성”을 클릭하면 변경할 수 있다.

 

[그림] 기본값으로 설정된 보안 로그 속성

 

연결드라이브(MountedDevices)

레지스트르 위치: SYSTEM\MountedDevices

연결될 드라이브의 드라이브 명과 시그니처 정보를 알 수 있다.

마지막으로 연결된 드라이브의 설정이 변경된 시간값만을 알 수 있다. 즉 드라이브별 정확한 갱신 시간은 알 수 없다.

 

MountedDevices

LastWrite time = Tue Oct 4 07:00:57 2011Z ß 마지막 연결된 드라이브의 값이 변경된 시간

 

\??\Volume{0269c5b3-9b4d-11e0-9d9b-806d6172696f}ß 볼륨의 고유 시그니처

    Drive Signature = b6 a4 b6 a4 ß 디바이스의 고유 시그니처

\DosDevices\C: ß 드라이브명

    Drive Signature = b6 a4 b6 a4

[내용] 현재 시스템에 디바이스로 연결된 드라이브를 알 수 있다

 

이동형 저장 장치 확인

이동형 저장 장치 사용유무는 레지스트리를 이용해서 확인 할 수 있다. 이 경로는 역분석중에서 침해사고 분석에 많이 이용된다. 사고 발생시 이 흔적을 찾았다면, 이동형 저장 장치등을 이용하여 파일등을 복사하여 갔다는 하나의 시나리오, 단서를 찾은 거이니 말이다.

확인 가능한 레지스트리 경로는 아래와 같다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR

 

[그림] 이동형 저장 장치의 사용 유무를 확인할 수 있다

 

레지스트리 기록방식은 USBSTOR키 하위에 디바이스 클래스 ID로 구분하고, 하위 S/N를 이용하여 정보를 생성한다.

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Generic&Prod_USB_Flash_Disk&Rev_7.76 ß 디바이스 클래스 ID

[내용] 사용한 USB 디바이스를 기준으로 분류된다

 

이를 Regripper를 이용하면 아래와 같은 정보를 얻을 수 있다.

단 이는 GUI도구로는 정보를 확인 할 수 없고, 아래와 같이 명령을 내려보자.

 

rip –p usbstor2.pl –r system

[내용] regripper CLI 명령을 이용하자

 

위 명령을 실행하면, 아래와 같이 알 수 있다.

 

Disk&Ven_Generic&Prod_USB_Flash_Disk&Rev_7.76 [Thu Oct 6 04:57:46 2011]

S/N: 6&2138bd0&0 [Thu Oct 6 04:57:46 2011]

FriendlyName : Generic USB Flash Disk USB Device

ParentIdPrefix: 7&3258c5b0&0

[내용] 접근 날짜를 알 수 있다

 

윈도우 비스타에서는 경로가 약간 변경되었다.

HKLM\Software\Microsoft\Windows Portable Devices\Devices

 

WPDBUSENUMROOT#UMB#2&37C186B&0&STORAGE#VOLUME#_??_USBSTOR#DISK&VEN_LG&PROD_XTICK&REV_1100#AA04012700046412&0#

USB저장장치이며, LG에서 제작하였고, 제품이름은 XTICK Ver 1100, 시리얼은 AA04012700046412&0으로 해석 할 수 있다. 볼륨은 FriendlyName이라는 하위 키값에 의해 지정된다.

[내용] 레지스트리 키로 길게 저장된다

 

이것을 Regripper로 확인해 보면 접근 날짜까지 확인 할 수 있다. 이는 포렌식 관점에서도 이동식 디스크를 이용하였다는 중요한 단서를 확보 할 수 있는 증거가 된다.

 

Device

: DISK&VEN_LG&PROD_XTICK&REV_1100

LastWrite :
Tue Oct 11 06:28:23 2011 (UTC) ß 2011년 10월 11일 오전 6시 28분 23초에 접근하였음을 알 수 있다.

SN : AA04012700046412&0

Drive : Removable Disk (F:)

[내용] Regripper의 System 레지스트리 추출 결과

 

네트워크정보(Network Information)

래지스트리 위치

물리장치: SYSTEM\Microsoft\Windows NT\CurrentVersion\NetworkCards

네트워크 설정: SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

네트워트 정보는 물리 장치의 정보와 실정 설정내용의 2개의 레지스트리를 확인하여야 한다.

 

//물리장치

ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}

Interface {530CC078-0CFD-453D-A1D2-29C53800A44F}

LastWrite time Tue Jun 21 00:01:14 2011 (UTC)

    Name = 로컬 영역 연결

    PnpInstanceID = PCI\VEN_1022&DEV_2000&SUBSYS_20001022&REV_40\3&267A616A&0&18

    MediaSubType = 1

 

//네트워크 설정 DHCP라는 구분이 있는 것은 DHCP를 통해 설정된 인터페이스정보이다.

Interface {530CC078-0CFD-453D-A1D2-29C53800A44F}

Name: 로컬 영역 연결

Control\Network key LastWrite time Tue Jun 21 00:01:14 2011 (UTC)

Services\Tcpip key LastWrite time Tue Oct 11 06:28:23 2011 (UTC)

    DhcpDomain =

    DhcpIPAddress = 10.0.2.15 ß 네트워크 IP

    DhcpSubnetMask = 255.255.255.0 ß 서브넷

    DhcpNameServer = 172.16.100.100 ß DNS

    DhcpServer = 10.0.2.2 ß 게이트웨이

…중략

//실제 인터페이스에 설정된 정보들로 아래 내용을 보면 앞서 DHCP를 통해 갱신되었음을 짐작할 수 있다.

Adapter: {530CC078-0CFD-453D-A1D2-29C53800A44F}

LastWrite Time: Tue Jun 21 00:00:09 2011 Z

EnableDHCP 1

IPAddress 0.0.0.0 ß 수동 IP입력시 이부분에 나타난다.

SubnetMask 0.0.0.0

DefaultGateway

DhcpIPAddress 10.0.2.15

DhcpSubnetMask 255.255.255.0

DhcpServer 10.0.2.2

Lease 86400

LeaseObtainedTime Tue Oct 11 06:28:20 2011 Z

T1 Tue Oct 11 18:28:20 2011 Z

T2 Wed Oct 12 03:28:20 2011 Z

LeaseTerminatesTime Wed Oct 12 06:28:20 2011 Z

DhcpDefaultGateway 10.0.2.2

DhcpSubnetMaskOpt 255.255.255.0

[내용] 네트워크 설정 정보를 확인할 수 있다

 

공유 정보(Share Information)

레지스트리 위치: SYSTEM\CurrentControlSet\Services\lanmanserver\Shares

네트워크 공유로 등록된 항목들을 확인 할 수 있다.

 

Forensic ß 공유 이름

Path=C:\Forensic ß 공유 경로

Remark= ß 설명

Type=0 ß 유형 0인경우 파일 공유를 의미한다. 프린터의 경우 1

[내용] 공유 정보 확인

 

이 정보를 변경하고자 한다면 시작메뉴의 실행을 눌러 “compmgmt.msc”실행하여 컴퓨터 관리 도구를 열고, 공유 폴더를 확장하면 현재 공유 리스트는 물론, 현재 연결 사용자 및 사용중인 파일들을 확인할 수 있다.

 

[그림] 윈도우에서 설정한 공유리스트와 현재 이용자를 확인 할 수 있다

 

이 외에도 원격 설정 상태와 1부에서 확인했던 LMHash 활성화 유무 등도 확인 할 수 있다.

 

Software

설치된 프로그램들과 일부 자동 실행되는 프로그램들에 대해 확인 할 수 있다.

 

AppInit_DLLs(글로벌 DLL 후킹)

레지스트리 위치: Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLL

1부에서 진행한 내용으로 이 경로에 Dll을 등록하면 실행되는 전체 프로그램에 해당 Dll을 후킹하게 된다.

 

Microsoft\Windows NT\CurrentVersion\Windows

LastWrite Time Sat Aug 6 05:46:31 2011 (UTC) ß 최종 변경된 시간

 

AppInit_DLLs -> xp32.dll ß xp32.dll이 글로벌 후킹 DLL로 등록되어 있다.

[내용] 글로벌 후킹이 등록된 시간을 알 수 있다

 

ShellExecuteHooks(인터넷 익스플로러 후킹)

레지스트리 위치: Software\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks

이 경로에 Dll을 등록하면 실행되는 인터넷 익스플로러에 해당 Dll을 후킹하게 된다.

 

{AEB6717E-7E19-11d0-97EE-00C04FD91972}

    Class => URL Exec 훅 ß 모듈 설명

    Module => shell32.dll ß 후킹 Dll

    LastWrite => Mon Jun 20 06:46:24 2011 ß 최종 변경 시간

[내용] 인터넷 익스플로러 전역 후킹용도로 이용된다

 

Uninstall(프로그램 제거 정보)

레지스트리 위치:

제어판 프로그램 추가/제거에 나오는 프로그램 제거 리스트로 이 정보를 통해서 프로그램의 설치 시간을 알 수 있다.

 

Thu Oct 6 06:12:55 2011 (UTC) ß 2011년 10월 6일 6시 12분 55초에 설치 되었음

    WinHex ß 프로그램 이름

[내용] 프로그램 설치시 언인스톨 리스트에 저장된다

 

Security

Security는 현재 시스템의 보안 설정 유무를 확인할 수 있다. 그 외 중요부분은 없으므로, 크게 확인할 내용은 없을 것 같다.

시스템 감사 설정을 활성화 하는 방법만 확인 해보자.

이 정보를 변경하고자 한다면 시작메뉴의 실행을 눌러 “gpedit.msc”실행하여 로컬 그룹 정책 편집기를 열고, 컴퓨터구성àWindows 설정à보안 설정à감사 정책를 선택하면 현재 컴퓨터에 사용중인 감사 설정을 확인할 수 있다.

 

[그림] 현재 5개의 정책이 활성화 되어 있다

 

이에 서버에 필요한 감사 설정을 진행하여야 하는데, 각 정책별 감사하는 내용은 다음과 같다.

보안 관점에서 계정에 대한 로그인 시도 여부를 이 감사 로그를 통해 알 수 있으며, 그와 관련된 중요한 감사 정책들만 확인하도록 하겠다.

 

개체 엑세스 감사: SACL(시스템 액세스 제어 목록, 1부 Access token에서 다루었다.)이 지정된 개체에 대해, 요청된 액세스 형식(쓰기, 읽기 또는 수정) 및 해당 요청을 하는 계정이 SACL의 설정과 일치하는 경우에 생성하는데, SACL에 접근을 요청이 실패/성공 하였을 경우 기록을 남긴다.

실패시 기록하는 것을 추천한다.

계정 관리: 계정혹은 그룹이 만들어지거나 수정을 요청할 때 실패/성공 여부에 따라 기록을 남긴다. 누군가 계정을 생성하려 했다면 여기에 기록이 남게 된다. 성공/실패 모두 기록하는 것을 추천한다.

계정 로그온 이벤트: 계정의 자격 증명을 확인할 때 실패/성공 여부에 따라 기록을 남긴다. 실패 시 기록하는 것을 추천한다.

로그온 이벤트: 가장 기본적으로 활성화 해야할 감사 설정이다. (시스템 성능을 고려하여 최소화 하여야 한다면, 이것만은 유지하자.) 사용자 로그인 혹은 로그오프를 시도할 때 실패/성공 여부에 따라 기록을 남긴다. 성공/실패 모두 기록하는 것을 추천한다.

 

모든 감사 설정은 성능에 영향을 미친다는 것을 염려에 두고 최소화 하여, 반드시 필요한 부분에 설정하기 바라며, 많은 테스트를 통해서, 각 기업에 맞는 감사 설정을 유지 할 수 있을 것이다.

 

고급 감사 정책

윈도우 비스타 이후 기존 감사 정책 보다 세밀한 보안 감사 설정을 제공한다.

이를 통해 기존 로그온 이벤트, 개체 엑세스 등 하나의 큰 범주로 지정할 수 있었던 부분에서 하위로 들어가 로그온, 로그오프, 파일 시스템 레지스트리등 세부적인 항목들에 본인에게 필요한 보안 설정을 지정할 수 있다.

이를 통해 어마어마한 불필요 감사 로그를 최소화 할 수 있다. (불필요한 로그가 많을 수 도 신뢰성이 떨어져, 명확한 분석이 어려워진다.)

 

[그림] 하위 범주를 통해 불필요 감사로그를 최소화 할 수 있다

 

보다 자세한 내용은 아래에서 확인 할 수 있다.

http://technet.microsoft.com/ko-KR/library/dd772712(WS.10).aspx

 

 

Sam

Sam 파일을 통해서는 계정과 그룹의 정보를 얻을 수 있다.

레지스트리를 통해 알수 있는 중요한 정보는 바로 계정의 생성 시기이다.

Sam 데이터베이트관련해서는 1부에서 진행하였으니 여기서는 간략하게 알아보자.

 

유저 계정 정보(User Information)

계정의 이름과 생성일자, 이외의 패스워드 변경일, 그리고 로그인 횟수를 확인할 수 있다.

 

그룹 계정 정보(Group Membership Information)

그룹 계정의 대한 마지막 수정일자와 맴버수 속한 계정의 SID등을 확인할 수 있다.

 

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.