Содержание статьи
Цели и методы форензики
Как ты уже мог узнать из предыдущей статьи в теме этого номера, методы форензики подразделяются на две большие группы: анализ включенной системы (например, работающего сервера) и выключенной (например, изъятых накопителей). Их еще называют динамическим и статическим анализом.
Эти два метода в корне отличаются не только подходами, но и теми данными, которые удается собрать. В первом случае это наблюдение за атакованной системой в реальном времени. Есть возможность непосредственно оценить дисковую и сетевую активность, получить список запущенных процессов, открытых портов, просмотреть залогиненных пользователей, а главное — получить из оперативной памяти те данные, которые при отключении питания исчезнут бесследно. Например, ключи трояна-шифровальщика, расшифрованную копию смонтированных криптоконтейнеров и даже доступ к удаленным ресурсам, если на них в текущем сеансе была выполнена авторизация. После выключения компьютера вся эта информация окажется безвозвратно утерянной, а криптографические контейнеры останутся лишь зашифрованными файлами на диске.
Наборы для анализа «вживую» каждый специалист формирует, исходя из собственных потребностей. Скажем, админу достаточно уметь быстро поднять сервисы, упавшие после атаки, и восстановить продуктив из бэкапа. Уже потом в спокойной обстановке он, может быть, и глянет логи, но вряд ли найдет в них что-то ценное. Айпишники китайских прокси? Признаки входа на корпоративный сайт через дырявую CMS, которую он хотел пропатчить месяц назад? Если все бизнес-процессы идут своим чередом, дальнейшее расследование КИ для него теряет смысл.
Иные подходы у отдела расследования компьютерных инцидентов антивирусной компании (который вместе с правоохранительными органами анализирует свежий случай массового заражения) или FinCERT, распутывающей APT в какой-нибудь платежной системе. Здесь совсем другие приоритеты: нужно собрать максимум информации, которую затем можно будет использовать в суде. Обнаружить C&C-серверы ботнета, найти источник угрозы, детально восстановить сценарий взлома и выйти на его организаторов (в идеале — с их последующим арестом). Для этого требуется тщательно собрать доказательную базу, но проблема в том, что анализ системы почти всегда вносит в нее искажения. Задача специалиста по компьютерной криминалистике — свести их к минимуму и учесть при дальнейшем анализе.
![](/wp-content/themes/engine/img/warning-icon.jpg)
WARNING
Криминалистический анализ связан с доступом к персональным данным и коммерческой тайне. Для его проведения на чужой системе требуется лицензия.
![Загрузка ... Загрузка ...](https://xakep.ru/wp-content/plugins/wp-polls/images/loading.gif)
Как не наследить следопыту
Первое правило форензики — не вносить искажений в оригинал. Для этого все действия выполняются с точной (посекторной) копией исследуемой файловой системы и полными дампами оперативной памяти.
К сожалению, на практике этот принцип часто нарушается из-за незнания особенностей работы ОС, в том числе Live-дистрибутивов. Для удобства во многих из них по умолчанию активирована функция автоматического подключения всех обнаруженных дисков. Особенно этим грешит Windows (включая сборки на основе PE), которая создает на каждом диске временные файлы и служебные каталоги (System Volume Information, $Recycle.Bin и так далее), но и в Linux проблем хватает.
Во многих загрузочных дистрибутивах для форензики на основе Linux дисковые разделы монтируются с опцией -o ro
. Считается, что этого достаточно для предотвращения случайной записи. Однако даже если для пользователя диск выглядит как подключенный в режиме «только чтение», ядро ОС и драйверы файловой системы все равно могут изменять на нем служебные данные — например, время последнего обращения к файлу.
По умолчанию среди параметров монтирования указан atime
, что означает обновлять атрибут «время последнего доступа» при любом обращении к файлам. Для форензики разумнее использовать noatime
.
Другую проблему представляют некорректно размонтированные разделы, что часто случается при изъятии дисков во время «маски-шоу». Перед следующим монтированием поврежденная файловая система будет проверена и fsck попытается автоматически устранить все найденные ошибки. Например, программа исправит «подвисшие» индексные дескрипторы (которые описывают файлы, удаленные открытыми).
Собственно говоря, драйверы всех журналируемых файловых систем (ext3/4, ReiserFS, XFS, NTFS и других) игнорируют опцию -o ro
при системных обращениях к диску. Чтобы отучить их смотреть журнал и пытаться внести исправления, лучше монтировать исследуемые разделы с опцией ro,noload
, ro,nolog
или ro,norecovery
— в зависимости от типа файловой системы, однако и это не панацея.
Непреднамеренная запись на исследуемый накопитель во время анализа все равно остается возможна, причем еще на этапе запуска Live-дистрибутива. Например, при поиске загрузочного носителя, записи драйверов в initramfs и создании swap-файла или автоматическом монтировании обнаруженных дисковых разделов (в том числе для поиска Root FS банальным перебором всех подключенных дисков). Это одна из причин физически подключать исследуемый накопитель уже после загрузки Live-дистрибутива.
Варианты решения проблемы самовольной записи на исследуемый диск зависят от особенностей дистрибутива и самого устройства. Например, тома ext3 и ext4 можно смонтировать как нежурналируемые (ext2).
Долгое время для неразрушающего анализа жестких дисков считалось достаточным подключать их как блочное устройство в режиме «только чтение»:
blockdev --setro /dev/sdb2 (вместо sdb2 укажи актуальное обозначение диска)
Казалось бы, все верно: blockdev использует системный вызов для изменения флага ядра, который проверяется на уровне файловой системы. Если этот флаг установлен, то он отключает операции записи в ФС, причем не только пользовательские, но и системные (журналирование, восстановление, перезапись суперблока). Такой метод применяется в большинстве дистрибутивов для форензики.
Однако на практике некорректно написанный драйвер ФС все равно может пропустить эту проверку и выполнить операции записи.
Поэтому использование blockdev в режиме «только чтение» гарантированно работает только для приложений, запускаемых из userspace, обращения которых проверяет драйвер, но не для ядра ОС и самих драйверов.
Самый надежный вариант — поместить между анализируемым диском и драйвером ФС виртуальное блочное устройство loop device. Оно не пропустит низкоуровневые команды и не даст системе тихо модифицировать исследуемый диск.
mount -o ro,loop /dev/sdb2 dir (здесь dir — произвольное имя каталога)
Аналогично метод работает с образами дисков.
mount -o ro,loop diskimage.dd dir
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»