메모리 포렌식

2024. 5. 13. 23:22보안/포렌식

728x90
반응형

메모리 포렌식

주 기억장치(메모리)에 존재하는 휘발성 데이터를 덤프 분석하는 과정

악성코드가 실행되기 위해서는 메모리로 로드되어야 해서 메모리는 악성코드를 가지고 있을 가능성이 높다.

피해시스템의 RAM은 악의적인 코드가 할당한 자원과 악성코드 관련 증거들을 포함하고 있어 분석 시 유용한 흔적을 찾을 수 있다.

분석 시 얻을 수 있는 정보

  1. 프로세스 정보
  2. 네트워크 연결 정보
  3. 윈도우 레지스터리 정보
  4. 패스워드, 캐시정보, 클립보드 정보 등
  5. 악성코드 파일 정보
  6. 하드웨어 설정 정보

메모리 정보이니만큼 휘발성 데이터로 전원 차단 시 데이터가 사라져 온전한 데이터수집이 어렵다.

메모리 덤프

RAM에 존재하는 모든 데이터를 덤프해 분석가능한 파일 형태로 변환하는 작업

  1. 하드웨어를 이용한 덤프 : FireWire Attack(IEEE 1394)를 이용한 메모리 덤프, Tribble를 PCI 장치를 이용해 덤프
    • 장점
      - 악성 프로그램에 영향을 받지 않는다.
      - 빠른 메모리 덤프 가능
      - 무결성 최소화
    • 단점
      - 안전성에 대한 검증이 필요하다
      - 간혹 시스템 크래시 발생
  2. 소프트웨어를 이용한 덤프 방식
    DD, MDD, Winen, WIN32/64dd & Dumplt, Memorize ProDiscovery, HBGary, FastDumpPro, 크래시 덤프, 절전 덤프
    장점
    - 추가 장치가 필요없다.
    - 오픈소스 및 프리웨어 도구가 다양함
    단점
    - 커널 루트킷에 취약하다.
    - OS 제약을 받는다.
    - 수집하는 메모리쪽에 흔적이 남는다.
  3. Virtual Machine Imaging
    • VMware 세션이 정지되면 물리 메모리 내용은 .vmem 확장자를 가지는 파일에 포함된다.
    • vmem은 raw 포맷과 유사하고 다른 메모리 분석 도구를 통해 분석 가능하다.
    • 악성코드를 가상머신에 올리고 폴더에 보면 .vmem이 생기는데 이것을 이용해서 덤프를 뜰 수 있다.
  4. 절전모드 덤프(Hibernation)
    • 전력 관리를 보다 효율적으로 하기 위해 절전 상태에 돌입되면 하드 드라이브에 메모리 데이터를 기록한 다음 전력을 차단해 버리는 기능이다.
    • 윈도우는 절전모드로 들어갈 경우 물리메모리 내용을 압축해 C:hiberfil.sys파일로 저장한다.
    • 부팅 과정에서 hiberfil.sys가 설정되어 있으면 NTLDR에 의해서 메모리로 로드 된 후에 이전 상태로 돌아간다.

Volatility

메모리 분석을 위한 대표적인 프레임워크 도구

위키 페이지 : https://github.com/volatilityfoundation

 

Volatility Foundation

Volatility Foundation has 7 repositories available. Follow their code on GitHub.

github.com

*운영체제 식별

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

 volatility -f <이미지 파일> imageinfo

*프로세스 검색

  • pslist : 프로세스 리스트를 시간 순서대로 보여줌
  • psscan : 프로세스 구조체 스캔 후 출력, 숨겨진 프로세스 출력 가능
  • pstree : pid, ppid 기준으로 구조화하여 보여줌,

최초로 생성되는 프로세스를 제외하고, 모든 프로세스는 부모 프로세스를 복제해 생성되고 계 층관계 트리가 생긴다. 각각의 프로세스는 자식 프로세스와 부모 프로세스에 대한 정보를 가진다. PID(Process ID)는 운영체제에서 프로세스를 구분하기 위해 부여한 번호이다. PPID(Parent Process ID)는 해당 프로세스를 만든 부모 프로세스의 PID를 의미한다.

  • psxview : pslist, psscan을 포함한 도구들의 결과를 한 눈에 볼 수 있음,

pslist는 true인데 psscan 은 false인 경우 숨겨진 프로세스라고 의심 가능하다.

 Volatility -f <이미지파일> --profile

=Suggested Profile pslist / psscan / pstree / psxview > pslist / psscan / pstree / psxview.log

*네트워크 분석

  • connections : 현재 연결된 tcp 통신에 대한 정보
  • netscan : 메모리의 네트워크 정보, 프로세스 정보 출력
  • sockets : tcp, udp를 포함한 모든 프로토콜 출력, 현재 listening 상태에 있는 소켓 출력

 volatility -f <이미지 파일> --profile=<프로파일 명> connections > connections.log

 volatility -f <이미지 파일> --profile=<프로파일 명> connscan

*cmd분석

  • cmdscan, consoles : 콘솔에 입력한 값들을 볼 수 있음. cmdscan은 cmd.exe가 실행한 명령을 나열하고 consoles는 명령이 성공했는지 안 했는지 알 수 있음
  • cmdline : 프로세스가 실행될 때의 인자 값을 확인할 수 있음

 volatility -f <이미지 파일> --profile=<프로파일 명> cmdscan > cmdscan.log

 volatility -f <이미지 파일> --profile=<프로파일 명> consoles > consoles.log

 volatility -f <이미지 파일> --profile=<프로파일 명> cmdline > cmdlines.log

*파일 분석 및 덤프

  • filescan : 메모리 내에 존재하는 모든 파일들의 리스트 출력
  • dumpfiles : 파일을 덤프, 옵션으로 메모리 주소, 프로세스 줄 수 있음

++virtustotal 사이트는 바이러스 검사를 할 수 있는 사이트이다.

 volatility -f <이미지 파일> --profile=<프로파일 명> filescan > filescan.log

 volatility -f <이미지 파일> --profile=<프로파일 명> dumpfiles -Q <메모리주소> -D <저장 할 디렉토리>

*프로세스 세부 분석

  • memdump : 특정 프로세스의 메모리 영역을 덤프
  • procdump : 프로세스의 실행 파일을 추출

 volatility -f <이미지 파일> --profile=<프로파일 명> memdump -p pid -D <저장할 디렉토리>

 volatility -f <이미지 파일> --profile=<프로파일 명> procdump -p pid -D <저장할 디렉토리>

<명령어 참고 링크>

https://yum-history.tistory.com/281

728x90
반응형

'보안 > 포렌식' 카테고리의 다른 글

리눅스 메모리 포렌식  (0) 2024.05.14
안티포렌식이란 ?  (0) 2024.05.13
[Dreamhack] video_in_video Write-up  (0) 2024.05.07
동영상 확장자(컨테이너, 코덱)  (0) 2024.05.06
[Dreamhack] palm write-up  (0) 2024.05.03