'inforensics'에 해당되는 글 2건

  1. 2012.08.22 [InForensics] 메모리 분석 - 3 1
  2. 2012.08.09 [InForensics] 메모리 분석 - 1

크래시 덤프


시스템을 유지에 치명적인 영향을 주는 문제가 발생하였을 때 문제의 원인을 찾기 위해서 윈도우 스스로가 만드는 메모리 덤프를 말한다.




흔하게는 일명 BSoD(Blue Screen of Death)가 발생하였을 때 생성되는 크래시 덤프가 있다. BSoD가 발생하였을 때 생성되는 크래시 덤프는 시스템과 RAM의 내용이 정지된 상태로 쓰여 지기 때문에 순수하고 정확한 메모리 덤프라고 할 수 있다.




이러한 메모리 덤프 방법은 매우 유용할 수도 있다. 하지만, 몇 가지의 걸림돌이 존재한다.




우선, 기본적으로 사용자가 임의로 크래시 덤프를 생성할 수 없게 설정되어 있기 때문에 기본적인 환경으론 상당히 까다롭다


(어디까지나 Default 이므로 설정을 변경하면 되지만, 변경하면 재부팅을 해야 적용이 되기 때문에 결국 메모리 덤프로써의 의미가 없다).




두 번째로,  조사 대상의 시스템에 대한 영향을 최소화 하지 않기 때문에 크래시 덤프 파일을 저장함으로써, 대상 하드 드라이브의 잠재된 증거들을 덮어 써 버릴 가능성이 크다. 






크래시 덤프의 종류





크래시 덤프 환경 설정은 시스템>고급>시작 및 복구>설정 탭을 통해 접근할 수 있으며, 


환경 설정을 통해 어떤 덤프를 쓸 것인지, 또 어떤 경로에 저장할 것인지 등의 설정을 할 수 있다.




Small Memory Dump


시스템 크래시가 발생한 원인을 밝히기 위한 최소한의 메모리 정보만을 기록한다.



Kernel Memory Dump


비 할당 영역(Unallocated Memory Space)과 유저 모드로 동작중인 프로그램 메모리 영역을 제외한 커널 모드와 HAL 메모리 영역만을 덤프한다. 


메모리 포렌식 영역에 있어선 그다지 도움이 되지 않는다.



Full Memory Dump


RAM 전체를 그대로 덤프한다. 메모리 포렌식에 있어서 유용하다.



Menually Crash Dump


키보드를 이용한 메모리 덤프가 가능하다.


PS/2의 경우HKLM\System\\CurrentControlSet\Services\i8042prt\Parameters

USB의 경우 HKLM\System\\CurrentControlSet\Services\kbdhid\Parameters


위 경로에 아래와 같이 값을 설정하면 된다.



메뉴얼 덤프는 레지스트리를 등록 후, 재부팅하고 난 이후로 Ctrl키를 꾹 누르고 ScrollLock 키를 두 번 누르면 크래시 덤프를 만들 수 있다.




하이버네이션 파일


Hibernation 기능이란, 전력 관리를 보다 효율적으로 하기 위해 절전 상태에 돌입하게 되면, 하드 드라이브에 메모리 데이터를 기록한 다음 전력을 차단해버는 기능을 말한다.



하지만 이는, 기존 전력 관리 방식(RAM에 대한 지속적인 전력 공급)에 비해 Wakeup 시 복구 시간이 비교적 오래 걸린다. 


하지만, 전력 공급 면에선 괜찮은 기능이니 랩탑에겐 필수적인 기능이라 생각한다.



Windows 7의 경우 커맨드 프롬프트를 통해 Hibernation 설정을 할 수 있다.


powercfg -hibernate on/off 또는 powercfg -h on/off 명령으로 Hibernation 기능을 켜고, 끌 수 있다.



하이버네이션으로 인한 메모리 덤프 파일은 Full Mem Dmp가 아니며, 절전된 즉시 만들어 지기 때문에 복구가 되고 나면 그 상황 당시의 메모리 덤프가 아닌 이전의 메모리 덤프 파일이기 때문에 상황에 따라 쓸모가 없어질 수가 있다. 또한, 메인보드의 칩셋과 OS에 따라 지원 여부가 달라진다.





프로세스와 커널 오브젝트


커널 오브젝트는 메모리 분석의 핵심이다. 이는 간단히 말해, 윈도우가 사용 가능한 모든 리소스를 종류 별로 나눠서, 그 구조를 일반화 시킨 것이 커널 오브젝트라고 한다.


커널 오브젝트는 히든 프로세스나 네트워크 세션로 예를 들 수 있으며, 버전 마다 동일한 구조 규칙을 띄고 있어서 숨겨진 오브젝트 또한 찾아내기 쉽다.






프로그램, 프로세스, 스레드





프로그램은 파일들로 이루어진 수동적인 존재지만, 메모리에 올라가는 프로세스는 능동적인 존재이다. 


또한, 프로그램을 이루는 파일들은 이름, 경로, MAC Timestamp, MFT Entry 등의 파일 메타 데이터를 지니고 있고, 프로세스들은 PID, Handles, Access Token 등과 같은 프로세스 메타 데이터를 지니고 있는 특징이 있다.


