0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: информационная безопасность, линукс, безопасность linux-систем, администрирование linux, дампы, образы</p>
1
<p>Теги: информационная безопасность, линукс, безопасность linux-систем, администрирование linux, дампы, образы</p>
2
<p>Друзья, сегодня разберём некоторые инструменты для сбора артефактов со скомпрометированных Linux-систем и создадим дампы (образы) жёсткого диска, оперативной памяти, сетевого стека. В ход пойдут только самые известные, проверенные и простые для использования утилиты.</p>
2
<p>Друзья, сегодня разберём некоторые инструменты для сбора артефактов со скомпрометированных Linux-систем и создадим дампы (образы) жёсткого диска, оперативной памяти, сетевого стека. В ход пойдут только самые известные, проверенные и простые для использования утилиты.</p>
3
<p>Ну, что погнали!</p>
3
<p>Ну, что погнали!</p>
4
<h2>Общий чек-лист проверки</h2>
4
<h2>Общий чек-лист проверки</h2>
5
<p>Собственно говоря, для поиска и сбора криминалистических доказательств мы для начала создадим образы (дампы) следующих объектов наших систем: -<strong>оперативная память</strong>(системные и пользовательские процессы, демоны, возможно, запущенный вредоносный код и т. д.); -<strong>жёсткий диск</strong>(посекторная копия HDD, включающая уделённые партиции, неразмеченные области диска, потёртые файлы, скрытые файлы и директории и т. д.); -<strong>сетевой стек</strong>(поднятые коннекты, открытые порты, "неизвестные" сервисы на портах, паразитный трафик).</p>
5
<p>Собственно говоря, для поиска и сбора криминалистических доказательств мы для начала создадим образы (дампы) следующих объектов наших систем: -<strong>оперативная память</strong>(системные и пользовательские процессы, демоны, возможно, запущенный вредоносный код и т. д.); -<strong>жёсткий диск</strong>(посекторная копия HDD, включающая уделённые партиции, неразмеченные области диска, потёртые файлы, скрытые файлы и директории и т. д.); -<strong>сетевой стек</strong>(поднятые коннекты, открытые порты, "неизвестные" сервисы на портах, паразитный трафик).</p>
6
<p>В рамках самой операционной системы мы будем обращать особое внимание в первую очередь на: - список пользователей, группы, привилегии; - запущенные от имени root процессы; - задачи, запускаемые по расписанию (cron jobs); - файлы с установленным битом<a>SUID и SGID</a>; - состав файла<a>/etc/sudoers</a>; - скрытые файлы и директории; - файлы, открытые на чтение в системе; - сетевые интерфейсы, соединения, порты, таблицу маршрутизации; - логи iptables,<a>fail2ban</a>(Reports, Alarms, Alerts); - конфигурацию<a>/etc/ssh/sshd_config</a>; - логи демона Syslog на<a>типичные алерты</a>; - состояние<a>SELinux</a>; - список загруженных модулей ядра.</p>
6
<p>В рамках самой операционной системы мы будем обращать особое внимание в первую очередь на: - список пользователей, группы, привилегии; - запущенные от имени root процессы; - задачи, запускаемые по расписанию (cron jobs); - файлы с установленным битом<a>SUID и SGID</a>; - состав файла<a>/etc/sudoers</a>; - скрытые файлы и директории; - файлы, открытые на чтение в системе; - сетевые интерфейсы, соединения, порты, таблицу маршрутизации; - логи iptables,<a>fail2ban</a>(Reports, Alarms, Alerts); - конфигурацию<a>/etc/ssh/sshd_config</a>; - логи демона Syslog на<a>типичные алерты</a>; - состояние<a>SELinux</a>; - список загруженных модулей ядра.</p>
7
<h2>Снимаем образ HDD-диска</h2>
7
<h2>Снимаем образ HDD-диска</h2>
8
<p>Посекторную копию жёсткого диска можно вполне снять, не прибегая к дополнительным утилитам. Мы будем использовать старую и проверенную в работе нативную тулзу<a>dd</a>. Она позволяет созвать точные копии "bit-by-bit" целых дисков, отдельных партиций и даже просто файлов.</p>
8
<p>Посекторную копию жёсткого диска можно вполне снять, не прибегая к дополнительным утилитам. Мы будем использовать старую и проверенную в работе нативную тулзу<a>dd</a>. Она позволяет созвать точные копии "bit-by-bit" целых дисков, отдельных партиций и даже просто файлов.</p>
9
<p>Но первоначально запросим у системы полный список партиций с помощью команды<a>fdisk</a>:</p>
9
<p>Но первоначально запросим у системы полный список партиций с помощью команды<a>fdisk</a>:</p>
10
<p>Базовый синтаксис вызова dd выглядит так:</p>
10
<p>Базовый синтаксис вызова dd выглядит так:</p>
11
dd if=<source> of=<destination> bs=<byte size><p>К примеру, для создания копии HDD с размером кластера 512 байт:</p>
11
dd if=<source> of=<destination> bs=<byte size><p>К примеру, для создания копии HDD с размером кластера 512 байт:</p>
12
dd if=/dev/sda1 of=/dev/sdb1 bs=512<p>В процессе копирования HDD могут быть повреждённые сектора. Чтобы программа не запнулась об них, остановив свою работу, необходимо добавить дополнительный ключ<strong>noerror</strong>:</p>
12
dd if=/dev/sda1 of=/dev/sdb1 bs=512<p>В процессе копирования HDD могут быть повреждённые сектора. Чтобы программа не запнулась об них, остановив свою работу, необходимо добавить дополнительный ключ<strong>noerror</strong>:</p>
13
dd if=/dev/sda1 of=/dev/sdb1 bs=512 noerror<p>Однако мировые best practices рекомендуют нам использовать усовершенствованный вариант предыдущей утилиты под названием<a>dcfldd</a>. Эта тулза разработана в компьютерной судебной лаборатории<a>DCFL</a>(Defense Computer Forensics Laboratory) и имеет ряд опций, специально заточенных для снятия образа в целях криминалистического анализа. Так, под капотом у<strong>dcfldd</strong>имеется встроенная возможность хеширования (hashing) копируемых данных и функция проверки целостности данных (аутентификации). Помимо этого, отображается прогресс создания дампа, действия заносятся в лог-файл, а контрольные суммы (<a>MD5</a>) сохраняются в отдельный файл.</p>
13
dd if=/dev/sda1 of=/dev/sdb1 bs=512 noerror<p>Однако мировые best practices рекомендуют нам использовать усовершенствованный вариант предыдущей утилиты под названием<a>dcfldd</a>. Эта тулза разработана в компьютерной судебной лаборатории<a>DCFL</a>(Defense Computer Forensics Laboratory) и имеет ряд опций, специально заточенных для снятия образа в целях криминалистического анализа. Так, под капотом у<strong>dcfldd</strong>имеется встроенная возможность хеширования (hashing) копируемых данных и функция проверки целостности данных (аутентификации). Помимо этого, отображается прогресс создания дампа, действия заносятся в лог-файл, а контрольные суммы (<a>MD5</a>) сохраняются в отдельный файл.</p>
14
<p>Пример выполнения команды:</p>
14
<p>Пример выполнения команды:</p>
15
dcfldd if=/dev/sda1 hash=md5 of=/media/forensic_disk_image.dd bs=512 noerror<h2>Делаем дамп оперативной памяти (RAM)</h2>
15
dcfldd if=/dev/sda1 hash=md5 of=/media/forensic_disk_image.dd bs=512 noerror<h2>Делаем дамп оперативной памяти (RAM)</h2>
16
<p>Следующим шагом после снятия дампа HDD мы приступаем к формированию образа оперативной памяти. И, как в случае с жёстким диском, существует несколько способов решить эту задачу. Среди вариантов можно выбрать использование нативного модуля ядра с названием<a>Linux Memory Extractor</a>(LiME), скрипт<a>Linux Memory Grabber</a>, который не требует установки и который можно запускать, к примеру, с USB-носителя, и связку утилит<a>lmap и pmem</a>, являющихся частью пакета<strong>Rekall</strong>, которые я буду дальше использовать.</p>
16
<p>Следующим шагом после снятия дампа HDD мы приступаем к формированию образа оперативной памяти. И, как в случае с жёстким диском, существует несколько способов решить эту задачу. Среди вариантов можно выбрать использование нативного модуля ядра с названием<a>Linux Memory Extractor</a>(LiME), скрипт<a>Linux Memory Grabber</a>, который не требует установки и который можно запускать, к примеру, с USB-носителя, и связку утилит<a>lmap и pmem</a>, являющихся частью пакета<strong>Rekall</strong>, которые я буду дальше использовать.</p>
17
<p>Пара слов о<a>Rekall</a>. Это отдельная ветка развития известного фреймворка<a>Volatility Framework</a>, написанная на Python и заточенная под особенности сбора данных из под LiveCD форензик-дистрибутивов.</p>
17
<p>Пара слов о<a>Rekall</a>. Это отдельная ветка развития известного фреймворка<a>Volatility Framework</a>, написанная на Python и заточенная под особенности сбора данных из под LiveCD форензик-дистрибутивов.</p>
18
<p>Итак, чтобы подготовить тулзу к работе, переходим в каталог ../rekall/tools/linux/:</p>
18
<p>Итак, чтобы подготовить тулзу к работе, переходим в каталог ../rekall/tools/linux/:</p>
19
cd rekall/tools/linux/ make<p>Грузим драйвер ядра<strong>pmem.ko</strong>в оперативную память:</p>
19
cd rekall/tools/linux/ make<p>Грузим драйвер ядра<strong>pmem.ko</strong>в оперативную память:</p>
20
<p>Проверяем инициализацию драйвера следующей командой:</p>
20
<p>Проверяем инициализацию драйвера следующей командой:</p>
21
<p>После этого драйвер создаёт файл-контейнер под наш будущий образ RAM:</p>
21
<p>После этого драйвер создаёт файл-контейнер под наш будущий образ RAM:</p>
22
<p>Теперь с помощью всё той же утилиты<strong>dd</strong>создаём сам образ оперативной памяти системы:</p>
22
<p>Теперь с помощью всё той же утилиты<strong>dd</strong>создаём сам образ оперативной памяти системы:</p>
23
dd if=/dev/pmem of=forensic_RAM_image.raw<p>Ну и после завершения работы выгружаем драйвер:</p>
23
dd if=/dev/pmem of=forensic_RAM_image.raw<p>Ну и после завершения работы выгружаем драйвер:</p>
24
<p>Ну, вот дело сделано!</p>
24
<p>Ну, вот дело сделано!</p>
25
<p>Но это ещё не всё, во второй части статьи поговорим про сетевой трафик, смонтируем образы в исследовательскую систему и выполним анализ образа жёсткого диска. Следите за новостями!</p>
25
<p>Но это ещё не всё, во второй части статьи поговорим про сетевой трафик, смонтируем образы в исследовательскую систему и выполним анализ образа жёсткого диска. Следите за новостями!</p>
26
26