<이론>
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 - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
dpkg -i kali-archive-keyring_2022.1_all.deb
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
apt update를 실행(memdump를 설치하기 위한 작업)
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
apt -y install memdump
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/vNW6s/btsoxaFY3og/KmBQQFcDwXsEkhO1e1aFP0/img.png)
memdump에 대한 명령어 실행 후 에러코드가 나오지 않는다면 이상없이 설치된 것이므로
kali에 대한 메모리 덤프를 실행한다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/dapiVK/btsoyVOtMnq/bH7RcB1WorSkCDoEEpd4o0/img.png)
바탕화면에 메모리 덤프가 생성된 것을 확인할 수 있다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/ZC1si/btsoxbEO4KZ/VKBkrQuoTrxoalyeUmPMw0/img.png)
다른 방법으로는 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 - <실습>](https://blog.kakaocdn.net/dn/O5wxS/btsozkOlTAI/wK7XFKYEFRvkg3GTrvqtK0/img.png)
바탕화면에서 결과물로 생성된 것을 확인 할 수 있다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/bnPAz7/btsoxwIGwzD/CHxSGcJdRqTlWyR0PUuf8k/img.png)
이런 방식으로 메모리 덤프를 만드는 것을 알아보았다.
이제 다른 사용자의 덤프를 만들어서 확인하는 것을 실습해보자
Ubuntu로 접속하여 IP를 확인한다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/UCuHu/btsozTv6gv7/ZmCymaRLqYP7Kw2ZzCYRFk/img.png)
kali에서 ubuntu의 root 계정으로 들어가서 passwd 파일을 보려고 하였으나
Permission denied가 뜨는 것을 확인하였다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/dPuNC7/btsozT3Wazd/PVN1lgCVPVjY9QZHLeGmJK/img.png)
Ubuntu로 들어가서 sshd_config 파일을 수정해주면 된다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/swfPl/btsoxbEPvOp/OCJd9JwKm1TQkso6fdjx81/img.png)
작업완료 후 service sshd restart
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/8Ohgh/btsowXAaLUN/CJEhTqK4B83OkQV9eRQz70/img.png)
kali에서 다시 실행해보면 정상적으로 작동하는 것을 확인할 수 있다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/le8My/btsoyqnDG8W/JCqVEhztymcG48aSpbq1HK/img.png)
그러면 Ubuntu의 메모리를 덤프해보자.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/2VOIb/btspeHwEwIo/1yFd7pEWaXh8JW8kXWGNfk/img.png)
kali의 바탕화면에 메모리 덤프가 생기는 것을 확인하였습니다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/n0Pm5/btspomjIane/Sn1WD3mJcaHx2hDPk9cmB1/img.png)
실제 주로 사용하는 Windows에서 메모리 덤프를 실행해보자.
Windows7에서 메모장을 작성도 하고 인터넷 서핑도 한다음 메모리 덤프를 합니다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/QukHd/btsoErMNTT8/tmdYIueD4RRE9gbIafCG30/img.png)
메모리를 뜨기위해 사용하는 프로그램은 AccessData FTK Imager입니다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/en5NQJ/btsoEq1pRvh/t5hGCanwTGgkDrnhcHRfJ0/img.png)
File - Capture Memory
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/cXD3BQ/btsoyquCy7M/PiVvHp1YK2D6RYRxZN1iSk/img.png)
Destination path : 메모리를 뜨고 난 뒤 저장할 장소
Destination filename : 저장할 이름
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/og6Qm/btsoxp4soM2/BJJRJgVCiJaSteFCVg9SI1/img.png)
저는 바탕화면에 저장하였습니다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/1UmAr/btsoDI2ejio/mKRHpsFst0lvYf8PyRKy0K/img.png)
저장된 파일을 Kali Linux로 이동시켜줍니다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/bMBNtc/btsoDH957u3/HzIMPKsUjYKdxKkzuENJMk/img.png)
kali에서 volatility-install.sh 파일을 만들어주자.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/bgTfCW/btsoyV8Mq64/H0kxPUk0nkF8bG5YgwTqpK/img.png)
파일안의 내용을 실행파일이 될수 있게 bin/bash를 넣어주고 해당 내용을 기입한다.
오타가 나지 않도록 주의!!
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/b84aYI/btsoCFRRDca/ctT7IPXPetZASKVa6H1es0/img.png)
chmod +x 를하여 실행권한을 부여하고 bash로 실행한다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/d9m91P/btsowX7ZcVb/CShgPzRsi6mJXknHg6o451/img.png)
실행결과 두가지 오류가 나왔는데, 한번 해결해 보자.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/DVAtN/btsowXmy1Ex/ZDgKp3BBthMnWKQHAhqqA1/img.png)
먼저 첫번째 오류인 volatility 디렉토리가 비어있지 않은 것을 보니, 디렉토리를 지워준다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/OyweC/btsoyp97buQ/YHtLMdDDQIUXbX81OYjLS1/img.png)
두번째 오류인 print "\n" 구문오류는 python2 버전에서 파일이 작성되어, 현재 설치한 python3와 구문이 맞지않아서 발생한 오류이다. print문이 들어간 부분에 ()를 씌워주어 문법을 맞추어준다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/cnJtmw/btsoCGwv8cu/2dnTOoP1v85bQRkCOhKyw0/img.png)
다시 실행했을 때 정상적으로 설치가 된 모습이다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/k4PPo/btsowYFPFwu/bFWGctce2SHKPEQnPlpat0/img.png)
정상적으로 설치가 되었으니 윈도우 메모리 분석을 실행해 보자.
sudo vol.py -vvv -f "해당하는 윈도우 메모리 덤프" windows.info.Info
실행결과는 보는바와 같고 윈도우 덤프에 대한 내용이 적혀있다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/TnF7I/btspsV0pwRZ/AxccU1CW7fuwF4dV3qTGkK/img.png)
다음은 윈도우에 있던 파일을 검색해보자.
sudo vol.py -vvv -f "해당하는 윈도우 덤프" windows.filescan.FileScan
명령어는 보는바와 같지만 쓰니는 파일로 가독성을 높이기 위하여 보는바와 같이 진행하였다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/Krf2O/btspkJU0Gw4/gy2z79PNEig0KT1pENC7S0/img.png)
정상적으로 파일이 스캔된 것을 확인할 수 있다.
![디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습> 디지털 포렌식[Digital Forensic] 메모리 덤프[memory dump] - undefined - <실습>](https://blog.kakaocdn.net/dn/9jown/btspmVfCHpt/PCXLsCflBmbR2D3Qjl90w0/img.png)
'Digital Forensic' 카테고리의 다른 글
디지털 포렌식[Digital Forensic] 이미지 분석[Image analysis] (0) | 2023.08.01 |
---|---|
디지털 포렌식[Digital Forensic] - 1 (0) | 2023.07.19 |
댓글