디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump]
Digital Forensic

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump]

연구소 인턴 2023. 7. 31.
300x250
반응형

<이론>

Digital Forensic에서 Linux에서도 Windows처럼 메모리를 덤프하고 해킹당한 시스템을 이미지로 만들어서 나중에 검토할 수 있다. Windows나 Linux 타겟머신의 RAM이나 HDD/USB를 이미지로 덤프한 뒤 이를 분석하는 과정으로 보통 침투된 시스템을 Windows에서 편리하게 분석할 수 있기 때문에 NFS를 이용해서 네트워크에 위치한 Windows 시스템 이미지와 Linux 이미지를 취합해서 Windows 시스템에서 분석한다. 

▪ 메모리에 대한 덤프는 TCT(The Coroner's Toolkit) 도구 중 하나인 memdump 도구를 사용하면 된다. 
=>나중에 volatility, 그리고 LiME이라는 도구로 이들을 분석하고 복원한다.

▪ 시스템(HDD/USB) 이미지 덤프에서는  
a. Windows 타겟 머신에는 Norton Ghost 도구를 사용할 수 있고, 
b. Linux 타겟 머신에는 dd(disk dump) 도구를 사용해서 디스크를 복사할 수 있다. 혹은
c. AccessData FTK Imager나 EnCase를 사용해서 Windows나 Linux의 이미지를 뜰 수도 있다. 
=>나중에 EnCase나 Forensic Tool Kit와 같은 도구로 이들을 분석하고 복원한다. 
  HDD/USB/RAM 등의 이미지를 뜨면 md5, sha1 등의 해시 알고리즘으로 이미지에 대한 해키 값이 나온다.
md5sum image_name 해서 나온 해시와 위에서의 해시를 비교하면 변형없이 제대로 이미지가 떠진 것이다.

 

<실습>

실습환경 : kali

kali에 접속하여 wget https://http.kali.org/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2022.1_all.deb 명령어 실행

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

dpkg -i kali-archive-keyring_2022.1_all.deb

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

apt update를 실행(memdump를 설치하기 위한 작업)

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

apt -y install memdump

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

memdump에 대한 명령어 실행 후 에러코드가 나오지 않는다면 이상없이 설치된 것이므로

kali에 대한 메모리 덤프를 실행한다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

바탕화면에 메모리 덤프가 생성된 것을 확인할 수 있다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

다른 방법으로는 dd if=/dev/mem of=/home/kali/Desktop/kali-mem2.mem bs=1024이 있다.

여기서 dd 명령어는 사용자가 지정한 섹터 단위로 데이터를 선택하여 수정할 수 있는 기능을 제공한다.

bs는 사이즈를 의미한다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

바탕화면에서 결과물로 생성된 것을 확인 할 수 있다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

이런 방식으로 메모리 덤프를 만드는 것을 알아보았다.

이제 다른 사용자의 덤프를 만들어서 확인하는 것을 실습해보자

Ubuntu로 접속하여 IP를 확인한다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

kali에서 ubuntu의 root 계정으로 들어가서 passwd 파일을 보려고 하였으나

Permission denied가 뜨는 것을 확인하였다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

Ubuntu로 들어가서 sshd_config 파일을 수정해주면 된다.

permitRootLogin yes 주석풀기, port 22 주석풀기, allowusers에 root 추가, pubkeyAuthentication에서 주석풀고 뒷부분을 yes로 변경

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

작업완료 후 service sshd restart

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

kali에서 다시 실행해보면 정상적으로 작동하는 것을 확인할 수 있다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

그러면 Ubuntu의 메모리를 덤프해보자.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

kali의 바탕화면에 메모리 덤프가 생기는 것을 확인하였습니다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>


실제 주로 사용하는 Windows에서 메모리 덤프를 실행해보자.

Windows7에서 메모장을 작성도 하고 인터넷 서핑도 한다음 메모리 덤프를 합니다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

메모리를 뜨기위해 사용하는 프로그램은 AccessData FTK Imager입니다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

File - Capture Memory

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

Destination path : 메모리를 뜨고 난 뒤 저장할 장소

Destination filename : 저장할 이름

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

저는 바탕화면에 저장하였습니다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

저장된 파일을 Kali Linux로 이동시켜줍니다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

kali에서 volatility-install.sh 파일을 만들어주자.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

파일안의 내용을 실행파일이 될수 있게 bin/bash를 넣어주고 해당 내용을 기입한다.

오타가 나지 않도록 주의!!

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

chmod +x 를하여 실행권한을 부여하고 bash로 실행한다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

실행결과 두가지 오류가 나왔는데, 한번 해결해 보자.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

먼저 첫번째 오류인 volatility 디렉토리가 비어있지 않은 것을 보니, 디렉토리를 지워준다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

두번째 오류인 print "\n" 구문오류는 python2 버전에서 파일이 작성되어, 현재 설치한 python3와 구문이 맞지않아서 발생한 오류이다. print문이 들어간 부분에 ()를 씌워주어 문법을 맞추어준다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

다시 실행했을 때 정상적으로 설치가 된 모습이다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

정상적으로 설치가 되었으니 윈도우 메모리 분석을 실행해 보자.

sudo vol.py -vvv -f "해당하는 윈도우 메모리 덤프" windows.info.Info

실행결과는 보는바와 같고 윈도우 덤프에 대한 내용이 적혀있다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

다음은 윈도우에 있던 파일을 검색해보자.

sudo vol.py -vvv -f "해당하는 윈도우 덤프" windows.filescan.FileScan

명령어는 보는바와 같지만 쓰니는 파일로 가독성을 높이기 위하여 보는바와 같이 진행하였다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

정상적으로 파일이 스캔된 것을 확인할 수 있다.

디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>

300x250
반응형

댓글