Уроки форензики. Создаем профиль Volatility для анализа инцидентов в Linux

Содержание статьи

  • Сбор дампа памяти в Linux
  • Создаем профиль для Volatility 2
  • DWARF-файл
  • System.map
  • Структура профиля
  • Собираем профиль вручную
  • Собираем профиль при помощи Docker
  • Создание профиля для Volatility 3
  • Вручную
  • При помощи Docker
  • Заключение

Инс­тру­мент Volatility дав­но стал стан­дартом в циф­ровой кри­мина­лис­тике, но его эффектив­ность нап­рямую зависит от кор­рек­тно­го про­филя опе­раци­онной сис­темы, который выс­тупа­ет «перевод­чиком» меж­ду сырыми дан­ными памяти и понят­ной челове­ку информа­цией. В этой статье мы соз­дадим такой про­филь для работы в Linux.

В сов­ремен­ной циф­ровой кри­мина­лис­тике ана­лиз опе­ратив­ной памяти — это клю­чевой этап рас­сле­дова­ния инци­ден­тов. Он поз­воля­ет обна­ружить сле­ды вре­донос­ного ПО, извлечь пароли, вос­ста­новить скры­тые про­цес­сы и даже реконс­тру­иро­вать дей­ствия зло­умыш­ленни­ка. Как раз с этим и помога­ет Volatility.

Ес­ли для Windows готовые про­фили для Volatility дос­тупны «из короб­ки», то в Linux всё ина­че. Каж­дый дис­три­бутив и вер­сия ядра тре­буют соз­дания уни­каль­ного про­филя, что час­то ста­новит­ся кам­нем прет­кно­вения для нович­ков. Без это­го шага Volatility прос­то не смо­жет интер­пре­тиро­вать струк­туры дан­ных в дам­пе памяти, что дела­ет ана­лиз невоз­можным.

Для начала раз­берем, как соз­дать дамп опе­ратив­ной памяти в Linux.

 

Сбор дампа памяти в Linux

Пе­ред тем как прис­тупить к соз­данию про­филей для Volatility, важ­но осво­ить тех­ники сбо­ра дам­пов опе­ратив­ной памяти в Linux. Это мож­но сде­лать с помощью раз­ных инс­тру­мен­тов, таких как LiME (Linux Memory Extractor) и AVML (Acquire Volatile Memory for Linux).

При­мер исполь­зования LiME:

insmod lime.ko "path=/tmp/memory_dump.lime format=lime"

Пос­ле выпол­нения этой коман­ды дамп памяти будет сох­ранен в файл /tmp/memory_dump.lime.

Вто­рой популяр­ный инс­тру­мент для сбо­ра дан­ных из опе­ратив­ной памяти Linux-сис­тем — AVML, написан­ный на язы­ке Rust. AVML пред­назна­чен для работы в поль­зователь­ском прос­транс­тве (userland) и может быть раз­вернут как ста­тичес­кий бинар­ный файл.

Этот инс­тру­мент поз­воля­ет собирать дан­ные из памяти без пред­варитель­ного зна­ния о дис­три­бути­ве и вер­сии ядра, что дела­ет его уни­вер­саль­ным и удоб­ным для исполь­зования в раз­ных сце­нари­ях, таких как ана­лиз сбо­ев сис­темы или циф­ровая кри­мина­лис­тика.

AVML исполь­зует нес­коль­ко источни­ков для сбо­ра дан­ных из памяти, вклю­чая:

  • /dev/crash — пре­дос­тавля­ет дос­туп к физичес­кой памяти с вырав­нивани­ем по стра­ницам;
  • /proc/kcore — вир­туаль­ный дамп памяти ядра в фор­мате ELF;
  • /dev/mem — дос­туп к физичес­кой памяти (в режиме толь­ко для чте­ния).

Сле­дующая коман­да соз­даст файл с дам­пом опе­ратив­ной памяти сис­темы:

sudo ./avml memory.raw

К сожале­нию, может быть так, что тебе дали дамп на ана­лиз, но без ука­зания вер­сии ядра и ком­пилято­ра.

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *