Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3506 / 793 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 21:

Некоммерческие наборы инструментов, предназначенные для судебного дублирования

Судебное дублирование #1: точное двоичное дублирование жестких дисков

Чтобы создать зеркальную копию изображения жесткого диска, используя dd, вы должны сообщить утилите, какой исходный жесткий диск будет входным файлом, а какой - выходным (файл улик), на котором вы будете хранить изображение.

Вы можете определить, какой жесткий диск является источником, а какой адресатом, изучая вывод команды dmesg. И в системе Linux и в FreeBSD команда dmesg выводит информацию на консоль во время загрузки машины (и любые другие сообщения консоли, которые появляются после загрузки). Определить, "кто есть кто" среди жестких дисков не сложно; скорее, вы захотите подключиться к жесткому диску-хранилищу, созданному другим изготовителем, нежели к исходному жесткому диску, и тогда станет очевидно, какой из дисков является источником, а какой адресатом. После того как вы очистили жесткий диск адресата в /dev/hdd (это обсуждается позже в разделе "dd: инструмент очистки жесткого диска"), можно использовать следующий синтаксис для создания судебной копии исходного жесткого диска, подключенного к /dev/hdc в Linux.

forensic# dd, if =/dev/hdc =/dev/hdd bs=1024 conv=noerror, notrunc, sync
Внимание. Этот процесс способен удалять все данные, структуры файловых систем и не распределенное пространство с вашего исходного диска. Будьте очень осторожны при назначении источника и адресатов в команде dd.
Судебное дублирование #2: создание локального файла улик

В первом методе мы обработали побитовую копию с исходного жесткого диска и расположили ее поверх жесткого диска адресата. Используя этот метод, мы не можем просто скопировать улики с одного носителя на другой. Метод, который способствует более простому управлению уликами, заключается в создании логического файла, который является побитовым представлением исходного жесткого диска. Очевидно, что никогда не следует сохранять файл улик на исходном жестком диске, так как мы можем уничтожить улики. Следующая команда демонстрирует создание судебной копии исходного жесткого диска, подключенного к /dev/hdc, в обыкновенный файл, расположенный в каталоге /mnt/storage/disk.bin в системе Linux.

Внимание. Этот процесс способен удалять все данные, структуры файловых систем и не распределенное пространство с вашего исходного диска. Будьте очень осторожны при назначении источника и адресата в команде dd.
forensic# dd, if =/dev/hdc =/mnt/storage/disk.bin bs=1024 
  conv=noerror,notrunc,sync

Процесс создания копии в других разновидностях операционных систем Unix подобен показанному выше. Единственное различие состоит в указании правильного имени файла устройства для ввода. Следующая команда демонстрирует дублирование исходного жесткого диска системы Windows 98 в системе FreeBSD. Исходный диск связан с /dev/ad0, а результатом является файл улик, расположенный в каталоге /mnt/storage/disk.bin.

forensic# dd if=/dev/ad0 of=/mnt/storage/disk.bin bs=1024 
  conv=notrunc,noerror,sync


20044080+0 records in
20044080+0 records out
20525137920 bytes transferred in 5665.925325 secs 
  (3622557 bytes/sec)

forensic# cd /mnt/storage

forensic# ls -al
total 20048997
drwxr-xr-x      2   root    wheel           512 Jan 15 13:30    .   
drwxr-xr-x      7   root    wheel           512 Jan 15 11:58    ..  
-rw-r--r--      1   root    wheel       20525237920 Jan 15 13:30    disk.bin
Внимание. У некоторых файловых систем есть ограничения на размер файла. Например, более старые файловые системы способны поддерживать только 2-гигабайтные файлы, тогда как файлы в более новых файловых системах могут быть больше. Не забудьте проверить ограничения файловой системы вашего адресата прежде, чем начать отображение.

В предыдущем примере, если бы в процессе дублирования произошла ошибка, число входящих записей ( in ) не соответствовало бы числу выходящих записей ( out ). Например, если бы существовал один плохой блок, вывод команды dd выглядел бы так:

forensic# dd if=/dev/ad0 of =/mnt/storage/disk.bin bs=1024 
  conv=notrunc, noerror

20044079+1 records in
20044080+0 records out

