SWLUG/forensic

[디지털포렌식] 2. 침해사고 대응기법

keemnh 2024. 4. 26. 23:35
 

[지금 무료] 기초부터 따라하는 디지털포렌식 | 훈지손 - 인프런

훈지손 | 기초부터 따라하는 디지털포렌식 강의입니다. 강의를 따라하다보면 "물 흐르듯, 자연스럽게" 실력이 늘어가는 강의를 추구합니다., 초보자 눈높이에 딱 맞춘, 원리를 이해하는 디지털

www.inflearn.com

해당 영상 참고하여 작성한 글입니다.

 

 

 

1. 도구 설치, 환경 설정, 문제 다운로드

 

 

(1) Volatility 설치 (볼라틸리티)

  • 메모리 관련 데이터를 수집하는 도구
 

volatility_2.6_win64_standalone.zip

 

drive.google.com

 

 

(2) 시스템 환경 변수 설정

  • 어떤 경로에서도 접근 가능하도록 설정하는 것즉, 터미널에서 Volatility 를 치면 바로 접근 가능하도록 설정한 것
  • [ Window+s → 시스템 환경변수 → 환경변수 클릭 → (시스템변수) Path → 편집 → 찾아보기→ Volatility 폴더 선택 → 확인*3 ]
  • 시스템 환경 변수란?
    • 내가 어느 경로에 있든 터미널에서 바로 접근 가능하도록 하는 것

 

(3) Windows Terminal 설치 (사용자의 윈도우 버전에 따라 설치 여부 다름)

 

 

(4) 문제 다운로드

  • Cridex
 

cridex.vmem

 

drive.google.com

  • GrrCON 2015
 

Target1-1dd8701f.zip

 

drive.google.com

 

 

[참고]

  • 터미널 사용방법
 

Windows Terminal 사용법

Windows Terminal이 새롭게(?) 나왔다.Linux나 MacOS에 비해 Windows는 터미널이 구리다는 점이 항상 아쉬웠는데 참 좋은 소식이다.그럼에도 Linux 터미널에 익숙해진 나에게 Windows Terminal은 2% 부족한 느낌이

velog.io

 

 

 

2. Volatility Cridex 풀이

 

 

[1] cmd로 경로 설정 (Power Shell 에서 진행할 것 !!!)

 

cd .\volatility_2.6_win64_standalone -f .\cridex.vmem imageinfo

 

  •  imageinfo란?
    • volatility 프레임워크를 이용하여 분석할 메모리 파일의 운영체제 profile 정보를 확인
  • Suggested Profiles 중 하나 Ctrl + c (WinXPSP2x86, WinXPSP3x86)

 

 

 

[2] 프로세스들의 리스트 출력 ( notepad++에서 파일 확인)

 

  • 현재 실행중인 시스템 프로세스들의 정보를 보여주기 위해 사용한다. 오프셋, 프로세스 이름, PID(프로세스 ID), PPID(부모 프로세스ID), 스레드 및 핸들개수, 프로세스의 시작과 종료 시간 등을 알 수 있다.

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 pslist
  • 시간 순으로 출력

 

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 pslist > pslist.log
  • 생성되는 모든 파일이 pslist라는 파일로 출력 리다이렉션

 

 

 

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 psscan > psscan.log
  • offset 순대로 (메모리 덤프 파일에 어떤 위치에 준비하는지)
  • 숨김 파일(프로세스) 확인 가능

 

 

 

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 pstree > pstree.log
  • PID, PPID를 기반으로 구조화
  • PID, PPID만을 보고도 수상한 파일을 감지할 수 있음

 

 

 

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 psxview > psxview.log
  • 총 7가지 도구를 결합한 것
  • pslist, psscan을 한 눈에 볼 수 있다

 

 

 

 

