Некоторые приёмы форензики под Linux | OTUS

Некоторые приёмы форензики под Linux

Pentest_Deep_28.11-5020-3b9316.png

Друзья, сегодня разберём некоторые инструменты для сбора артефактов со скомпрометированных Linux-систем и создадим дампы (образы) жёсткого диска, оперативной памяти, сетевого стека. В ход пойдут только самые известные, проверенные и простые для использования утилиты.

4382a89ad07a9b1f10fad_1-20219-bfb017.png

Ну, что погнали!

Общий чек-лист проверки

Собственно говоря, для поиска и сбора криминалистических доказательств мы для начала создадим образы (дампы) следующих объектов наших систем: — оперативная память (системные и пользовательские процессы, демоны, возможно, запущенный вредоносный код и т. д.); — жёсткий диск (посекторная копия HDD, включающая уделённые партиции, неразмеченные области диска, потёртые файлы, скрытые файлы и директории и т. д.); — сетевой стек (поднятые коннекты, открытые порты, «неизвестные» сервисы на портах, паразитный трафик).

В рамках самой операционной системы мы будем обращать особое внимание в первую очередь на: — список пользователей, группы, привилегии; — запущенные от имени root процессы; — задачи, запускаемые по расписанию (cron jobs); — файлы с установленным битом SUID и SGID; — состав файла /etc/sudoers; — скрытые файлы и директории; — файлы, открытые на чтение в системе; — сетевые интерфейсы, соединения, порты, таблицу маршрутизации; — логи iptables, fail2ban (Reports, Alarms, Alerts); — конфигурацию /etc/ssh/sshd_config; — логи демона Syslog на типичные алерты; — состояние SELinux; — список загруженных модулей ядра.

Снимаем образ HDD-диска

Посекторную копию жёсткого диска можно вполне снять, не прибегая к дополнительным утилитам. Мы будем использовать старую и проверенную в работе нативную тулзу dd. Она позволяет созвать точные копии "bit-by-bit" целых дисков, отдельных партиций и даже просто файлов.

Но первоначально запросим у системы полный список партиций с помощью команды fdisk:

 fdisk -l

Базовый синтаксис вызова dd выглядит так:

dd if=<source> of=<destination> bs=<byte size>

К примеру, для создания копии HDD с размером кластера 512 байт:

dd if=/dev/sda1 of=/dev/sdb1 bs=512

В процессе копирования HDD могут быть повреждённые сектора. Чтобы программа не запнулась об них, остановив свою работу, необходимо добавить дополнительный ключ noerror:

dd if=/dev/sda1 of=/dev/sdb1 bs=512 noerror

Однако мировые best practices рекомендуют нам использовать усовершенствованный вариант предыдущей утилиты под названием dcfldd. Эта тулза разработана в компьютерной судебной лаборатории DCFL (Defense Computer Forensics Laboratory) и имеет ряд опций, специально заточенных для снятия образа в целях криминалистического анализа. Так, под капотом у dcfldd имеется встроенная возможность хеширования (hashing) копируемых данных и функция проверки целостности данных (аутентификации). Помимо этого, отображается прогресс создания дампа, действия заносятся в лог-файл, а контрольные суммы (MD5) сохраняются в отдельный файл.

Пример выполнения команды:

dcfldd if=/dev/sda1 hash=md5 of=/media/forensic_disk_image.dd bs=512 noerror

Делаем дамп оперативной памяти (RAM)

Следующим шагом после снятия дампа HDD мы приступаем к формированию образа оперативной памяти. И, как в случае с жёстким диском, существует несколько способов решить эту задачу. Среди вариантов можно выбрать использование нативного модуля ядра с названием Linux Memory Extractor (LiME), скрипт Linux Memory Grabber, который не требует установки и который можно запускать, к примеру, с USB-носителя, и связку утилит lmap и pmem, являющихся частью пакета Rekall, которые я буду дальше использовать.

Пара слов о Rekall. Это отдельная ветка развития известного фреймворка Volatility Framework, написанная на Python и заточенная под особенности сбора данных из под LiveCD форензик-дистрибутивов.

Итак, чтобы подготовить тулзу к работе, переходим в каталог ../rekall/tools/linux/:

cd rekall/tools/linux/
make

Грузим драйвер ядра pmem.ko в оперативную память:

sudo insmod pmem.ko

Проверяем инициализацию драйвера следующей командой:

sudo lsmod

После этого драйвер создаёт файл-контейнер под наш будущий образ RAM:

/dev/pmem

Теперь с помощью всё той же утилиты dd создаём сам образ оперативной памяти системы:

dd if=/dev/pmem of=forensic_RAM_image.raw

Ну и после завершения работы выгружаем драйвер:

rmmod pmem

Ну, вот дело сделано!

Но это ещё не всё, во второй части статьи поговорим про сетевой трафик, смонтируем образы в исследовательскую систему и выполним анализ образа жёсткого диска. Следите за новостями!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто