Memory Forensic [ OS란 ? ]

2018. 5. 23. 19:08악성코드 분석


Memory Forensic

컴퓨터 하드웨어 중 주기억장치(메모리)에 존재하는 휘발성 데이터를 덤프분석

프로세스 정보, 네트워크 연결정보, 악성코드 파일정보 등등


* memory dump - 물리 메모리에 존재하는 모든 흔적을 확인할 수 있음



OS ? 

하드웨어의 조작을 위한 매개체

OS는 시스템 하드웨어를 관리하고 응용소프트웨어를 실행하기 위해 하드웨어 추상화 플랫폼과 공통시스템 서비스를 제공하는 시스템 소프트웨어이다



Kernel ?

운영체제의 핵심부분

운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공

하드웨어의 추상화


기능적인 요소

① 프로세스 관리

모든 스레드와 프로세스에 대한 정보는 메모리상의 데이터 구조체에 의해서 유지 및 관리


② 파일 접근

디바이스 드라이버에 의해서 각종 파일시스템이 구현 및 처리

파일시스템에 대한 일관적인 인터페이스 제공


③ 보안

프로세스 메모리 영역을 분리하고 권한 설정


④ 메모리 관리

메모리 주소는 동시에 여러 개의 물리 메모리 주소로 매핑

메모리 상의 일부 영역을 디스크로 paging시켜 메모리 공간처럼 사용



Windows Executive Object ( 윈도우 실행부 객체 )

객체의 구조 ( _POOL_HEADER + 선택적헤더 + 객체헤더 + 객체바디 )



Pool

메모리 할당할 때 너무 작은 메모리들을 할당하게 되면 페이징 낭비가 심해서 대신 '파일 핸들'이나 '객체'를 저장하는 공간


Pool Tag

할당을 실행하기 위해 취한 경로를 유일하게 식별하는 ACII문자로 구성된 4바이트 

MS에서 디버깅과 감사 목적으로 제작

'할당크기'와 '메모리 유형'은 오탐을 제거하는 데 주요역할을 한다



Callback Function ( 콜백함수 )

OS가 호출할 애플리케이션의 함수를 지정해 특정한 사건이나 메시지 발생 시 호출되도록 지정할 수 있다



_EPROCESS - Process Object

커널에 위치하며, 개별 프로세스를 나타내는 거대한 구조체로써, 프로세스의 식별정보나 프로세스에서 사용하는 메모리 정보 등 거의 모든 정보를 가진다

HandleTable, Threads, SID & Privileges, Loaded Moudle(exe,dll...), VAD(Virtual Address Descriptor)


* VAD - 가상 주소에 대한 정보를 가지며 어떤 가상 주소가 예약되어 있는지의 여부를 알 수 있게 관리하는 데이터 구조체 집합


KDBG 구조체 ( _KDEBUGGER_DATA64 )

KDBG안에는 PsActiveProcessHead가 존재한다

PsActiveProcessHead -> _EPROCESS - Flink & Blink -> _EPROCESS 2 -> _EPROCESS 3 ...



System Process

유저모드에서 동작하는 중요한 프로세스

사용자가 시스템을 사용하는데 필요한 핵심부분을 담당


주요 프로세스

Smss.exe ( Session Management SubSytem )

세션 관리

Csrss.exe

클라이언트와 서버간의 관계 관리

Winlogon.exe

윈도우 계정 관리

Lsass.exe

보안 관련

Services.exe

윈도우에서 프로그램 실행 관련



File System

보조 기억 장치에 데이터의 저장과 검색방법을 제어하는데 사용

체계적인 저장방식과 검색방식으로 데이터를 저장하고 검색을 최적화


NTFS ( New Technology File System )

모든 파일과 디렉터리, 메타파일은 metadata로 MFT에 저장한다


* metadata - 데이터 관리상 필요한 작성자 & 목적 & 저장장소 등의 속성에 관한 data


MFT ( Master File Table )

파일에 대한 metadata를 저장하는 공간

Header & Attribute ( 최근 접근시간, 파일이름, 내용 등등 ) 으로 구성



[ Window 구조 ]

< User Mode >

User Application

사용자가 사용하는 프로그램

SubSystem & NTDLL.dll

사용자와 커널과의 통신   


< Kernel Mode >

DeviceDriver & Kernel - HAL 

응용애플리케이션과 하드웨어와의 통신