Здесь поле +1 указывает количество записей, которые читались, но имели ошибки. Поскольку мы задали параметры conv=notrunc, noerror, sync, в случае ошибки утилита dd дополнит соответствующий блок в выводе нулями. Так как размер блока равен 1024 бита (указан с помощью параметра bs), это значит, что в нашей судебной копии 1024 байта данных не надежны. Если бы мы вычислили контрольную сумму MD5 для /dev/ad0 и /mnt/storage/disk.bin, весьма вероятно, что эти два файла не соответствовали бы друг другу. Короче говоря, такой вывод является причиной того, что нам требуется выполнить команду script, чтобы задокументировать эту ошибку в своем отчете о расследовании.

Иногда следователь создает много файлов улик для единственного исходного жесткого диска или раздела. Обычно это происходит тогда, когда следователь хочет, чтобы файлы улик были достаточно маленькими и могли поместиться на архивном компакт-диске, или когда файловая система хоста не поддерживает файлы большого размера. Такого рода проблема может быть решена с помощью комбинации ключей skip и count. Ключ skip задает позицию во входном файле, с которой утилита dd начнет копирование. Ключ count задает количество блоков, обозначенных ключом bs, которые утилита dd будет читать из исходного входного файла. Поэтому, при выполнении комбинации команд dd с увеличивающимся значением ключей skip и count будет создано несколько выходных файлов вывода, как можно видеть ниже.

forensic# dd if=/dev/hdc of=/mnt/storage/disk.1.bin 
  bs=1M skip=0 count=620 ¬ 
conv=noerror,notrunc,sync
forensic# dd if=/dev/hdc of=/mnt/storage/disk.2.bin 
  bs=1M skip=621 count=620 ¬ 
conv=noerror,notrunc,sync
forensic# dd if=/dev/hdc of=/mnt/storage/disk.3.bin 
  bs=1M skip=1241 count=620 ¬ 
conv=noerror,notrunc,sync
forensic# dd if=/dev/hdc of=/mnt/storage/disk.4.bin 
  bs=1M skip=1861 count=620 ¬ 
conv=noerror,notrunc,sync
Внимание. Если вы используете эти команды, то, вероятно, делите большую копию на несколько меньших частей для архивирования (на компакт-диске или другом носителе). Не забудьте проверить с помощью контрольной суммы MD5 (обсуждаемой ниже в этой лекции) комбинацию отдельных файлов после передачи их с одного носителя информации на другой.

Когда вам требуется снова собрать отдельные части копий, которые представляют исходный жесткий диск, для их анализа, используйте следующую команду.

forensic# cat disk.1.bin disk.2.bin disk.3.bin disk.4.bin 
  disk.whole.bin

И, наконец, вы можете ускорить процесс дублирования, изменяя размер блока. Поскольку секторы на диске занимают 512 байтов, то вы можете ускорить время чтения и записи, увеличив размер блока с помощью ключа bs. Следующая команда демонстрирует, как был ускорен процесс дублирования части внешнего жесткого диска в системе FreeBSD.

freebsd# /usr/bin/time -h dd if=/dev/ad0 of=test.bin bs=512 count=200000 ¬ conv=notrunc,noerror,sync

200000+0 records in
200000+0 records out
102400000 bytes transferred in 69.452716 secs (1474384 bytes/sec)
        1m9.51s real        0.28s user      8.46s sys

forensic# /usr/bin/time -h dd if=/dev/ad0 of=test.bin bs=1024 count=100000 ¬ conv=notrunc,noerror,sync

100000+0 records in
100000+0 records out
102400000 bytes transferred in 41.785020 secs (2450639 bytes/sec)
        41.79s real     0.20s user      4.42s sys

Возможно, вы не знакомы с командой time, которая просто помещает в вашу команду секундомер. В этом примере, команда time фиксирует продолжительность процесса дублирования от начала до конца и выдает реальное пользовательское и системное время. Заметьте, что реальное время уменьшилось, когда мы увеличили размер блока с 512 до 1024. Это произошло потому, что компьютер более эффективно читает (и пишет) за раз 1024 байта, чем 512 (для файла одного и того же размера). Предыдущими командами было скопировано только около 100Мб информации. Представьте себе эффективность копирования 80-гигабайтного жесткого диска при увеличении размера блока! Конечно, в какой-то момент вы почувствуете уменьшение отдачи и, возможно, захотите поэкспериментировать со своей аппаратурой и определить, что больше подходит для вашего конкретного случая.