스레드는 프로세스에 속해있는 또 다른 커널 오브젝트이다. 모든 프로세스는 최소 한 개 이상의 스레드로 구성이 되어 있으며, 윈도우가 CPU에 일을 할당시킬 때 기준으로 삼는 최소 처리 단위이다. 이 최소 처리 단위와 연관이 있는 것이 바로 CPU Scheduling이다. 이에 대해선 검색을 해보길 바란다.




커널 오브젝트

윈도우 커널이 사용, 관리하는 자원들 중에서 명령 또는 함수로 조작이 가능하고, 일정한 구조를 띄고 있으며, 타입으로 분류가 가능한 것들을 뜻한다.




윈도우는 위 그림과 같이 많은 오브젝트들을 관리하기 위해 Object Manager를 사용하는데, 이의 역할을 세 가지 정도 들어보자면 다음과 같다.


1. 시스템 자원 사용에 대한 일관되고, 공통적인 수단을 제공한다.

2. 프로세스가 사용하는 오브젝트를 측정하여, 시스템 자원 사용에 제약을 둔다.

3. 오브젝트들을 쉽게 관리, 사용하기 위해서 오브젝트 명명 규칙을 확립시킨다.


모든 오브젝트는 타입 오브젝트라는 어떤 특정 오브젝트에 대한 포인터 값을 가지고 있으며 이에 따라 오브젝트의 타입이 결정된다.


'공부 > Forensics' 카테고리의 다른 글

PE Structure  (0) 2013.04.24
[InForensics] 메모리 분석 - 4  (0) 2012.08.22
[InForensics] 메모리 분석 - 2  (2) 2012.08.12
[InForensics] 메모리 분석 - 1  (0) 2012.08.09
[Metasploit]Meterpreter API Cheat Sheet  (0) 2012.07.26
Posted by extr
:

메모리 분석이란?


메모리에는 복호화된 파일 컨텐츠, 사용자 패스워드 등과 같이 메모리에서만 찾을 수 있는 특유의 정보가 있다.

메모리 포렌식이 오늘날 갑자기 각광 받는 이유를 크게 세 가지 정도 알아보자.




1. 직접 메모리에 로드되어 실행되는 악성코드가 있다.


인 메모리 라이브러리 인젝션이란, 하드 드라이브에 악성 실행 코드를 복사하지 않고, 바로 메모리에 로드하는 기법으로 기술이 예전에 비하여 상당히 고도화된 코드 실행 기법이다. 하지만 악성 코드가 실행되기 위해서는 반드시 평문의 실행 코드가 메모리에 로드되어야 하므로, 결국 이 같은 기법 또한 흔적을 남긴다는 것을 알 수 있다.



2. 애플리케이션의 사용자 프라이버시 보호 기능이 강화되고 있다.


사용자 프라이버시 보호는 디지털 포렌식에 있어서 매우 중요한 문제이다. 특히 소프트웨어 회사들은 사용자 프라이버시 보호를 위해 많은 노력을 기울일 필요가 있다.



3. 안티포렌식 기술의 확산.


이전의 안티 포렌식 도구들은 Slack 영역, MBR 영역, 비 할당 영역, DCO/HPA 영역 등에 컨텐츠를 은닉하거나, 컨텐츠를 삭제하기 위해 무작위의 데이터를 덮어 쓰는 방식 등을 이용했었다. 이 기술들은 최근에도 이용이 되고 있으며, 더욱 발전된 기법들로 포렌식 기술에 대한 대항력을 발전시켜나가고 있다.




이러한 이유로 메모리 분석은 디지털 포렌식 분야에 있어서 빼 놓을 수 없는 분석 단계라 여겨진다. 하지만, 중요한 만큼 분야가 이해하기 상당히 난해하기 때문에 예전부터 사람들이 쉽게 접하지 않는 영역으로 남아있다. 



1. 메모리 분석은 최근부터 관심을 받기 시작했다.


2. 커널 오브젝트 구조와 프로세스 관리, 메모리 관리 기법 등의 지식이 요구된다.


3. 메모리 구조 자체가 매우 난해하며, 여러 환경에 따라 변한다.



라이브 리스폰스와 메모리 분석



라이브 리스폰스와 메모리 분석은 다음과 같은 특징이 존재한다. 





표를 보았을 때 덤프 파일을 대상으로 하는 메모리 분석이 실 상황에서 하는 라이브 리스폰스에 비해 신뢰성과 만족스러운 결과를 보장해주는 것을 알 수 있다.


하지만, 아직 메모리 포렌식은 기법이나 도구들이 많이 발전되지 않은 상태라 우리가 원하는 수준에 미치지 못하고 있다. 하지만, 앞으로의 발전을 통해 메모리 포렌식이 많은 도움을 줄 것이라 기대해 볼 수 있다.




'공부 > Forensics' 카테고리의 다른 글

[InForensics] 메모리 분석 - 3  (1) 2012.08.22
[InForensics] 메모리 분석 - 2  (2) 2012.08.12
[Metasploit]Meterpreter API Cheat Sheet  (0) 2012.07.26
[Forensics]Live Response  (1) 2012.07.25
[Metasploit] Msfpayload  (0) 2012.07.21
Posted by extr
: