섹션3
침해사고 대응기법 -> 메모리 포렌식
메모리 : 프로그램이 올라갈 수 있는 공간
사전 준비
도구 설치 :
Volatility - 메모리 관련 데이터를 수집해주는 도구이다.
Windows Terminal - Windows11은 기본으로 깔려있으나 Windows7, 10의 경우에는 따로 설치해야 한다. Microsoft Store에 들어가서 Windows Terminal을 검색해 설치할 수 있다.
https://drive.google.com/file/d/13KhjlrVkPLUlkEytp8jzWD1eaAhl6-q_/view?pli=1
환경 설정 : 시스템 환경 변수 설정
Windows+S키 -> 시스템 환경 변수 검색 -> 고급 탭의 환경 변수 -> Path 편집, volatility 파일 경로 추가하기(새로 만들기로)
*환경 변수 : 폴더가 어느 경로에 있든 어느 경로에서든 접근할 수 있도록 하는 것.
문제 다운로드 :
1) Volatility Wiki - Memory Samples 원래는 해당 루트로 다운받으나, 현재는 사이트 만료로 다운로드가 불가능하다. 따라서 아래의 링크로 다운받을 것.
https://drive.google.com/file/d/1vhideFMxXF3TFf-aOA9Irpg473-maZFL/view
2) CTF-d - GrrCON 2015
https://drive.google.com/file/d/15tspUQzmad7BTt76x6C-j5pzO-E_UOL0/view
Volatility Cridex 풀이
terminal을 이용해야 한다. 기본 명령어 숙지해둘 것! 해당 명령어들은 리눅스 명령어와 유사했다.
*편의상 경로는 생략하고 디렉토리명이나 파일명만 적었다.
volatility -f cridex imageinfo |
어떤 운영체제의 메모리 덤프인지 판단한다.
명령어 실행 결과 중
Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)
해당 줄에서 제시된 운영체제 중 하나만 임의로 꼽아서 실습에 사용해본다.
volatiltiy -f cridex --profile=WinXPSP2x86 pslist |
pslist : 프로세스들의 리스트를 출력
volatility -f cridex --profile=WinXPSP2x86 pslist > pslist.log |
위의 명령어로 pslist의 결과를 텍스트 파일에 저장한다. 그리고 이 파일을 notepad++로 열어준다.
이외에 프로세스들을 볼 수 있는 도구 : psscan, pstree, psxview
volatility -f cridex --profile= WinXPSP2x86 psscan > psscan.log volatility -f cridex --profile= WinXPSP2x86 pstree > psxview.log volatility -f cridex --profile= WinXPSP2x86 psxview > psxview.log |
마찬가지로 해당 파일들이 생성되고, 이 파일들을 notepad++로 열어준다.
여기에서 뜨는 각각의 한 줄 한 줄이 프로세스이다. 실행되고 있는, 실행되었던 프로세스들의 리스트인 것이다.
pslist : 시간 순서대로 출력
psscan : 오프셋(메모리 덤프에 어떤 위치에 존재하는지) 순서대로 출력 + 숨김 프로세스를 볼 수 있다.
pstree : PID와 PPID를 기반으로 모양이 구조화되어서 출력한다.
psxview : pslist, psscan을 한눈에 볼 수 있다.
=> 이 도구들을 가지고 할 것 : 의심스러운 프로세스들의 목록을 파악하기
의심스러운 프로세스 파악 방법 : 각 프로세스들의 이름을 서치해본다.
그러나 악성 프로세스들의 이름을 다른 일반 프로세스들의 이름과 동일하게 설정하기도 한다.
프로세스 중, reader_sl.exe는 adobe 기반
adobe -> PDF -> PDF 문서를 통한 악성코드가 多 => reader_sl.exe 의심을 해볼 수 있음.
어떤 커맨드라인을 썼는지 검색해 볼 수 있는 명령어
volatility -f cridex --profile=WinXPSP2x86 cmdscan > cmdscan.log volatility -f cridex --profile=WinXPSP2x86 consoles > consoles.log volatility -f cridex --profile=WinXPSP2x86 cmdline > cmdline.log |
cmdscan : cmd에서 실행한 명령을 조회한다.
consoles : cmdscan과 유사하지만 조회하는 개체가 조금 다르다.
cmdline : 현재 실행되고 있는 command-line argument를 조회한다.
volatility -f cridex --profile=WinXPSP2x86 filescan > filescan.log |
filescan : 메모리 내에 존재하는 모든 파일에 대한 정보
notepad++로 열어서 ctrl+F로 검색창 열기, 검색창에는 의심스러웠던 reader_sl.exe 검색, 모두 찾기를 누른다.
검색 결과에 나온 라인의 오프셋을 복사한다.
mkdir files volatility -f cridex --profile=WinXPSP2x86 dumpfiles -Q <복사한 오프셋> -D files -n |
dumpfiles : reader_sl.exe 추출
virustotal 사이트 : 추출한 파일을 해당 사이트에 업로드하면, 악성 코드일지도 모르는 부분들을 제시해 준다.
virustotal 사이트에 추출한 파일을 업로드하니 reader_sl.exe에 악성 코드로 의심되는 부분이 조금 있는 정도였다. 확신할 정도는 아님.
네트워크 정보 출력 명령어
volatility -f cridex --profile=WinXPSP2x86 connections > connections.log |
connections : 연결된 TCP 통신 정보를 출력한다.
notepad++로 해당 파일 열어보면, 하나만 나온다. 해당 PID인 1484를 가지는 프로세스를 pslist에서 찾아본다. PID가 1484인 프로세스는 exploerer이고, 해당 프로세스를 부모 프로세스로 가지는 reader_sl.exe 또한 다시 의심스러워진다.
exploerer보다는 크기가 작은 reader_sl.exe부터 분석한다.
mkdir dumps volatility -f cridex --profile=WinXPSP2x86 memdump -p 1640(=reader_sl.exe의 PID) -D dumps |
이렇게 만들어진 파일을 HxD에서 열 수 있다. 불필요한 값들이 많다. 이러한 값들을 걸러내기 위해서 SysinternalsSuite를 시스템 환경 변수에 추가해준다.
strings dumps/1640.dmp > strings_1640.log |
strings_1640 파일을 역시 notepad++에서 열어준 뒤, connections.log에서의 IP주소 -> 해당 사이트가 해커의 웹사이트 주소로 추정됨(reader_sl.exe -> 악성 PDF 문서 -> 취약점 -> URL 접속으로 추정 / 은행 관련 피싱)
해당 도구들로 어느 부분이 수상한지 발견할 수 있다.
본 게시글은 아래의 강의를 시청하고 공부 목적으로 작성됨.
'슈포스 > 디지털 포렌식 개론' 카테고리의 다른 글
[강의]인프런 : 기초부터 따라하는 디지털 포렌식 섹션3(2) (0) | 2024.11.11 |
---|---|
[7장]디지털 증거 분석 기술 (2) | 2024.11.05 |
[6장]디지털 증거 수집 기술 (0) | 2024.11.05 |
[5장]디지털 포렌식 수행 절차 (2) | 2024.10.08 |
[강의]인프런 : 기초부터 따라하는 디지털포렌식 섹션1~2 (2) | 2024.10.01 |