Расследуя взлом системы можно столкнутся
с ситуацией, когда скомпрометированная
система еще не выключена пользователем или
администратором. На самом деле это
уникальный шанс собрать много важной
информации, которая после перезагрузки
будет потеряна. Можно узнать о запущенных
процессах, открытых ТСР/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

Ручная распаковка. Вскрываем кастомный пакер на примере вымогателя GlobeImposter 2.0

При реверсе вирусов зачастую обнаруживается, что малварь накрыта какой-нибудь «навесной» з…