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도 별도로 준비

 


 

참고사이트  [forensic proof]

http://forensic-proof.com/


 

 


 

 

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 : 덤프시 열려있던 윈도우 창 정보

 

 

 

 

+ Recent posts