HTML Diff
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=&lt;source&gt; of=&lt;destination&gt; bs=&lt;byte size&gt;<p>К примеру, для создания копии HDD с размером кластера 512 байт:</p>
11 dd if=&lt;source&gt; of=&lt;destination&gt; bs=&lt;byte size&gt;<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