[3] 의심스러운 프로세스들의 목록 만들기

  • 서비스 하나하나 검색해보면서 안전한 프로그램인지 확인하기
    • [svchost.exe] 로 악성코드들이 변조를 많이 함
      • 윈도우의 백그라운드 서비스를 처리하기 위한 것
    • pdf 문서를 통한 악성코드가 많음 주의!

 

 

 

 [4] 시간 순으로 확인

  • 의심되는 파일이 실행된 이후에 실행된 것들도 주의!!

 

 

 

[5] cmd line 정보 확인

 

  • 의심스러웠던 파일들 다시 확인
volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 cmdscan > cmdscan.log

 

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 consoles > consoles.log

 

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 cmdline > cmdline.log
  • 프로세스가 실행될 때 인자값 확인

 

 

 

 

 

[6] 파일 스캔

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 filescan > filescan.log

  • 메모리 내에 존재하는 모든 파일에 대한 정보 확인
  • Ctrl + 5로 열기 → Ctrl + F → <파일명> 검색 → 현재 문서에서 모두 찾기 → offset 값 복사 (e.g., 0x0000000001fe4028)
  • mkdir files (파일 생성)

 

 

 

 

[7] 덤프 파일로 추출

 volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 dumpfiles -Q <복사한 offset > -D .\ <생성한 파일명> \ -n

files라는 폴더 아래에 두 개의 파일이 생성됨 (exe)

  • virustotal 검색 → 해당 파일을 드랍 → 결과 확인

 

 

 

 

 

 

[8] 네트워크 정보 확인

 

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 connections > connections.log

  • connections란?
    • 연결된 TCP 출력
  • local address : 분석하고자 하는 디바이스의 로컬 주소
  • remote address : 원격지 주소

 

mkdir dumps → volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 memdump -p <의심스러운 PID> -D .\\dumps
  • 메모리 덤프 중 프로세스의 메모리 덤프를 하는 것
  • 해당 파일을 확인하면 쓰레기 값이 많아서 그걸 우선 제거해야 함 (HxD 사용)

 

 

 

strings .\\dump\\<PID>.dmp > strings_<PID>.log
  • (strings는 Sysinternals Suite를 환경 변수로 설정하면 생김)
  • Ctrl + o → strings_<PID> 파일 선택 → Remote Address에서 port주소 제외한 IP주소 Ctrl + c
  • Ctrl + F → IP 주소 Ctrl + v → 현재 문서에서 찾기

 

= reader_sl.exe가 악성 PDF문서를 읽고 → 취약점으로 인해 URL 접속 → 은행 관련 피싱 (으로 추측하심…)

 

  • volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 socket > socket.log

 

 

 

 

[9] 악성코드 발견 !! 

 

 

volatility_2.6_win64_standalone -f .\cridex.vmem —profile= WinXPSP2x86 procdump - p 1640 -D .\dumps\

 

  • 프로세스 리스트에서 아까 복사한 PID를 프로세스 내부에서 직접 뽑아낸 방법 = 즉, 실제로 실행된 exe

 

  • 윈도우즈 보안 끄는 법
    • windows+R → ‘윈도우즈 보안’ 검색 → 바이러스 위협 및 방지 → 설정 관리 → 실시간 보호 OFF
  • virustotal 검색 → 해당 파일을 드랍 → 결과 확인 (윈도우즈 보안 해제해야 제대로 파일 생성됨. 0바이트이면 안 됨)

(윈도우즈 보안 해제해야 제대로 파일 생성됨. 0바이트이면 안 됨)

 

 

 

[정리]

  • imageinfo : 메모리의 운영체제를 식별
  • pslist : 시간 순서대로 출력
  • psscan : 숨김 프로세스를 볼 수 있음
  • pstree : PID, PPID 기반으로 구조화해서 보여줌
  • psxview : pslist, psscan을 한눈에 볼 수 있음, 숨김 프로세스 찾는 데에 사용
  • cmdline : 프로세스가 실행될 때 인자값
  • filescan : 메모리 내에 존재하는 모든 파일에 대한 정보
  • dumpfiles : 프로세스의 메모리 덤프 추출 -> strings로 변환해서 키워드 검색
  • procdump : 프로세스의 exe 파일 추출