Linux에서 실제 메모리를 어떻게 덤프합니까?


22

리눅스에서 어떻게 물리적 메모리 (RAM) 덤프를 만들 수 있습니까?

이 목적으로 사용할 수있는 소프트웨어는 무엇입니까?

로컬 디스크에 쓰지 말고 네트워크를 통해 데이터를 보내야한다는 것을 읽었습니다. 아무도 여기의 특징을 알고 있습니까? 이더넷이 이러한 목적으로 작동합니까, 아니면 디스크로 보내기 전에 캐싱 양을 최소화하는 명령이 있습니까?

Windows의 WinHex에는 다음과 같은 기능이 있습니다.

여기에 이미지 설명을 입력하십시오

Linux에서 비슷한 것을 찾고 있습니다.

답변:


22

다음은 Linux 메모리를 덤프하는 방법 에 대한 eHow 페이지입니다

Linux는 이러한 목적으로 ' /dev/mem'및 ' /dev/kmem'의 두 가지 가상 장치를 제공 하지만 보안상의 이유로 많은 배포판에서 기본적으로 비활성화합니다. ' /dev/mem'는 실제 시스템 메모리에 연결되어 있으며 ' '는 /dev/kmem스왑을 포함한 전체 가상 메모리 공간에 매핑됩니다. 두 장치 모두 일반 파일로 작동하며 dd 또는 다른 파일 조작 도구와 함께 사용할 수 있습니다.

그에 ForensicsWiki 페이지로 리드 메모리 이미징 도구리눅스 / 유닉스 섹션 ,

  1. dd Unix 시스템에서 프로그램 dd는 장치 파일 (예 : / dev / mem 및 / dev / kmem)을 사용하여 실제 메모리의 내용을 캡처하는 데 사용할 수 있습니다. 최근 Linux 커널에서는 / dev / kmem을 더 이상 사용할 수 없습니다. 최신 커널에서는 / dev / mem에 추가 제한이 있습니다. 그리고 가장 최근에는 / dev / mem을 더 이상 기본적으로 사용할 수 없습니다. 2.6 커널 시리즈에서 의사 장치 파일을 통한 메모리에 대한 직접 액세스를 줄이는 경향이있었습니다. 예를 들어 http://lwn.net/Articles/267427/ 패치와 함께 제공되는 메시지를 참조 하십시오 . Red Hat 시스템 (및 CentOS와 같은 파생 배포판)에서 크래시 드라이버를로드하여 메모리 액세스를위한 의사 장치 ( "modprobe crash")를 만들 수 있습니다.
  2. Second Look 이 상용 메모리 분석 제품은 Linux 시스템, 로컬 또는 원격 대상에서 DMA 또는 네트워크를 통해 메모리를 획득 할 수 있습니다. 가장 일반적으로 사용되는 Linux 배포판에서 수백 개의 커널을 위해 사전 컴파일 된 PMAD (Physical Memory Access Driver) 모듈과 함께 제공됩니다.
  3. Idetect (리눅스)
  4. fmem (Linux)
    fmem은 커널 모듈이며 / dev / mem과 유사하지만 제한없이 장치 / dev / fmem을 만듭니다. 이 장치 (실제 RAM)는 dd 또는 다른 도구를 사용하여 복사 할 수 있습니다. 2.6 Linux 커널에서 작동합니다. GNU GPL 하에서.
  5. 금붕어
    금붕어는 법 집행 기관에서만 사용할 수있는 Mac OS X 라이브 포렌식 도구입니다. 주요 목적은 Firewire 연결을 통해 대상 컴퓨터의 시스템 RAM을 덤프하기 위해 사용하기 쉬운 인터페이스를 제공하는 것입니다. 그런 다음 현재 사용자 로그인 암호와 사용 가능한 열려있는 AOL Instant Messenger 대화 조각을 자동으로 추출합니다. 법 집행 기관은 다운로드 정보를 위해 goldfish.ae에 연락 할 수 있습니다.

Linux 메모리 분석을 참조하십시오 . 대부분의 Linux에서 일반적으로 사용 가능한 GDB
도 있습니다. 또한 항상 알 수없는 메모리를 덮어 쓰지 않는 것이 좋습니다. 시스템 손상을 일으킬 수 있습니다.


1
최근 우분투 시스템에서 이것을 시도한 사람이 있습니까?

