2. 메모리 포렌식

 

□ 메모리 포렌식의 필요성

 ① 메모리에 직접 올라가는 악성 프로그램 등을 분석 가능

     인 메모리 라이브 인젝션

 ②프라이버시를 위하여 보호된 사용자 데이터들이 메모리에 올라갔을때는 암호화 해제

 

 

□ 활성데이터 수집(Live Data)과 메모리 포렌식의 차이점

활성데이터 수집(Live Data) 

메모리 포렌식 

 운영체제 API의 영향을 받음

메모리 자체를 가져오기 때문에 영향X 

 시행 시 마다 다른 결과가 나올 수 있음

분석 시 마다 동일한 결과 

 

전체 메모리 덤프를 통해 분석하지 않은 부분에 대하여 추가적인 분석이 가능

 

 

□ 메모리 덤프

- 하드웨어 방식 / 소프트웨어 방식

 

[하드웨어 방식] http://www.grandideastudio.com/tribble/

tribble : RAM 슬롯에 장착하여 메모리 덤프 수행

- 사전에 설치되어 있어야 함

- 설치가 되어있을경우 다른 영향 없이 덤프 추출 가능

 

IEEE1394(Firewire) : DMA가 가능 (Direct Memory Access)

                   USB는 운영체제를 통해서만 메모리 접근 가능

 

=> 이러한 이유로 소프트웨어 방식의 메모리 덤프 사용

     - 윈도우 API의 영향을 받을 수 있음

     - 덤프를 만드는 과정에서 시스템에 영향을 줌

 

 

□ 메모리 덤프 추출 도구

 

 ▷ 사용자가 임의로 추출한 덤프

- dumpit (http://www.downloadcrew.com/article/23854-dumpit)

  : cmd창 -> y -> 메모리 덤프

 

- memoryze (Mandiant사에서 만든 도구)

  : C:\Program Files (x86)\MANDIANT\Memoryze\memoryDD 관리자 권한으로 실행

 

- DD

 : 예전에는 사용가능했으나 현재 윈도우에서는 불가

 

- FTK Imager Lite (무료도구)

: 메모리모양 클릭 ->경로 설정 -> capture memory -> 끝

 

 

 ▷ 자동저장 덤프 (일반적으로 메모리 포렌식에서 사용하지 않음)

- 크래시 덤프 : 장애 발생 시 자동 저장

경로)사용자설정-고급설정-시작및복구-시스템오류-디버깅정보쓰기-커널/작은/전체 메모리 텀프

 커널 메모리 덤프

   크래시에 대한 최소 정보

 작은 메모리 덤프

   커널 메모리 부분만 저장

 전체 메모리 덤프

   물리 메모리 전체

 

- 절전모드 덤프 : 최대 절전모드에서 사용하는 덤프 c:\hiberfil.sys

  //끄기 powercfg -h off

 

- VMware 등 가상컴퓨터 시스템 - .vmem 파일

 


EPROCESS 구조체

 - 프로세스가 메모리에 존재할 때의 구조체

 - 환형 이중 링크드 리스트 형태

 

프로세스 스캔 방식

 - 리스트 워킹(List Walking)     : 링크를 따라 프로세스 검색

 - 패턴 매칭 (Pattern Matching): 실제 메모리 데이터 상 EPROCESS형태를 가진 프로세스 검색


 

□ 메모리 덤프 분석 도구

[volatility] (http://www.volatilityfoundation.org/25)

 

- volatility.exe -h : 사용법 조회 (플러그인 목록)

 

1) imageinfo :  vola.exe -f [메모리덤프파일이름] imageinfo

   메모리 덤프가 추출 된 시스템의 정보 확인  

   Suggested Profile에서 운영체제 종류 확인

   Service Pack이 여러개 검색 될 경우 아래부분의 Service Pack 항목 확인

   Win7SP1x64

2) pslist : vola.exe -f [덤프파일] --prorile=Win7SP1x64 pslist

   리스트워킹 방식으로 프로세스 검색

 

