본문 바로가기

[+] Forensic

Registry (9)

계속해서 포렌식적으로 의미있는 레지스트리들을 살펴보겠다.

[서비스 및 드라이버 목록]
이 정보는 라이브 리스폰스 단계에서 수집되는 정보이며, 레지스트리에서도 수집 할 수 있는 정보이다.
아래 키로 가면 서비스와 드라이버 목록들이 서브키로 나열되어 있다.
드라이버 목록과 서비스를 구별하는 방법은 각 서브키의 Value 중 type이란 Value의 값을 보면 판단 할 수 있다.

키 : HKLM\System\CurrentControlSet\Service

 [그림 1 - 레지스트리에서의 서비스 및 드라이버 목록]

Start Value 값에 따라 자동 시작되는 서비스가 될 수도 있고 안될 수도 있다.

* 타입별 자세한 설명은 http://support.microsoft.com/kb/103000 참조하기 바란다. 


[로그온 자동 시작점]
윈도우는 사용자가 로그온을 하면 HKCU 레지스트리 해당 사용자의 하이브 파일을 읽고 그 안에 있는 자동시작 항목등을 차례대로 실행한다. 사용자별 자동시작 프로그램 목록은 서로 다르며, 그 이유는 아래처럼 여러가지의 키가 존재하기 때문이다.

키 : HKLM\Software\Microsoft\Windows\CurrentVersion\Run
키 : HKLM\Software\Microsoft\Windows\CurrentVersion\Runonce

이 두 키의 경우 로그온한 사용자 상관없이 프로그램이 실행되게끔 하는 키이다.

키 : HKCU\Software\Microsoft\Windows\CurrentVersion\Run
키 : HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce

이 두 키의 경우 해당 사용자가 로그온 했을 때만 실행되게끔 하는 키이다.

그리고 Run, Runonce 서브키로 나뉘는 것을 볼 수 있는데 Run 키의 경우 시스템이 부팅될 때마다 실행시키는 키 이고,
Runonce는 한번만 실행되게끔 하는 키이다.

그리고 RunonceEx 라는 키가 HKLM과 HKCU에 또 존재한다. 이 키는 Runonce와 같은 성격의 키 이지만, 프로그램을 처리하는 방식이 다르다. Runonce의 경우 프로그램의 연관성을 무시하고 실행시키지만, RunonceEx의 경우 연관성 있는 프로그램끼리 그룹으로 묶어 처리하고, 처리 과정을 GUI 방식으로 사용자에게 보여 줄 수 있다.


[감사 정책]
다른 OS와 마찬가지로 윈도우도 시스템 내부에서 일어나는 여러 이벤트에 대한 보안 로그를 남긴다. 
보안 로그 기록의 기준이 감사 정책인데 관리자 도구를 이용해서도 알 수 있지만, 레지스트리에서도 알 수 있다.

키 : HKLM\Security\Policy\PolAdtEv
Value : (기본값)


Windows 버전마다 레지스트리에서의 감사정책별 offset이 다르다. 아래는 XP의 감사정책 별 오프셋 목록표 이다.

[그림 2 - 감사 정책별 offset(출처 : Forensic-Proof(FP-15-레지스트리-포렌식-분석.pdf))]

아래는 Win Vista/7의 감사 정책 별 offset이다.

