Расследуя взлом системы можно столкнутся
с ситуацией, когда скомпрометированная
система еще не выключена пользователем или
администратором. На самом деле это
уникальный шанс собрать много важной
информации, которая после перезагрузки
будет потеряна. Можно узнать о запущенных
процессах, открытых ТСР/UDP портах,
содержание буферов, определить
установленные соединения, модули ядра и так
далее. Вся эта информация может помочь в
оффлайновом исследовании процедуры взлома
системы. Более того, если взлом произошел
относительно недавно, то можно определить
как и что делал хакер.

Иногда исследование "живой" ОС —
единственный способ собрать данные о
взломе, например некоторые LKM руткиты
загружаются только в память и не изменяют
никаких файлов. С другой стороны, методы
представленные ниже имеют много
ограничений и нарушают главное правило
исследования происшествия — не изменять состояния системы. Запуская тот или иной
инструмент на живой системе, создавая еще
один процесс, мы можем уничтожить следы
пребывания взломщика. К тому же возникает
проблема с достоверностью полученных
данных, ну да это в нашем случае не так важно.
Идеальным был бы вариант дампа памяти на
внешний носитель без участия ОС (неким hardware
девайсом, такая система существует на Sparc
машинах), однако для Intel и AMD пока это не
реализовано.

Окружение средой

Перед отбором данных от живой системы мы
должны подготовить почву для этого. Прежде
всего — запустить сетевой снифер, который
должен видеть потоки от и к взломанной
системе. Таким образом можно будет будет
обнаружить некоторые виды "неправильной"
активности, анализом сетевого трафика. Я
предлагаю использовать tcpdump, причем 
записывать пакеты в raw формате, для
ускорения быстродействия. Дальше я рекомендую
иметь бумажный список в котором были бы
перечислены все предпринимаемые шаги. Это
поможет избежать ошибок и вообще поможет с
пониманием если что-то пойдет не так.
Следующее — запись всех команд и собранных
данных, получаемых в процессе работы. Необходимо
присоединиться к хосту, однако писать в
него ничего не следует, как уже было сказано
это может уничтожить оставленные следы. Для
уменьшения воздействия данные нужно
сливать на другую машину. Это одно из самых
важных правил, хотя, наверное, и самое
трудное в выполнении. Если на взломанной
машине нет набора утилит для анализа, то
необходимо его подготовить.

Набор

Необходимо помнить, что в процессе сбора
данных необходимо придерживаться следующих
критериев:

  • Постараться не запускать программ на
    подопытной системе. Почему? Потому что
    хакер мог модифицировать системные
    утилиты (такие как netstat) и библиотеки (libproc),
    что сводит ценность полученных от них
    данных к нулю. необходимо заранее
    запастись уже откомпиленными
    инструментами.
  • Постараться не запускать программ,
    которые могут изменить мета-данные
    файлов и директорий.
  • Все результаты надо писать на удаленный
    компьютер. Можно использовать для этого
    netcat.
  • Для полной достоверности можно
    подсчитывать контрольные данные данных.
    Это гарантия того, что их не подменят.
    Лучше конечно делать это и на источнике
    данных, и на получателе. Иногда это
    невозможно, как в случае с /dev/mem.
  • Исходя из всего перечисленного можно
    понять, что утилиты не могут писать на
    диск или в свап-файл, однако это не всегда
    выполнимо. Об этом поговорим позже.

А сейчас могу привести пример
оптимального набора инструментов для
работы:

Программа Исходники и примечания
nc http://www.atstake.com/research/tools/network_utilities/nc110.tgz
Как делать: $tar zxvf nc110.tgz; make linux
Как проверить: file nc или ldd nc
dd http://www.gnu.org/software/fileutils/fileutils.html
datecat http://www.gnu.org/software/coreutils/
Как билдить: $ tar zxvf coreutils-5.0.tar.gz; configure CC="gcc -static",
make
Как првоерить: file date cat или ldd date cat
pcat http://www.porcupine.org/forensics/tct
Билд: $tar zxvf tct-1.14.tgz; make CC="gcc -static"
Проверка: file pcat или ldd pcat
Hunter.o http://www.phrack.org/phrack/61/p61-0x03_Linenoise.txt
Для большей "независимости"
модуля из исходников надо удалить
следующее:
#ifdef CONFIG_MODVERSIONS
#define MODVERSIONS
#include <linux/modversions.h>
#endif
Мы можем подгрузить модуль к другим
ядрам удалив MODVERSIONS.
Билд: $ gcc -c hunter.c -I/usr/src/linux/include/
insmod http://www.kernel.org/pub/linux/utils/kernel/modutils/
для ядра  2.4
Билд: $./configure-enable-insmod_static; make
Проверка: file insmod.static или ldd insmod.static
NetstatArproute http://freshmeat.net/projects/net-tools/
Билд: $bzip2 -d net-tools-1.60.tar.bz2; tar xvf
net-tools-1.60.tar.bz2; make config; make CC="gcc -static"
Проверка: file netstat arp route или ldd netstat arp route
dmesg http://ftp.cwi.nl/aeb/util-linux/util-linux-2.12.tar.gz
Билд: $./configure; make CC="gcc -static"
Проверка: file dmesg или ldd dmesg

Собрав все инструменты пишем их на CD.

Оставить мнение

Check Also

Плохая логика. Выполняем произвольный код в популярном сервере приложений Oracle WebLogic

Новая уязвимость в Oracle WebLogic позволяет выполнять произвольные команды на целевой сис…