3) psscan : vola.exe -f [덤프파일] --prorile=Win7SP1x64 psscan

   패턴 매칭 방식으로 프로세스 검색

 

4) pstree : 프로세스 트리

 

5) psxview : 다양한 프로세스 검색 방식으로 비교

 

6) dlllist :

- 메모리 상에 존재하는 프로세스와 관련된 DLL리스트를 출력
--pid : 특정 PID와 관련된 DLL리스트를 출력
--offset [물리메모리주소] : psscan으로 검색된 프로세스의 DLL리스트 확인

 

7) dlldump : dlldump --dump-dir [덤프 대상 디렉토리] --pid [특정PID]

- DLL을 추출

추출 된 DLL은 virustotal

 

8) handle

- 프로세스가 접근중인 자원의 목록 확인(핸들)

 

9) getsids

- 보안식별자 확인

- 프로세스가 사용한 보안식별자 목록 환인

- 권한상승 등의 공격 확인 용도

 

10) mod시리즈

- modules, modscan, moddump

- 로드된 드라이버(*.sys)

- modules는 리스트 형태로 검색, modscna은 패턴매칭으로 검색

- moddump를 사용하여 덤프

 

11) thrdscan

- 스레드 정보 검색

 

12) 네트워크 관련 플러그인

- XP이전  : connections, conscan, sockets, sockscan

connections    연결정보를 리스트로 검색

conscan         연결정보를 스캔으로 검색

socket           열려있는 포트정보를 리스트로 검색

sockscan        열려있는 포트정보를 스캔으로 검색

- Vista 이후 : netscan

 

13) svcscan

- 서비스 관련

 

14) cmdscan

- cmd에서 입력했던 명령어

 

15) consoles

- 마지막 cmd창의 화면 상태 표시

 

16) procdump

- 특정 프로세스 덤프

--dump-dir [경로] --pid [PID]

 

 

□ 레지스트리 관련

17) hivescan : 메모리에서 레지스트리 목록 확인
18) hivelist : 레지스트리 주소와 파일 관계 매칭
19) printkey : 레지스트리에서 특정 값 출력
20) hivedump : 레지스트리 하이브 파일로 덤프
21) hashdump : 윈도우 SAM에 들어있는 계정 해쉬 추출

22) clipboard : 메모리 덤프시 클립보드 내용 출력
23) screenshot : 메모리 덤프시 대략적인 윈도우 배치
24) windows : 덤프시 열려있던 윈도우 창 정보


1. 휘발성 데이터 수집 (Live Data 수집)

 1) 수집대상

 2) 명령어

 3) 스크립트

 

2. 메모리 포렌식(메모리 덤프/분석)

 1) 메모리 덤프

 2) 분석(volatility)

 


 

1. 휘발성 데이터 수집

 


 

▷ Live Data 수집 시 참고자료

 

- RFC3227 , NIST SP800-86 : 포렌식 절차 / 대상 등을 정의

https://www.ietf.org/rfc/rfc3227.txt

http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-86.pdf

 

- NIST CFFT(Computer Forensic Tool Testing) : 포렌식 도구 검증

http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-86.pdf


 

 

□ 휘발성 데이터 수집대상

 

 시간정보(대한민국 UTC+9)

 네트워크 관련 정보

 프로세스 관련 정보

 사용자 관련 정보

 DLL 목록 사용여부 //(Dynamic Link Library)

 핸들 목록

 명령 히스토리 (제한있음,전부 다 볼 순X)

 서비스 목록

 예약 작업

 클립도드 내용

 네트워크 드라이브 정보 / 공유폴더

 netbios 정보

 프로세스. 메모리 덤프
 

=> 주로 사용 할 도구 

- Sysinternals Suite(https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx)

- 기본 윈도우 내장 명령어(cmd.exe, c:\window\system32)

 

 

 

□ 휘발성 데이터 명령어

 