[그림 3 - 감사 정책별 offset(출처 :  Forensic-Proof(FP-15-레지스트리-포렌식-분석.pdf)]


모든 버전의 윈도우들은 위 오프셋중에서 0을 제외한 나머지 오프셋의 값들은 아래와 같은 의미를 지닌다.

 - 0x00 : 감사 정책 없음
 - 0x01 : 성공 이벤트 감사
 - 0x02 : 실패 이벤트 감사
 - 0x03 : 성공, 실패 이벤트 감사 

감사별 자세한 항목은 아래 문서를 참조하면 된다.
 


[무선 네트워크 정보]
만약 공격자의 컴퓨터를 조사한다고 하였을 때 대부분의 용의자는 공개 AP등을 이용하여 자신의 위치정보를 속여 공격을 하려고 할 것이다. 이러한 이유를 근거로 공격자는 범죄 행위를 부인 할 것이며, 조사관은 공격자가 어느 장소에서 접속했다는 증거를 공격자에게 제시하여 공격자의 주장을 무효화 시킬 수 있다.. 이러한 경우 공격자의 컴퓨터에서 용의자가 접속한 AP 정보를 찾아야 하며 윈도우의 경우 레지스트리에 그 정보가 있다.
해당 정보는 아래의 키에 있다.

키(XP) : HKLM\Software\Microsoft\WZCSVC\Parameters\Interface\{GUID}
Value : Static#000X

키(Vista/7) : HKLM\Software\Micrsoft\Windows NT\NetworkList\Nla<Wireless, Signature, Profile>


XP의 경우 해당 Value의 데이터만 보면 SSID 문자열을 찾을 수 있다.
하지만 Vista/7의 경우 Profile과 GUID(Globally Unique Identification Number)등이 나눠져 있어 한번에 SSID를 찾기가 쉽지 않다. 아래에는 Vista/7에서 네트워크 정보에 관한 서브키들의 연관성을 보여주는 이미지이다.

 

[그림 4 - 각 서브키의 연관성]

해당 순서는 서브키의 값을 따라 이동한 순서로 아래에 이미지를 참고하면 이해가 갈 것이다.

[그림 5 - 서브키의 연관성 1번]

Wireless 서브키의 하위키의 이름이 무선 네트워크 식별자이며 Unmanaged와의 연관성으로 여러 정보를 확인 할 수 있다.
Unmanaged 하위키에서 찾고자 하는 무선 네트워크 식별자를 찾은 뒤 Value와 data를 확인 해 보면 아래와 같다.

[그림 6 - Unmanaged 키의 하위키 내용]

ProfileGuid의 data 값을 Profile 서브키에서 찾아 data를 보면 접속한 AP에 대한 정보가 나온다.
이 순서가 2번 순서이다.

[그림 7 - 무선 AP의 정보]

 

Value를 보면 AP의 이름과 마지막 접속 시간등이 나와 있다.

마지막 접속시간의 경우 hex값을 우리가 알아 볼 수 있는 시간으로 바꾸려면 아래와 같은 과정을 거쳐야 한다.

1. 기존의 값을 2바이트씩 끊어 Little Endian 방식을 적용하여 변경한 뒤 10진수로 바꿔준다.

[그림 8 - 10진수로 변환하는 python 코드]


2. 변환한 값을 각 자리가 뜻하는 것으로 맞추면 된다.

[그림 9 - 각 자리가 뜻하는 의미]

어디에 접속했는지 알았다면 이제는 접속했을 때의 정보를 알아야 한다. IP가 대표적이다.

각 네트워크 카드를 확인하여 해당 네트워크 카드에 할당된 네트워크 정보를 보면 된다.

키 : HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkCards

 

[그림 10 - 네트워크 카드 GUID]

위 빨간색 박스안에 있는 문자열이 네트워크 카드 GUID이다. 해당 GUID를 아래 키에서 찾으면 된다.

키 : HKLM\System\CurrentControlSet\Service\Tcpip\Parameters\Interface\<GUID>

[그림 11 - 네트워크 카드에 할당 된 네트워크 정보]

Value 중에 DhcpIPAddress가 있는데 이것이 해당 네트워크카드에 dhcp가 할당해준 IP 주소이다.
이 Value 말고 IPAddress가 있을수도 있는데 이 Value는 사용자가 직접 수동으로 설정해준 IP주소를 뜻한다.

하지만 여기서 끝이 아니다. 위 처럼 사설아이피라면 모든 공유기와 연결지어도 말이 되기 때문에 증거로서 효력이 없다.
정확하게 특정한 AP와 아이피를 연결시켜야한다. 이는 DhcpNetworkHint에 나와있다.
DhcpNetworkHint Value의 data를 2자리씩 끊어 리틀엔디안으로 변환하면 다음과 같다.

 

[그림 12 - DhcpNetworkHint Value Little Endian]

이렇게 변환한 값을 가지는 Wireless의 서브키를 찾으면 된다.

 [그림 13 - DhcpNetworkHint Value Little Endian 값을 갖는 Wireless 서브키]

이런 후에 위에 AP찾는 방법을 이용하여 찾으면 모든 네트워크 정보가 연결 된다.

'[+] Forensic' 카테고리의 다른 글

Registry (11)  (0) 2012.01.07
Registry (10)  (0) 2012.01.07
Registry (9)  (0) 2012.01.06
Registry (8)  (2) 2012.01.06
Registry (7)  (0) 2012.01.04