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 : 시간 순서대로 출력
*volatility에서 프로세스들을 볼 수 있는 도구
- pslist
- psscan
- pstree
- psxview


offset 순서대로 출력
*offset : 메모리 덤프 파일의 어떤 위치에 존재하는지(주소값)
offset 순서는 중요하지않지만 숨긴 파일(숨김 프로세스)들을 볼 수 있기 때문에 psscan 사용

PID와 PPID를 기반으로 구조화되어 보여짐
- PID: process id
- PPID : parents의 pid
*프로세스 PID, PPID에 대한 설
https://bowbowbow.tistory.com/16

psscan을 포함하여 총 7가지 도구를 결합해놓은 도구
pslist, psscan을 한눈에 볼 수 있음

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



filescan

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


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 메모리 덤프 내부에 웹페이지 소스코드 분석