▷ 시간정보

date : 날짜

time : 정보

옵션 /t : 정보 수정없이 현재 정보만 표시

> date /t & time /t



▷ 기본적인 시스템 정보수집 

[wmic](Windows Managemant Instrumentation Console)

: (wmic 실행 시 프롬프트 변경)

 

os : 대략적인 시스템 정보 전체 조회

os get [특정항복1], [특정항목2].. : 특정 항목만 조회

  installdate         : 설치날짜

  serialnumber       : 시리얼정보

  currenttimezone  : 현재 시간대 정보

  localdatetime     : 시간정보

  useraccount      : 사용자 계정 정보

 

[SysinternalsSuite] (폴더로 경로이동)

Sysinternal 도구 실행 시 뒤에 ' /accepteula '옵션 추가      //(end user license agree?)

  - 라이센스 동이 GUI 창 미표시

  - 자동 라이센스 동의(스크립트)

 

ㄴ시스템 정보 확인(sysinternals)

PsInfo : 기본 시스템 정보 수집

-d : 디스크 정보

-s : 설치 된 프로그램 정보 (안나오는것도 있음)

-h : 핫픽스 정보

 

ㄴ로그인 된 사용자 정보 (Sysinternals도구)

: 원격 데스크톱 연결 등을 통해 접속한 사용자 목록 확인

ntsuers : sysintemtool 사이트에서 다운로드

http://www.systemtools.com/cgi-bin/download.pl?NetUsers (현재X)

 

ㄴ세션 정보 확인(sysinternals)

logonsessions

=> 사용자 로그인 세션 외의 기타 서비스 관련 세션 등의 정보 확인 가능

-p : 각 세션이 실행하는 프로세스 목록 확인

 

[열려있는 파일 목록 조회]

 net file

 openfiles

 psfile 

 

[cmd에서 실행헀던 명령어 조회](해당 cmd창에서만 유효)

 doskey /history

 

[프로세스 목록 조회]

 tasklist : 내장 명령어

       /v : 상세 정보 표시

    /svc : 프로세스가 관련된 서비스 정보 조회

 pslist(sysinternals)

-t : 프로세스 트리표시

-x : 스레드 등 상세 정보 표시


[DLL확인]

 listdll.exe (sysinternals)

 

[핸들 확인]

 handle.exe (sysinternals)

 

[서비스 목록 조회]

 psservice.exe (sysinternals)

 

 ▷ 네트워크 관련 정보

[네트워크 정보 수집]

 netstat: 네트워크에서 열려있는 포트 정보 등 조회

-a : 전체 네트워크 정보 (TCP이외의 연결)

-n : 이름 서비스 조회 중지

-o : 관련 프로세스 정보

-b : 프로세스 이름 정보 표시

 

 fport : 포트 정보 확인 (xp까지는 됐으나 현재 X)

 

 tcpvcon(sysinternals) : 네트워크 포트 정보 확인

-a : 전체 포트 정보

-n : 이름 표시 X

-c : csv형태로 표시 (분석 용이)

 


[네트워크 인터페이스 정보]

 ipconfig /all : NIC 상세 정보 출력

 getmac       : MAC Address 표시

 

[라우팅 테이블]

 netstat -r , route print : 실행 결과 동일

 

[arp 캐시 확인]

 arp -a : 현재 시스템의 arp 캐시 확인

 

[dns캐시]

 ipconfig /dispalydns : 현재 시스템 DNS 캐시확인

 

[네트워크 드라이브 확인]

 net use  : 네트워크 드라이브 연결 / 목록 확인

 

[Netbios 이름확인]

nbtstat -c : netbios 이름 / 캐시 출력

 

 

▷예약작업

 at           : 일회용 예약 작업 목록    ex)at 13:00 cmd.exe

 schtasks   : 작업스케줄러에 등록된 예약 작업 목록

  

 

□ 스크립트(배치파일 batch)

- .bat