1
내 데비안 시스템에는 / dev / mem 또는 / dev / kmem이 없습니다.
Rob

CentOS 7.x VM에서 방금 수행했습니다.
slm

4

휘발성 은 잘 작동하는 것으로 보이며 Windows 및 Linux와 호환됩니다.

그들의 웹 사이트에서 :

휘발성은 XP, 2003 Server, Vista, Server 2008, Server 2008 R2 및 Seven을 포함한 모든 주요 32 비트 및 64 비트 Windows 버전 및 서비스 팩의 메모리 덤프를 지원합니다. 메모리 덤프가 원시 형식이든, Microsoft 크래시 덤프, 최대 절전 모드 파일 또는 가상 시스템 스냅 샷이든, Volatility는이를 사용할 수 있습니다. 또한 원시 또는 LiME 형식의 Linux 메모리 덤프를 지원하며 2.6.11-3.5.x의 32 비트 및 64 비트 Linux 커널을 분석하기위한 35 개 이상의 플러그인과 Debian, Ubuntu, OpenSuSE, Fedora, CentOS 및 맨드레이크. 10.5에서 10.8.3 Mountain Lion (32 비트 및 64 비트)의 38 가지 버전의 Mac OSX 메모리 덤프를 지원합니다. ARM 프로세서가 장착 된 Android 폰도 지원됩니다.



0

확인 으로이 방법을 사용하여 CentOS 7.x VM의 메모리를 덤프 할 수있었습니다.

$ head /dev/mem | hexdump -C
00000000  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
00000010  53 ff 00 f0 53 ff 00 f0  cc e9 00 f0 53 ff 00 f0  |S...S.......S...|
00000020  a5 fe 00 f0 87 e9 00 f0  53 ff 00 f0 46 e7 00 f0  |........S...F...|
00000030  46 e7 00 f0 46 e7 00 f0  57 ef 00 f0 53 ff 00 f0  |F...F...W...S...|
00000040  22 00 00 c0 4d f8 00 f0  41 f8 00 f0 fe e3 00 f0  |"...M...A.......|
00000050  39 e7 00 f0 59 f8 00 f0  2e e8 00 f0 d4 ef 00 f0  |9...Y...........|
00000060  a4 f0 00 f0 f2 e6 00 f0  6e fe 00 f0 53 ff 00 f0  |........n...S...|
00000070  ed ef 00 f0 53 ff 00 f0  c7 ef 00 f0 ed 57 00 c0  |....S........W..|
00000080  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
*
00000100  59 ec 00 f0 3d 00 c0 9f  53 ff 00 f0 ed 69 00 c0  |Y...=...S....i..|
00000110  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
*
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000afea0  00 00 00 00 00 00 00 00  aa aa aa 00 aa aa aa 00  |................|
000afeb0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
...
...
000b0000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
000c0000  55 aa 40 e9 62 0a 00 00  00 00 00 00 00 00 00 00  |U.@.b...........|
000c0010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 49 42  |..............IB|
000c0020  4d 00 9c 80 fc 0f 75 06  e8 4f 01 e9 bc 00 80 fc  |M.....u..O......|

c0000h-effffh 범위에서이 55aah가 발생하면 PNP 확장 헤더 일 가능성이 높습니다.

참조 : BIOS 부팅 사양

3.3 PnP 확장 헤더가있는 장치

옵션 ROM이있는 모든 IPL 장치에는 2k 경계에서 시스템 메모리 주소 C0000h와 EFFFFh 사이에 상주하며 55AAh로 시작하는 유효한 옵션 ROM 헤더가 포함되어야합니다. 장치의 부팅은 PnP 확장 헤더가있는 경우에만 제어 할 수 있습니다. 오프셋 + 1Ah의 표준 옵션 ROM 헤더 내에 주소가있는 확장 헤더에는 장치를 구성하는 데 사용되는 중요한 정보가 포함되어 있습니다. 또한 BIOS가 장치에서 부팅하기 위해 호출 할 장치의 옵션 ROM (BCV 또는 BEV)에 코드를 가리키는 포인터도 포함되어 있습니다. PnP 확장 헤더의 구조는 부록 A를 참조하십시오. PnP 확장 헤더가있는 IPL 장치를 부팅하는 방법에는 두 가지가 있습니다. BCV 또는 BEV를 포함해야합니다.

참고 문헌

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