메모리: 프로그램이 올라갈 수 있는 일종의 공간
도구 설치&환경 설정&문제 다운로드
- Volatility
- Windows Terminal
- 시스템 환경변수 설정
- 문제 다운로드: Memory Samples, GrrCON 2015
- Terminal 명령어 일부 학습(ls, mkdir, cd, cat 등)
cd .\cridex\를 해 주어 경로를 cridex로 이동 후 시작한다.
다음과 같은 명령어를 작성한다. -> volatility_2.6_win64_standalone.exe -f .\cridex.vmem imageinfo
imageinfo란?
메모리 덤프를 보고 volatility가 어떤 운영체제의 메모리 덤프라고 판단하는 것이다. 이것이 어떤 운영체제인지에 대한 값이 앞으로의 모든 분석에 사용된다. 모든 분석에 앞서서 이 이미지 인포를 통해서 찾아 주어야 한다.
Volatility Foundation Volatility Framework 2.6
INFO : volatility.debug : Determining profile based on KDBG search...
Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)
AS Layer1 : IA32PagedMemoryPae (Kernel AS)
AS Layer2 : FileAddressSpace (C:\Users\rose2\cridex\cridex.vmem)
PAE type : PAE
DTB : 0x2fe000L
KDBG : 0x80545ae0L
Number of Processors : 1
Image Type (Service Pack) : 3
KPCR for CPU 0 : 0xffdff000L
KUSER_SHARED_DATA : 0xffdf0000L
Image date and time : 2012-07-22 02:45:08 UTC+0000
Image local date and time : 2012-07-21 22:45:08 -0400
이중에서 아무거나 선택 후 ctrl+c로 복사 해준다. 그다음 할 명령어는 pslist라는 것인데, 우선 volatility_2.6_win64_standalone.exe -f .\cridex.vmem을 입력 후 --profile=WinXPSP2x86 pslist 를 입력하면
이렇게 뭐가 많이 나온다. pslist는 프로세스들의 리스트를 출력하는 명렁어이다. 그러나 이렇게 치게 될 경우 너무 많이 나오기 때문에 뒤에 pslist > pslist.log 와 같이 log에 저장이 되게 만들어 주고 실행을 하면
cridex 파일에 pslist 파일이 생긴다. 이것을 notepad++에서 실행해 주면
이것이 Volatility에서 분석한 이미지에 들어있던 프로세스들의 리스트를 볼 수 있다.
Volatility에서 프로세스를 볼 수 있는 도구는 pslist, psscan, pstree, 그리고 psxview라는 도구가 4개 있다. 4개를 각각 출력해 보자.
이제 notepad로 가서 파일 열기를 누르면
이렇게 4개의 파일을 볼 수 있게 된다. 이것들은 우리가 분석하고자 하는 메모리 안에서 실행되고 있던, 실행되고 있는 아니면 실행되었던 프로세스 목록이 나오는 것이다. 이 네 가지가 다 프로세스들의 리스트를 출력해 주는 것이다.
- pslist: 시간 순서대로 출력
- psscan: 오프셋(메모리 범프 파일에 어떤 위치에 존재하는지) 순서대로 출력 -> 숨긴 파일을 볼 수 있음
- pstree: PID PPID를 기반으로 구조화 해서 보여 줌. -> 수상한 프로세스를 볼 수 있음
- psxview: pslist와 psscan을 포함해서 총 7가지 도구를 쓸 수 있는 도구(한 눈에 볼 수 있는 도구)
의심스러운 프로세스들의 목록을 만드는 게 중요하다. 알기 위해서는 하나하나 검색하여 이것이 무엇을 뜻하는지 알아 볼 필요가 있다.
Offset(P) Name PID pslist psscan thrdproc pspcid csrss session deskthrd ExitTime
---------- -------------------- ------ ------ ------ -------- ------ ----- ------- -------- --------
0x02498700 winlogon.exe 608 True True True True True True True
0x02511360 svchost.exe 824 True True True True True True True
0x022e8da0 alg.exe 788 True True True True True True True
0x020b17b8 spoolsv.exe 1512 True True True True True True True
0x0202ab28 services.exe 652 True True True True True True True
0x02495650 svchost.exe 1220 True True True True True True True
0x0207bda0 reader_sl.exe 1640 True True True True True True True
0x025001d0 svchost.exe 1004 True True True True True True True
0x02029ab8 svchost.exe 908 True True True True True True True
0x023fcda0 wuauclt.exe 1136 True True True True True True True
0x0225bda0 wuauclt.exe 1588 True True True True True True True
0x0202a3b8 lsass.exe 664 True True True True True True True
0x023dea70 explorer.exe 1484 True True True True True True True
0x023dfda0 svchost.exe 1056 True True True True True True True
0x024f1020 smss.exe 368 True True True True False False False
0x025c89c8 System 4 True True True True False False False
0x024a0598 csrss.exe 584 True True True True False True True
만약 이름을 똑같이 한다면? 수상한 부분을 찾아내야 한다. 특히 swchost.exe는 가장을 많이 하기 때문에 의심할 필요가 있다.
- exploer.exe는? 탐색기
- reader_sl.exe는? Adobe 소프트웨어 구성요소
Adobe란?
보통 pdf를 읽는데 pdf 문서를 통한 악성코드가 엄청 많다. 그래서 reader_sl.exe를 의심해 볼 수 있다. 그렇다면 pslist로 넘어와서
reader_sl.exe 이후에 깔린 저 세 개의 파일도 의심해 볼 수 있기에 체크가 필요하다. reader_sl.exe는 숨겨진 파일은 아니다. 다시 volatility로 가 보자. 이번에는 프로세스 말고 커맨드 라인을 볼 것이다.
cmdscan, consoles, cmdline을 각각 입력해 준 후 notepad로 열어준다.
consoles와 cmdscan에는 아무것도 없지만 cmdline에는 무언가 있는 것을 볼 수 있다.
cmdline이란?
프로세스의 인자값 확인
이것을 다 보는 게 아니라 reder_sl.exe가 의심스러우니 그 부분을 보는 것이다. 하지만
Command line : "C:\Program Files\Adobe\Reader 9.0\Reader\Reader_sl.exe"
************************************************************************
와 같이 아무 정보도 나오지 않았으니 넘어간다. 다음은 volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 filescan > filescan.log를 입력해 본 후 nodepad에서 열어본다.
filescan이란?
메모리 내에 존재하는 모든 파일에 대한 정보. 용량이 크다.
엄청 긴데 이것 역시 다 보는 게 아니라 ctrl+F 후 reader_sl.exe를 검색하여 찾아 준다.
여기서 offset 값, 즉 0x00000000023ccf90를 가져와서 복사해 준다. 그 후 mkdir files로 files라는 파일을 하나 만들어 준다. 그리고 나서 dumpfiles -Q 0x00000000023ccf90(복사한 오프셋) -D .\files\ -n 를 입력해 준다.
그러고 나면 cridex에 files라는 파일이 생기고 그 안에는 두 개의 파일이 생긴다.
이것은 reader_sl.exe이 저장되어 있는데 이것을 뽑아 본 것이다.
이것을 뽑았으면 virustotal(바이러스 검사 사이트)에 넣어 본다.
그랬더니 73개 중 9개가 악성파일이라고 나온 것을 볼 수 있다. dumpfiles로 reader_sl.exe를 추출하고 virustotal에서 검사해 봤는데 이렇게 나왔지만 약간 애매하니 우선 넘어가자.
이번에는 네트워크 정보를 볼 것이다. 네트워크 정보는 connections > connections.log 를 입력하여 볼 수 있다.
connections란?
연결된 TCP 통신 출력
열면 이렇게 나온다. Local Address는 분석하고자 하는 컴퓨터의 로컬 주소이고 Remote Address는 원격지 주소이다. 두 주소가 통신을 하고 있는 상황이다. 8080이라는 포트로 하고 있고 1484라는 프로세스에서 하고 있는 것인데 1484를 찾아 보면
explorer.exe임을 알 수 있는데 이것을 의심해 볼만 하다. 이것이 의심스러우니 밑에 있는 reader_sl.exe가 한 번 더 의심이 가는 상황이다. 그래서 이것을 한 번 더 볼 것이다. 이번에는 메모리 덤프를 해 줄 것이다. reader_sl.exe를 먼저 보는 이유는 explorer.exe가 파일 탐색기이기 때문에 너무 커서 우선 작은 것부터 보는 것이다.
따라서 프로세스의 메모리 부분을 덤프해서 가져오는 memdump를 해 준다. 그 전에 dumps라는 파일을 하나 만든 후 memdump -p 1640 -D .\dumps\를 해 준다.
그다음 HXD를 실행후 1640.dmp 파일을 열어준다. 하지만 그냥 가져오면 쓰레기값이 많기 때문에 Sysinternational Suite,를 환경변수에 등록을 해 준 후 strings .\dumps\1640.dmp > strings_1640.log 를 입력해 준다. 이후 notepad로 가서 아이피 주소를 찾아 줄 건데
여기서 아이피인 41.168.5.140:8080를 검색해 주면
두 개가 나온다.
더블클릭하면 이런 주소들이 많이 나오는데 아마 해커의 웹주소로 보인다. 예상하자면, reader_sl.exe가 pdf를 읽는데 여기서 어떤 악성 pdf를 읽었을 것이고 이것의 취약점으로 URL을 접속했을 것이다. 이 파일을 보니 reader_sl.exe를 의심해 볼 수 있다. 여기서 좀만 위로 올려 보면
은행 관련한 것들이 많이 나오는데 아마 은행 관련 피싱(가짜 사이트를 만든 후 아이디와 비밀번호를 훔쳐감)으로 보인다.
'인프런 강의' 카테고리의 다른 글
[241119] 기초부터 따라하는 디지털 포렌식 강의 섹션 3 (0) | 2024.11.19 |
---|---|
[241001] 기초부터 따라하는 디지털 포렌식 강의 섹션 1, 2 (0) | 2024.10.01 |