test.bat

reuslt.txt

 

휘발성 데이터 수집 스크립트 작성 시 유의사항

① 스크립트 실행결과는 파일로 저장

② 스크립트 실행 시 중단되지 않도록 비 대화형 명령 수행

③ 스크립트 실행에 사용되는 파일은 전부 별도로 준비

   (윈도우 내장명령어, 기타 sysinternals 도구 등)

④ cmd.exe도 별도로 준비

 


 

 http://ss-spring.tistory.com/17


수사의 초기 단계부터 법적인 문제를 고려하여 계획이 수립되고 법정에서의 증거 능력을 최대한 살리는 방향으로 증거들을 수집, 분석한다.


<인터넷 침해 사고 조사>

해커 또는 악성 프로그램이 어떻게 내부로 침입했고, 침입 후에는 어떤 활동을 했는가를 주요 조사 대상으로 한다. 

메모리 덤프나, 프로세스 덤프, 네트워크 연결 정보, 열려있는 포트 정보 같은 휘발성 정보와 각종 보안 로그들이 사고 조사에서 가장 큰 역할

'라이브 리스폰스(Live Response)', 임의적인 수정안됨 해시 값을 만들어 복사복과 보관하고 로그 파일의 메타데이터도 별도로 기록하는 것이 중요


<사용자의 부정이나 범죄 행위에 대해 조사할 때>

네트워크 트래픽이나 프로세스, 포트 정보처럼 휘발성이고 동적인 정보보다는

파일 시스템이나 애플리케이션 아트팩트처럼 비 휘발성이고, 정적인 정보들이 주요 분석 대상이 되며,

데이터 복구와 파일 카빙, 시그니처 분석 암호 해독 같은 기술이 주로 사용된다. 


<사용자의 활동 기록을 분석할 때>

외부기기의 연결 유무, 접근한 파일 목록, 파일 복사/이동, 사용한 애플리케이션 목록, 그리고 타임라인이 주요 분석 대상이다. 

디스크 와이핑을 통한 안티포렌식이 조사하는데 있어 가장 큰 골칫거리가 된다.


<컴퓨터가 범죄의 도구로 사용 되었을 때>

이메일 포렌식, 웹사이트 접속 기록, 컴퓨터 부팅 시간, 사용자가 사용한 애플리케이션, 사용자 ID, 삭제한 파일, 

시그니처 분석과 타임라인 분석.


<데이터 복구와 카빙>

물이 들어갔다던가, 로직 보드가 망가졌다거나, 기계적인 결함이 발생할 경우(물리적 복구, 노하우와 기술 필요)

파일시스템의 구조나 서로 다른 파일들이 가지고 있는 독특한 내부 구조를 바탕으로 삭제되었거나 일반적인 소프트웨어 인터페이스로 읽을 수 없는 데이터를 복구하는 것(소프트웨어적 복구, 사용하는 도구의 능력에 크게 의존)

*카빙이란: 파일 시스템의 메타데이터를 기반으로 복구하는 것이 아닌 파일 시스템의 도움 없이 파일들이 가지고 있는 고유한 정보(시그니처 정보, 파일의 논리적 구조, 저장되는 데이터의 형식)에 의존하여 삭제된 파일의 전부 혹은 그 일부를 복구하는 것을 의미한다. 


포렌식 전문가가 갖추어야 하는 기본적인 소양

> 디지털 증거 분석을 위한 전문 지식과 기술

> 증거 획득과 보존, 그리고 제출에 관한 법률적인 지식

> 보고서 작성 능력


OS와 파일 시스템에 대한 이해, 해킹 기법과 그에 대한 대응 기법의 이해, 암호에 대한 일반적인 지식, 네트워크 프로토콜에 대한 이해, 보안 로그를 분석할 수 있는 능력, 애플리케이션 아티팩트와 파일 구조에 대한 이해, 실행 파일 분석, 리버스 엔지니어링

+ Recent posts