리눅스 시스템에서 메모리 이미지를 덤프하는 방법?


18

Windows에서 메모리 이미지를 덤프하는 것을 알고 있습니다. (예 : 덤프) 그러나 Linux에서 메모리 이미지를 덤프하는 방법을 모르겠습니다.

Linux에서 ssh 연결 또는 Linux로 Linux에서 Linux로 메모리 이미지를 가져오고 싶습니다.

리눅스에서 어떻게 구할 수 있습니까?


5
실행중인 프로세스, 커널 메모리 또는 원시 실제 메모리에서 메모리를 가져 오려고합니까? 모두 사용할 수 있지만 액세스 방법이 다릅니다. / dev / kmem, / dev / mem, / proc / kcore, / proc / $ pid / maps 및 / proc / $ pid / mem을 참조하십시오.
casey

이 SU Q & A를 살펴보십시오 : superuser.com/questions/164960/…
slm

답변:


26

법의학 위키 : 도구 : 메모리 이미징

발췌

리눅스

/ dev / mem

이전 Linux 시스템에서는 프로그램 dd를 사용 하여 장치 파일 / dev / mem에서 실제 메모리 의 내용을 읽을 수 있습니다 . 그러나 최근 Linux 시스템에서 / dev / mem은 시스템의 전체 물리적 메모리가 아니라 제한된 주소 범위에만 액세스 할 수 있도록합니다. 다른 시스템에서는 전혀 사용하지 못할 수 있습니다. 2.6 커널 커널 시리즈 전체에서 의사 장치 파일을 통한 메모리에 대한 직접 액세스를 줄이는 경향이있었습니다. 예를 들어 http://lwn.net/Articles/267427/ 패치와 함께 제공되는 메시지를 참조 하십시오 .

/ dev / crash

Red Hat 시스템 (및 Fedora 또는 CentOS와 같은 관련 배포판을 실행하는 시스템)에서는 크래시 드라이버를로드하여 원시 물리적 메모리 액세스를위한 의사 장치 / dev / crash를 생성 할 수 있습니다 ( "modprobe crash"명령 사용). 이 모듈은 약간의 노력으로 다른 Linux 배포판 용으로 컴파일 할 수도 있습니다 (예 : http://gleeda.blogspot.com/2009/08/devcrash-driver.html 참조 ). 충돌 드라이버가 다른 시스템에서 수정, 컴파일 및로드 될 때 결과 메모리 액세스 장치는 전체적으로 이미지를 생성하는 것이 안전하지 않습니다. RAM이 지원되지 않는 주소를 피하기 위해주의를 기울여야합니다. Linux에서 / proc / iomem은 "시스템 RAM"으로 표시된 올바른 주소 범위를 이미지에 노출합니다.

두번째 모습 : 리눅스 메모리 포렌식

이 상용 메모리 포렌직 제품에는 수정 된 버전의 충돌 드라이버와 특정 Linux 시스템에서 원본 또는 수정 된 드라이버를 사용하여 메모리를 안전하게 덤프하기위한 스크립트가 함께 제공됩니다.

fmem fmem-github 저장소

fmem은 / dev / mem과 유사하지만 제한없이 장치 / dev / fmem을 만드는 커널 모듈입니다. 이 장치 (실제 RAM)는 dd 또는 다른 도구를 사용하여 복사 할 수 있습니다. 2.6 Linux 커널에서 작동합니다. GNU GPL 하에서.

라임-리눅스 메모리 추출기

LiME (Linux Memory Extractor)는 LKM (Loadable Kernel Module)로, Android에서 구동되는 것과 같은 Linux 및 Linux 기반 장치에서 휘발성 메모리를 얻을 수 있습니다. 이 도구는 장치의 파일 시스템 또는 네트워크를 통해 메모리 덤프를 지원합니다.

fmem분석을 위해 메모리를 덤프하는 가장 쉬운 방법 인 이 사용 예제를 찾았 /dev/mem습니다. 2.6.x 커널 이후 에는 더 이상 이해할 수 없습니다.

fmem 예

$ ./run.sh
...
----Memory areas: -----
reg00: base=0x000000000 (    0MB), size= 1024MB, count=1: write-back
reg01: base=0x0c8800000 ( 3208MB), size=    2MB, count=1: write-combining
-----------------------
!!! Don't forget add "count=" to dd !!!


$ ls /dev/f*
/dev/fb0  /dev/fd0  /dev/fmem  /dev/full  /dev/fuse


$ sudo dd if=/dev/fmem of=/tmp/fmem_dump.dd bs=1MB count=10
10+0 records in
10+0 records out
10000000 bytes (10 MB) copied, 0.0331212 s, 302 MB/s

* 출처 : 모든 물리적 메모리를 파일로 덤프하는 방법은 무엇입니까?

라임 예

휘발성 메모리를 분석하기 위해 Linux Memory Analysis 라는 제목의이 페이지도 있습니다 . 이 비디오 자습서에는 메모리 덤프를 수집하고 분석하여 메모리 덤프에서 사용자의 Bash 기록을 추출하기 위해 LiME 및 Volatility를 사용하는 방법을 보여주는 철저한 예가 있습니다.

또 뭐요?

U & L Q & A 제목도 있습니다 : 전체 시스템 메모리를 어떻게 덤프 할 수 있습니까? 추가 예와 정보가 있습니다.



-3
dc3dd if=/proc/kcore of=/mount/.

2
약간의 설명이 좋을 것입니다.
phk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.