본문 바로가기

카테고리 없음

[디지털포렌식] 2. Volatility Cirdex 풀이&정리

728x90

Volatility : 메모리 관련 데이터를 수집해주는도구

- 메모리 포렌식 도구, 오픈소스로 제공되고 CLI 인터페이스를 제공한다.

*명령어를 치는 방식이 CLI 인터페이스, 마우스로 클릭하는 게 GUI 방식

 

- 운영체제 식별

  • imageinfo : 메모리의 운영체제를 식별

- 프로세스 검색

  • pslist : 시간 순서대로 출력
  • psscan : 숨김 프로세스를 볼 수 있음
  • pstree : PID, PPID 기반으로 구조화해서 보여줌
  • psxview : pslist, psscan을 한눈에 볼 수 있음, 숨김 프로세스 찾는 데에 사용

- 네트워크 분석

  • netscan : windows7 이상/ tcp udp 프로토콜로 이루어지는 모든 통신을 조회해줌 / IPv4, IPv6 지원

- cmd 분석

  • cmdline : 프로세스가 실행될 때 인자값
  • cmdscan, consoles : 콘솔에 입력한 값들을 볼 수 있음

- 파일 분석 및 덤프

  • filescan : 메모리 내에 존재하는 모든 파일에 대한 정보
  • dumpfiles : 프로세스의 메모리 덤프 추출 -> strings로 변환해서 키워드 검색

- 프로세스 세부 분석

  • procdump : 프로세스의 exe 파일 추출
  • memdump : 특정 프로세스의 메모리 영역을 덤프, strings 사용

 

*시스템 환경 변수 설정

https://rootblog.tistory.com/225

 

*Windows Terminal 사용법

https://velog.io/@hunjison/Windows-Terminal-%EA%B8%B0%EC%B4%88-%EC%82%AC%EC%9A%A9%EB%B2%95

 

 

imageinfo

volatility -f <이미지> imageinfo

imageinfo : 메모리덤프를 보고 어떤 운영체제의 메모리덤프인지 판단하는 것

*정보 확인 Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)

 

 

pslist

위에서 얻은 profile명을 추가하여 pslist 명령어 입력

 

pslist : 프로세스들의 리스트를 출력

 

출력값이 매우 길게 나오는데, 위와 같이 명령어 뒤에 > pslist.log 를 붙여주면 출력내용이 pslist.log 라는 파일로 생성된다.

 

폴더 생성 > notepad++에서 오픈

 

pslist.log

pslist : 시간 순서대로 출력

 

*volatility에서 프로세스들을 볼 수 있는 도구

- pslist

- psscan

- pstree

- psxview

 

psscan.log

offset 순서대로 출력

*offset : 메모리 덤프 파일의 어떤 위치에 존재하는지(주소값)

offset 순서는 중요하지않지만 숨긴 파일(숨김 프로세스)들을 볼 수 있기 때문에 psscan 사용

pstree.log

PID와 PPID를 기반으로 구조화되어 보여짐

- PID: process id

- PPID : parents의 pid

 

*프로세스 PID, PPID에 대한 설

https://bowbowbow.tistory.com/16

 

psxview.log

psscan을 포함하여 총 7가지 도구를 결합해놓은 도구

pslist, psscan을 한눈에 볼 수 있음

 

cmdscan

consoles

cmdline  : 프로세스가 실행될 때 인자값

cmdscan.log
consoles.log
cmdline.log

 

 

filescan

메모리 내에 존재하는 모든 파일에 대한 정보를 보여줌

filescan.log

ctrl+O(열기) 로 filescan.log 열기

오프셋 전체에 존재하는 파일들의 리스트가 펼쳐진다.

 

Ctrl+F 로 의심스러웠던 파일 reader_sl.exe 를 현재 문서에서 모두 찾아준다.

 

이 값을 복사해준다. 0x00000000023ccf90

 

 

 

dumpfiles

.\volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 dumpfiles -Q 0x00000000023ccf90 -D .\files\ -n

메모리 내의 reader_sl을 뽑은 것

 

위 명령어 실행 시 files 폴더 안에 두 개의 파일이 생성된다.

 

 

virustotal

virustotal 사이트에 파일을 업로드하여 결과를 확인해준다. 이때 두 파일은 동일하기 때문에 아무거나 올려도 된다.

 

 

 

connections

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

 

connections 로 연결된 TCP 통신에 대한 정보를 출력한다.

 

Local address : 현재 분석하고자 하는 컴퓨터의 로컬 주소

> 8080 포트로 1484라는 프로세스에서 Remote address와 통신중이다.

 

 

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

 

reader_sl.exe의 메모리 영역을 1640.dmp라고 저장하는 것. dumps 폴더 안에 1640.dmp 파일이 확인 가능하다.

 

HxD에서 이 덤프파일을 열어준다. (쓰레기 데이터라고 한다.)

 

sysinternalsuite 경로를 시스템 환경 변수에 등록해준다. > strings를 사용해야하기때문

 strings .\dumps\1640.dmp > strings_1640.log

 

명령어 입력 후 로딩이 완료되면 열어준다.

 

이건 따라가던 강의자료인데 이렇게 remote address를 검색했을 때 결과가 두 개가 나와야한다고 한다.

 

근데 나는 이렇게 하나만 떠서 따라가지 못했다 ..

 

위에서 찾은 url 링크들의 해커들의 url 링크라고 추측할 수 있다고 한다.

 

>>

reader_sl.exe > 악성 PDF 문서 > 취약점 > URL 접속 > 은행 관련 피싱

이렇게 시나리오를 만들고 분석할 수 있다.

 

 

volatility 정리

 

1. 운영체제 식별

- WinXPSP2x86

 

2. 프로세스 검색

- reader_sl.exe(1640)가 수상한 프로세스로 의심됨

 

3. 네트워크 분석

- 공격자 IP : 41.168.5.140:8080

- PID : 1484(explorer.exe)

 

4. cmd 분석 > 결과 없음

 

5. 파일 분석 및 덤프

- filescan 결과로부터 reader_sl.exe 추출

- dumpfiles 이용하여 추출 > virustotal 검색 > 애매한 결과

 

6. 프로세스 세부 분석

- procdump 이용하여 reader_sl.exe 실행파일 추출 > virustotal 검색 > 발견!

- memdump 이용하여 reader_sl.exe 메모리 영역을 덤프 > strings 명령어 이용하여 수상한 url들 발견

 

분석 결과

* 침입 경로 : 확인 불가

 

* 악성 행위 

- 악성 프로세스 "reader_sl.exe" 식별

- 외부 통신 IP "41.168.5.140:8080" 발견

- 프로세스 덤프 후 virustotal 검색 결과 > 악성 프로세스 확인

- 프로세스 메모리 덤프 내부에서 수상해보이는 단서 확보

 

추가 분석 가능한 부분들

- explorer.exe 프로세스 분석

- IP 추적 > Whois 조회

- 레지스트리 추출 - 자동 실행 관련 분석

- explorer.exe 메모리 덤프 내부에 웹페이지 소스코드 분석

728x90