22

Как создать дамп физической памяти (ОЗУ) в Linux?

Какое программное обеспечение, если таковое имеется, доступно для этой цели?

Я читал, что не следует писать на локальный диск, а отправлять данные по сети. Кто-нибудь знает особенности здесь? Будет ли Ethernet работать для этой цели, или есть какие-либо команды, которые минимизируют объем кэширования перед отправкой на диск?

WinHex на Windows имеет такую функциональность:

Я ищу что-то похожее на Linux.

4 ответа4

22

Вот страница eHow о том, как сделать дамп памяти Linux

Linux предоставляет два виртуальных устройства для этой цели, « /dev/mem » и « /dev/kmem », хотя многие дистрибутивы по умолчанию отключают их по соображениям безопасности. « /dev/mem » связан с физической системной памятью, тогда как « /dev/kmem » отображает все пространство виртуальной памяти, включая любой обмен. Оба устройства работают как обычные файлы и могут использоваться с dd или любым другим инструментом для работы с файлами.

Это приводит к появлению страницы ForensicsWiki, посвященной средствам визуализации памяти с разделом Linux/Unix,

  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. Второй взгляд Этот коммерческий продукт для анализа памяти имеет возможность извлекать память из систем Linux, либо локально, либо из удаленной цели через DMA или по сети. Он поставляется с предварительно скомпилированными модулями драйвера физической памяти (PMAD) для сотен ядер из наиболее часто используемых дистрибутивов Linux.
  3. Idetect (Linux)
  4. fmem (Linux)
    fmem - это модуль ядра, который создает устройство /dev /fmem, похожее на /dev /mem, но без ограничений. Это устройство (физическое ОЗУ) можно скопировать с помощью dd или другого инструмента. Работает на ядрах Linux 2.6. Под GNU GPL.
  5. золотая рыбка
    Goldfish - это инструмент для судебной экспертизы Mac OS X, который используется только правоохранительными органами. Его основная цель - предоставить простой в использовании интерфейс для выгрузки системной оперативной памяти целевой машины через соединение Firewire. Затем он автоматически извлекает пароль для входа текущего пользователя и любые открытые фрагменты диалога AOL Instant Messenger, которые могут быть доступны. Правоохранительные органы могут связаться с goldfish.ae для получения информации о загрузке.

Смотрите также: Анализ памяти Linux.
Также есть GDB, обычно доступный в большинстве Linux.
Кроме того, вам всегда рекомендуется избегать записи поверх неизвестной памяти - это может привести к повреждению системы.

4

Волатильность, кажется, работает хорошо и совместима с Windows и Linux.

С их сайта:

Volatility поддерживает дампы памяти из всех основных 32- и 64-разрядных версий Windows и пакетов обновления, включая XP, 2003 Server, Vista, Server 2008, Server 2008 R2 и Seven. Независимо от того, используется ли дамп памяти в необработанном формате, аварийный дамп Microsoft, файл гибернации или снимок виртуальной машины, Volatility может работать с ним. Теперь мы также поддерживаем дампы памяти Linux в формате raw или LiME и включаем 35+ плагинов для анализа 32- и 64-битных ядер Linux с 2.6.11 - 3.5.x и таких дистрибутивов, как Debian, Ubuntu, OpenSuSE, Fedora, CentOS и Mandrake. Мы поддерживаем 38 версий дампов памяти Mac OSX от 10.5 до 10.8.3 Mountain Lion, как 32-разрядных, так и 64-разрядных. Android-телефоны с процессорами ARM также поддерживаются.

3

Second Look - это хороший и простой способ выгрузить память в Linux: http://secondlookforensics.com/.

Также есть недавно выпущенный модуль ядра, который вы можете попробовать под названием LiME: http://code.google.com/p/lime-forensics/

0

В качестве подтверждения я смог сбросить память моей виртуальной машины CentOS 7.x следующим образом:

$ 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......|

Учитывая, что 55aah происходит в диапазоне c0000h-effffh, это, вероятно, заголовок расширения PNP:

Справка: спецификация загрузки BIOS

3.3 Устройства с заголовками расширения PnP

Все устройства IPL с дополнительными ПЗУ должны содержать действительный заголовок дополнительного ПЗУ, который находится между адресами системной памяти C0000h и EFFFFh на границе 2К и начинается с 55AAh. Загрузка устройства может контролироваться только при наличии заголовка расширения PnP. Заголовок расширения, адрес которого находится в заголовке стандартного дополнительного ПЗУ со смещением +1Ah, содержит важную информацию, используемую для настройки устройства. Он также содержит указатели на код в дополнительном ПЗУ устройства (BCV или BEV), которое BIOS будет вызывать для загрузки с устройства. См. Приложение A для структуры заголовка расширения PnP. Существует два способа загрузки устройства IPL с заголовком расширения PnP. Он должен содержать BCV или BEV.

Рекомендации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .