Введение в форензику

Обложка поста

Перевод статьи «Introduction to computer forensics»

Компьютерная криминалистика (форензика) — прикладная наука о раскрытии преступлений, связанных с компьютерной информацией, об исследовании цифровых доказательств, методах поиска, получения и закрепления таких доказательств. Она состоит из трёх частей:

  • Сбор данных — процесс получения информации из первоисточника без их повреждения или изменения. Для этого есть множество инструментов в зависимости от ОС и других особенностей, в статье рассмотрим инструменты на основе Linux.
  • Сохранение данных — полученные цифровые улики должны быть сохранены в своем первоначальном состоянии, используя криптографические алгоритмы хэширования.
  • Анализ данных — интерпретация данных и извлечение информации из них.

Сбор данных

Если подозреваемый установил руткиты для уничтожения улик по команде, существует вероятность потери важного контента. В таких случаях применяется цепочка хранения доказательств — документ с информацией о том, как обрабатывались улики, для дальнейшей отчётности. Цепочка начинается с обработки улик.

Перед началом нужна подготовка:

  • загрузочный диск или флешка, поскольку инструментам подозреваемых нельзя доверять;
  • мощная машина для следователя.

Сначала нужно получить данные, которые наиболее изменчивы. На самом деле они изменяются уже при их сборе, поэтому надо постараться оставить как можно меньше следов. Это сложная задача, поскольку обычные инструменты могут внести изменения в исследуемую среду. Например, использование команды cp изменит время последнего доступа к исходному файлу. Рассмотрим некоторые инструменты.

$ lsof

Эта команда выведет список всех открытых файлов, принадлежащих любым активным процессам. Её можно использовать с различными параметрами. Например, lsof -i IP_adress будет перечислять список интернет-соединений, принадлежащих данному IP-адресу. Она также поможет найти вредоносные процессы, которые используют скрытые дисковые пространства.

$ nc

Netcat использует сетевые подключения для чтения и записи через протоколы TCP или UDP. Эту команду можно использовать для передачи или извлечения данных на рабочую станцию эксперта.

Также стоит взглянуть на uname -a, ifconfig, date и uptime. Всё это может пригодиться для сбора улик. Можно проверить, подключён ли злоумышленник к целевой машине, используя w.

Для считывания памяти можно использовать limeзагружаемый модуль ядра, который позволяет извлекать данные из энергозависимой памяти Linux.

Для энергонезависимых данных следует использовать dd. Этот инструмент встроен в большинство систем Linux. Допустим, для подготовки экспертного диска и затирания /dev/hda одними нулями можно использовать dd if=/dev/zero of=example. Скопировать улики можно следующим образом: dd if=stuff of=evidence/stuff.dd. Если использовать dd с netcat, сначала устанавливается слушатель, а затем ему отправляются данные.

Терминал слушателя:

$ nc -l 8888 > nc_info

Терминал отправителя:

$ dd if=stuff | nc localhost 8888

Сохранение данных

Для сохранения доказательств экспертиза использует криптографические алгоритмы хеширования . Суть компьютерной криминалистики — доказать, что улики совпадают с первоисточником, для этого достаточно вычислить хеши. Если хеши одинаковы, два файла должны быть одинаковыми.

Для этого хорошо подойдёт MD5 или SHA. Рассмотрим команду md5sum. Создадим файл ex_file, содержащий строку «hello there». Прочтём исходное содержимое с помощью cat, а затем вычислим хеш.

$ echo "hello there" > ex_file
$ cat ex_file
hello there
$ md5sum ex_file
2d01d5d9c24034d54fe4fba0ede5182d  ex_file

Если изменить файл, например, добавив в строку «hiya», хеш изменится.

$ echo "hiya" >> ex_file
$ cat ex_file
hello there
hiya
$ md5sum ex_file
ddfdaf6c131be9a522038488f6823537  ex_file

Совсем другое дело, если есть два файла с одинаковым содержимым, но разными именами.

$ echo "hello world" > file1
$ echo "hello world" > file2
$ md5sum file1
6f5902ac237024bdd0c176cb93063dc4  file1
$ md5sum file2
6f5902ac237024bdd0c176cb93063dc4  file2

Как можно видеть, хеш одинаковый. Другим примером этого является изменение разрешений.

$ chmod g-r file2
$ md5sum file2
6f5902ac237024bdd0c176cb93063dc4  file2

Хеш остался прежним.

Анализ данных

Получение полезной информации из данных является важной задачей. Начать можно с определения разделов с помощью fdisk our_device. После этого можно использовать dd для выделения наиболее примечательных разделов. С помощью инструмента Sleuthkit получаем файл с информацией о разделах (команда mmls our_file.dd). Можно определить тип носителя с помощью опции -t (команда mmls -t dos our_file.dd). Для монтирования образов можно использовать mount. Монтирование должно быть только в режиме чтения (read-only).

mount –o ro,loop /my_file.dd/mnt/example

Не менее важная вещь — MAC. Этот инструмент даёт доступ к нужной информации, например, дате создания или изменения файлов. Такую проверку следует проводить в начале экспертизы, так как такая информация очень чувствительна к изменениям. Используйте комбинацию команд fls и mactime.

$ fls -f ext3 -m "/" -r images/root.dd > data/body
$ mactime -b filename [time]

Мы рассмотрели лишь малую часть инструментов для компьютерной криминалистики. В форензике очень важно умело владеть инструментами операционной системы. Если вы хотите лучше изучить Linux, советуем эту подборку книг.

Не смешно? А здесь смешно: @ithumor