В лекции "Коммерческие наборы инструментов для судебного дублирования" было рассмотрено несколько наборов инструментов, выполняющих судебное дублирование, которые распространяются на коммерческой основе. Набор инструментов, обсуждаемый в этой лекции, может быть собран бесплатно. За короткое время вы можете легко им овладеть.
В связи с быстрым распространением операционных систем с открытым исходным кодом, типа Linux, dd, losetup, vnconfig и md5sum могут использоваться для расследования инцидентов так же эффективно, как их коммерческие аналоги.
В этой лекции говорится об использовании этих инструментальных средств и показывается, что они являются важным дополнением к комплекту инструментов эксперта. Поскольку эти инструментальные средства бесплатны, а результаты, полученные их методами дублирования, можно импортировать почти в любой набор судебного анализа, то вы можете предпочесть использование этих средств любым другим. Однако важно обратить внимание на то, что для использования этих инструментальных средств вам потребуется больше опыта и некоторые знания технических деталей файловой системы.
Аналогично обсуждавшейся в предыдущей лекции необходимости в надежной загрузочной дискете (или компакт-диске), судебное дублирование с некоммерческим программным обеспечением предъявляет те же самые требования. Поскольку Linux - операционная система с открытым исходным кодом, было создано много успешных разработок, заставивших Linux выполняться с компакт-дисков или дискет без обращения к жесткому диску. Мы предлагаем вам испробовать систему Trinux, которая распространяется как система Linux, предназначенная для работы с компакт-диска. Операционную систему Trinux можно исследовать на сайте http://trinux.sourceforge.net. Кроме того, аналогичный вариант системы FreeBSD предлагается на сайте http://sourceforge.net/projects/freebsdtogo/ и имеет подходящее название: FreeBSD To Go (передвижная FreeBSD).
На приведенной схеме этапов расследования мы все еще находимся на стадии судебного дублирования.

Инструмент dd используется для побитного копирования одного файла в другой. Копирование битов таким способом является основой всех инструментальных средств судебного дублирования. Инструмент dd универсален, а его исходный текст доступен публике. Кроме того, dd может компилироваться на почти любой платформе Unix. В этом разделе обсуждаются методы, которые может реализовать инструмент dd для выполнения судебного дублирования.
Инструмент .
Опции командной строки утилиты dd, подходящие для судебного дублирования, следующие.
Очевидно, что dd работает с файлами, а не непосредственно на физических устройствах. Однако операционные системы Unix с открытыми исходными кодами, типа Linux и FreeBSD, реализуют устройства, как файлы. Эти специальные файлы, расположенные в каталоге /dev, разрешают прямой доступ к устройствам через операционную систему. Следовательно, входными файлами в dd могут быть целые жесткие диски, разделы жестких дисков или другие устройства. При создании судебной копии жесткого диска входным файлом будет
Естественно, далее надо рассмотреть адресата для дублирования. Адресатом может быть другой жесткий диск (с использованием упомянутых файловых устройств), который называется побитовой копией исходного жесткого диска. Можно расширить эту идею за пределы использования жестких дисков в качестве носителя информации адресата и использовать вместо дисков накопитель на магнитной ленте, хотя это и более медленный метод. Адресатом может быть также обычный файл (обозначаемый так же, как файл улик), сохраненный в любой файловой системе, как логический файл. Это обычный способ хранения наиболее современных судебных копий, из-за легкости манипуляций при
Все три из этих адресатов вывода успешно использовались в прошлом по той или иной причине при создании судебной копии. Тип (также известный как метод) дублирования обычно диктуется проблемами, с которыми сталкиваются в процессе попытки дублирования, и которые часто не зависят от следователя. Например, если невозможно удалить жесткий диск из исходного компьютера во время дублирования, и не доступны никакие другие соединители для подключения дополнительного жесткого диска, было бы трудно скопировать содержание жесткого диска непосредственно на другой жесткий диск. Точно так же вы не могли бы сохранить копию в обычном файле, потому что это означало бы копирование на средства информации, уже находящиеся в исходном компьютере, то есть запись поверх потенциальных улик. Единственным вариантом в таком случае стало бы отображение по сети, что будет рассмотрено в следующих разделах.
Множество опций утилиты dd помогут сделать судебное дублирование более эффективным. Например, вы можете управлять размером блока, который будет копироваться, чтобы ускорить процесс для хоста, на котором выполняется dd ; ключ bs обычно устанавливается на 1Кб или 1Мб. Другая опция, которую вы должны использовать - это ключ conv, позволяющий дополнительным (необязательным) параметрам управлять процессом копирования. Параметры noerror и notrunc представляют две особо рекомендуемые опции. Эти ключи позволят игнорировать случаи чтения плохих блоков с исходных носителей, так что копирование продолжится, не обрывая вывод улик. Дополнительная опция
Хорошей практикой при выполнении судебного дублирования является создание файла регистрации, чтобы вы могли обращаться к нему в будущем или сделать его доступным для судебных слушаний. Команда script системы Unix позволит перехватить ввод и вывод на консоль Unix или в сеансе
forensic# script /root/disk.bin.duplication
Чтобы создать зеркальную копию изображения жесткого диска, используя dd, вы должны сообщить утилите, какой исходный жесткий диск будет входным файлом, а какой - выходным (файл улик), на котором вы будете хранить изображение.
Вы можете определить, какой жесткий диск является источником, а какой адресатом, изучая вывод команды dmesg. И в системе Linux и в FreeBSD команда dmesg выводит информацию на консоль во время загрузки машины (и любые другие сообщения консоли, которые появляются после загрузки). Определить, "кто есть кто" среди жестких дисков не сложно; скорее, вы захотите подключиться к жесткому диску-хранилищу, созданному другим изготовителем, нежели к исходному жесткому диску, и тогда станет очевидно, какой из дисков является источником, а какой адресатом. После того как вы очистили жесткий диск адресата в /dev/
forensic# dd, if =/dev/hdc =/dev/hdd bs=1024 conv=noerror, notrunc, sync
dd.В первом методе мы обработали побитовую копию с исходного жесткого диска и расположили ее поверх жесткого диска адресата. Используя этот метод, мы не можем просто скопировать улики с одного носителя на другой. Метод, который способствует более простому управлению уликами, заключается в создании
dd.forensic# dd, if =/dev/hdc =/mnt/storage/disk.bin bs=1024 conv=noerror,notrunc,sync
Процесс создания копии в других разновидностях операционных систем Unix подобен показанному выше. Единственное различие состоит в указании правильного имени
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
В предыдущем примере, если бы в процессе дублирования произошла ошибка, число входящих записей ( 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, dd дополнит соответствующий блок в выводе нулями. Так как размер блока равен 1024 бита (указан с помощью параметра bs), это значит, что в нашей судебной копии 1024 байта данных не надежны. Если бы мы вычислили контрольную сумму MD5 для /dev/ad0 и /mnt/storage/disk.bin, весьма вероятно, что эти два файла не соответствовали бы друг другу. Короче говоря, такой вывод является причиной того, что нам требуется выполнить команду script, чтобы задокументировать эту ошибку в своем отчете о расследовании.
Иногда следователь создает много файлов улик для единственного исходного жесткого диска или раздела. Обычно это происходит тогда, когда следователь хочет, чтобы файлы улик были достаточно маленькими и могли поместиться на архивном компакт-диске, или когда файловая система хоста не поддерживает файлы большого размера. Такого рода проблема может быть решена с помощью комбинации ключей dd начнет копирование. Ключ count задает количество блоков, обозначенных ключом bs, которые утилита dd будет читать из исходного входного файла. Поэтому, при выполнении комбинации команд dd с увеличивающимся значением ключей
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,
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,
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-гигабайтного жесткого диска при увеличении размера блока! Конечно, в какой-то момент вы почувствуете уменьшение отдачи и, возможно, захотите поэкспериментировать со своей аппаратурой и определить, что больше подходит для вашего конкретного случая.
Если других вариантов нет, судебная копия может быть передана на отдельный компьютер целиком. Это можно сделать, переадресовывая стандартный вывод команды dd через Netcat (или Cryptcat) на другую машину, связанную TCP/IP-сетью. (Обсуждения Netcat или Cryptcat см. в лекции "NETCAT и CRYPTCAT").
Исходная машина, содержащая отображаемый носитель информации, должна быть загружена с надежной дискеты или компакт-диска системой Linux или FreeBSD. Создание надежной дискеты или компакт-диска не должно отнять у вас много времени и сил, поскольку выполнению такой задачи были посвящены целые проекты. Один из примеров - система Trinux, которую вы можете найти на сайте http://trinux.sourceforge.net и решить, подходит ли она вам. Чтобы все было согласовано, компьютер адресата должен быть загружен системой Unix. После этого судебное дублирование по сети может быть выполнено простыми командами.
На рабочей станции адресата выполните следующую команду:
forensic# nc-l-p 2222 > /mnt/storage/disk.bin
Для передачи судебной копии используйте утилиту Cryptcat. У Cryptcat есть два преимущества по сравнению с утилитой Netcat: проверка правильности и секретность. Поскольку данные на исходной машине зашифрованы, расшифровка их на компьютере адресата должна давать побитовую копию ввода. Если бы взломщик изменил поток битов в сети, после расшифровки вывод был бы значительно изменен. Кроме того, нападавший не мог перехватить точную копию жесткого диска исходной машины по сети с помощью анализатора сетевого потока (
На исходной машине выполните следующую команду (судебный компьютер использует IP-адрес 192.168.1.1):
source# dd if=/dev/hdc bs=1024 conv=noerror,notrunc,sync | nc 192.168.1.1 2222
Иногда по финансовым соображениям вам может потребоваться повторно использовать жесткие диски для сбора улик с других исходных носителей из других инцидентов. Поэтому жесткий диск-хранилище должен быть свободен от артефактов, оставшихся от предыдущих копий. Наихудший сценарий, с которым может столкнуться следователь, состоит в доказательстве виновности невинного индивидуума на основе артефактов, оставшихся от предыдущего расследования! Это - то место, где утилита dd опять может спасти положение, очистив носитель с уликами перед его повторным использованием.
В операционной системе Unix с открытым исходным кодом, типа Linux и FreeBSD, есть специальный файл, названный подходящим именем /dev/zero, который при его прочтении возвращает неограниченное количество нулей. Если вы используете этот файл как ввод, а носитель информации с уликами, как вывод, то вы запишете нули на носитель с уликами. Когда на весь диск с уликами записаны нули, он считается очищенным перед его последующим использованием.
dd.Следующая команда демонстрирует, как бы вы чистили диск с уликами, подключенный к логическому устройству /dev/
forensic# dd if=/dev/zero of =/dev/hdb
Чтобы выполнить такую же очистку на платформе FreeBSD, вам надо изменить of или выходящий файл на правильное имя устройства жесткого диска, как показано ниже.
forensic# dd if=/dev/zero of =/dev/ad1
Если вы сомневаетесь, что эта команда обнулит жесткий диск адресата, используйте средства просмотра файлов в шестнадцатеричном формате, которые будут обсуждаться в "Средства просмотра файлов и редакторы общего назначения" (hexdump, hexedit, xvi32:), чтобы просмотреть жесткий диск и убедиться, что он содержит нули. Дополнительно можно использовать флаги grep и -v с критериями поиска 0. По флагу -v при просмотре соответствующего жесткого диска будет идти поиск всего ненулевого, и выдаваться сообщение об этом. Если вы не получите соответствующих сообщений, следовательно жесткий диск содержит одни нули.
Как правило, следователь предпочитает создание обычного файла, который содержит судебную копию, выполненную с помощью утилиты dd. С помощью только этого файла трудно просматривать losetup выполняет это преобразование в системе Linux. ("lo" в названии losetup означает local (локальное закольцовывание) и, следовательно, монтирует обычный файл, так же как это делается с любым жестким диском.)
loopback , в базовой инсталляции операционной системы Unix нет никаких инструментальных средств, позволяющих быстро просматривать файлы, удаленные из исходной файловой системы.С утилитой losetup используются следующие опции:
forensic# losetup Использование: losetup loop_device # дать информацию losetup -d loop_device # удалить losetup [ -e encryption ] [ -o offset ] loop_device file # установка
Поскольку в процессе судебного анализа мы не будем использовать никакого кодирования, опции кодирования игнорируются. Это упрощает использование инструмента. Сначала мы определяем -устройство, связанное с файлом улик, лучше всего подойдет следующая командная строка.
forensic# losetup/dev/loop0/mnt/storage/disk.bin
Следующая команда демонстрирует команду losetup в действии. Для отображения жесткого диска была использована утилита dd с исходного диска, присоединенного к файлу устройства /dev/losetup с нулевым смещением. При анализе диска с помощью утилиты fdisk, получено сообщение, что раздел Windows 98, которым мы интересуемся в расследовании, начинается в логическом секторе 64.
forensic# if=/dev/hdb of=/mnt/storage/disk.bin conv=notrunc,
noerror,sync bs=1024
20043922+0 records in
20043922+0 records out
forensic# losetup /dev/loop0 /mnt/storage/disk.bin
forensic# fdisk -l /dev/loop0
Disk /dev/loop0: 1 heads, 40087844 sectors, 1 cylinders
Units = cylinders of 40087844 * 512 bytes
Device Boot Start End Blocks Id System
/dev/loop0p1 * 1 1 20041056 c Win95 FAT32 (LBA)
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(0, 1, 1) logical=(0, 0, 64)
Partition 1 has different physical/logical endings:
phys=(1023, 254, 63) logical=(0, 0, 40082175)
Partition 1 does not end on cylinder boundary:
phys=(1023, 254, 63) should be (1023, 0, 40087844)
Чтобы смонтировать раздел Windows, мы должны использовать смещение, равное 32256, которое получается в результате умножения 63 секторов на 512 байтов, содержащихся в каждом секторе. При выполнении команды losetup смещение указывается опцией -o. Следующая запись демонстрирует задание правильного смещения, а затем монтирование и просмотр содержимого файла улик /mnt/storage/disk.bin в каталоге
/mnt/evidence (конечно, вначале должен быть создан каталог / mnt/evidence!). forensic# losetup -o 32256 /dev/loop0 /mnt/storage/disk.bin forensic# mount -o ro /dev/loop0 /mnt/evidence forensic# ls /mnt/evidence
После того, как изображение улик было смонтировано в состояние, предназначенное только для чтения, его можно проанализировать так же, как если бы был вставлен оригинальный исходный носитель без возможности разрушения свидетельской ценности оригинала. В сценарии, который рассмотрен в предыдущем выводе, доступ к файлу /mnt/storage/disk.bin был изменен на доступ, предназначенный только для чтения с помощью команды chmod с разрешениями 400. Кроме того, еще один метод оградить файл от изменения во время монтирования состоит в использовании с командой mount опции "только чтение" -o ro.
loopback , все команды, оперирующие с файлами и устройствами, будут работать на специальном устройстве (/dev/loop0), которое связано с изображением.В последней секции, чтобы получить доступ к разделу, мы должны были изменить смещение с помощью losetup, потому что устройства не распознают процесс угадывания, где начинается раздел, может оказаться утомительным и ненужным. К счастью, -устройство для решения проблемы смещения, и это значительно облегчает процесс судебного анализа.
На момент написания этой книги усовершенствованное устройство не было связано с каким-либо дистрибутивом Linux, но его можно было найти на общедоступном FTP-сервере, расположенном на ftp://ftp.hq.
Сначала отредактируйте свой файл
loopback . Если это так, то вы должны изменить соответствующим образом номера версий в этом примере, чтобы заставить его работать в вашем конкретном случае.prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image= /boot/vmlinuz-2.4.7-10
label=linux
initrd=/boot/initrd-2.4.7-10.imp
read-only
root=/dev/hda2
image= /boot/vmlinuz-2.4.17-xfs-enhanced_loop
label=linux_enhanced
root=/dev/hda2
/dev/hda2, но оно может быть иным для вашего конкретного судебного компьютера. Кроме того, описываемый здесь процесс работает в системе RedHat Linux 7.2. Установка нового ядра может происходить по разному для разных дистрибутивов Linux, поэтому вам, вероятно, придется почитать документацию, сопровождающую ваш конкретный дистрибутив системы Linux.
Чтобы установить усовершенствованное ядро , загрузите и извлеките его в каталог, используя утилиту tar. Следующая командная строка извлекает исходный код ядра системы.
forensic# tar xzvf linux-2.4.17-xfs-enhanced.tar.gz-C/usr/src
После того как исходный код ядра разархивирован, ядро должно повторно компилироваться. Имейте ввиду, что различные инсталляции будут отличаться друг от друга, потому что платформы, на которых будет выполняться это ядро, могут использовать разные аппаратные средства. Следовательно, во время выполнения команды make menuconfig вы должны выбрать опции, подходящие для вашей платформы. Компиляция может быть выполнена следующими командными строками:
forensic# cd /usr/src/inux-2.4.17-xfs-enhanced_loop forensic# make menuconfig forensic# make dep forensic# make clean forensic# make bzImage forensic# make modules forensic# make modules_install forensic# cd arch/i386/boot forensic# cp bzImage /boot/vmlinuz-2.4.17-xfs-enhanced_loop forensic# lilo -v
После установки ядра необходимо установить двоичные файлы набора инструментов , используя следующую командную строку:
forensic# rpm -ivh --force loop-utils-0.0.1-1.i386.rpm
Теперь перезагрузите систему и не забудьте выбрать новое ядро, набрав linux_enhanced в строке приглашения начальной загрузки
После установки комплекта инструментальных средств начинается реальное волшебство. С тем же самым файлом улик, который использовался в предыдущем разделе (disk.bin), вы можете смонтировать исходные данные, найденные в разделе Windows 98, используя утилиту losetup тем же самым способом, но без смещения. Дополнительный флаг -r к утилите losetup позволяет сделать файл улик доступным только для чтения, что всегда является хорошей мерой безопасности. После того как файл улик был связан с dmesg, чтобы отобразить разделы, найденные в файле улик. Просто смонтируйте раздел так, как бы вы сделали это на любом физическом жестком диске. В этом сценарии разделы начинают заполнять другие зацикленные ( loop ) устройства с увеличивающимися второстепенными номерами
forensic# losetup /dev/loop0 /mnt/storage/disk.bin forensic# mount -o ro /dev/loop0 /mnt/evidence forensic# ls /mnt/evidence
Следующие команды нарушат связи, созданные предыдущими командами:
forensic# cd /mnt/storage forensic# umount/mnt/evidence forensic# losetup-d /dev/loop0
losetup -d. Работать необходимо в том же самом каталоге, где находится файл disk.bin, иначе произойдет ошибка.Так же, как утилита losetup позволяет преобразовывать файл улик, созданный в результате судебного дублирования, в устройство, приспособленное для анализа, так и функция vnconfig, можете монтировать или анализировать вновь созданный специальный файл так, как это делаете с реальным жестким диском.
loopback , базовая инсталляция операционных систем Unix не имеет никаких инструментальных средств для быстрого просмотра файлов, удаленных из файловой системы.Чтобы скомпилировать поддержку для vn, необходимо добавить строку, подобную следующей, к своему
pseudo-device vn
Затем ядро должно быть повторно скомпилировано, а машина перезагружена. Вы также можете выполнить команду ./MAKEDEV all в каталоге /dev, чтобы создать файлы устройств.
Далее показаны опции командной строки для утилиты vnconfig:
forensic# vnconfig
usage: vnconfig [-cdeguv] [-s option] [-r option] [-S value] special_file ¬
[regular_file] [feature]
vnconfig -a [-cdeguv] [-s option] [-r option] [-f config_file]
Следующая команда демонстрирует связывание файла улик, созданного из исходного жесткого диска, со специальным
forensic# vnconfig /dev/vn0 /mnt/storage/disk.bin
forensic# fdisk /dev/vn0
******* Working on device /dev/vn0 *******
parameters extracted from in-core disklabel are:
cylinders=2495 heads=255 sectors/track=63 (16065 blks/cyl)
Figures below won"t work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=2495 heads=255 sectors/track=63 (16065 blks/cyl)
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS superblock is:
The data for partition 1 is:
sysid 12,(DOS or Windows 95 with 32 bit FAT, LBA)
start 63, size 40082112 (19571 Meg), flag 0
beg: cyl 0/ head 1/ sector 1;
end: cyl 1023/ head 254/ sector 63
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
После того как файл улик был связан с виртуальным узлом, можно использовать все команды, которые управляют файлами на устройстве. Конечно, вы должны установить профилактические меры для chmod 400 <имя файла> перед тем, как он будет связан с виртуальным узлом.
Следующая команда демонстрирует монтирование копии исходного носителя, управляемого системой Window, в системе FreeBSD:
forensic# mount -t msdos -o ro /dev/vn0s1 /mnt/evidence forensic# ls /mnt/evidence
После того как вы собрали улики, используя любое из средств, предложенных в этой лекции, необходимо предусмотреть механизм проверки их законности, действующий в любое время. Если законность улик не заслуживает доверия, все усилия по их анализу и сбору могут рассматриваться как пустые траты. Поэтому, применяя принятую в промышленности контрольную сумму MD5 в качестве инструмента для снятия цифровых "отпечатков пальцев" для собранных улик, вы можете гарантировать, что данные, собранные несколько лет назад, в точности совпадают с версией, представленной в суде.
Инструмент md5sum (и MD5 ) поставляется с большинством операционных систем Unix, имеющих открытые исходные коды. Для системы Windows набор инструментальных средств Cygwin содержит исполняемый файл md5sum (см. лекцию "Cygwin").
Инструмент, предназначенный для вычисления контрольной суммы MD5 файла в системе Linux, называется md5sum и обычно поставляется с большинством дистрибутивов Linux. Опции для утилиты md5sum таковы:
forensic# md5sum -справка
Использование: md5sum [ОПЦИЯ] [ФАЙЛ]...
Или: md5sum [ОПЦИЯ] --проверка [ФАЙЛ]
Напечатать или проверить контрольные суммы MD5 (128 битовые).
Если ФАЙЛ отсутствует, или если ФАЙЛ задан как "-", следует стандартный ввод.
-b, --binary читает файлы в двоичном режиме (в системах DOS/Windows
задано по умолчанию)
-c, --check проверяет суммы MD5 в соответствии с заданным списком
-t, --text читает файлы в текстовом режиме
(задано по умолчанию)
Следующий две опции полезны только при проверке контрольных сумм:
--status ничего не выводится, код состояния показывает success (успех)
-w, --warn предупреждает о неверно отформатированных строках
контрольной суммы
--help отображает эту справку и выходит
--version выводит информацию о версии и выходит
Вы вызываете инструмент, задавая один параметр - файл, контрольная сумма которого будет рассчитана. Для судебных целей, все контрольные суммы MD5 будут рассчитываться в двоичном режиме. Следовательно, вы всегда должны использовать ключ -b.
Ниже продемонстрировано вычисление контрольной суммы MD5 для нескольких файлов улик, которые мы скопировали:
forensic# ls disk.1.bin disk.2.bin disk.3.bin disk.4.bin forensic# md5sum -b * md5sums.txt
После получения списка файлов из файла контрольной суммы MD5, ратификация их проста. Ее можно выполнить, указав ключ -c и файл контрольной суммы MD5.
forensic# md5sum -c md5sums.txt disk.1.bin: OK disk.2.bin: OK disk.3.bin: OK disk.4.bin: OK
Если хотя бы 1 бит файла улик изменен, будет выведено сообщение о несовпадении контрольных сумм. Мы открыли двоичный редактор и заменили первый бит с 1 на 0 в файле disk.4.bin. Если мы сравним контрольные суммы MD5 с помощью утилиты md5sum, то получим следующие результаты:
forensic# md5sum -c md5sums.txt disk.1.bin: OK disk.2.bin: OK disk.3.bin: OK disk.4.bin: FAILED md5sum: WARNING: 1 of 4 computed checksums did NOT match
Инструмент md5sum может вычислять контрольную сумму MD5 целых жестких дисков в операционных системах Unix. Это возможно благодаря тому, что система Unix обрабатывает жесткие диски, как специальные файлы, и утилита md5sum не замечает никаких различий. Вскоре мы продемонстрируем, как сравнить контрольную сумму MD5 исходного жесткого диска с контрольной суммой файла улик, полученного в результате судебного дублирования.
md5sum была перенесена на операционную систему Windows. md5sum является частью расширенного дистрибутива Cygwin, который вы изучили в лекции "Cygwin". В Windows-версии все опции и ключи точно такие же, как и в версии Linux. Единственное различие, которое мы заметили при выполнении, состоит в том, что версия Windows не всегда подразумевает ключ -b, и именно поэтому мы рекомендуем, чтобы вы привыкли указывать его явно.В системе FreeBSD инструмент расчета контрольной суммы MD5 называется MD5. Он является частью базовой операционной системы и работает подобно своим аналогам для Windows и Linux. Применение MD5 следующее:
forensic# md5 <имя файла>
Обратите внимание, что инструмент MD5 намного проще, чем его аналог для системы Linux, и вы не должны явно указывать использование двоичного режима. Следующая команда демонстрирует использование утилиты MD5 с файлом улик, собранном в процессе судебного дублирования. Кроме того, контрольная сумма MD5 скопированного исходного жесткого диска совпадает с созданным файлом улик.
forensic# md5 /dev/ad0 MD5 (/dev/ad0) = aa935fb10922184c9c2a8423a1f4e56c forensic# md5/mnt/storage/disk.bin MD5 (/mnt/storage/disk.bin) = aa935fb10922184c9c2a8423a1f4e56c
Пример из жизни. Похищение секретов
Вы работаете в успешной фармацевтической компании, в которой открытие одной химической формулы может помочь перегнать или вывести из строя других игроков в определенном секторе промышленности. Ваша работа состоит не в разработке этих формул; ваша задача заключается в обеспечении защиты огромных компьютерных ресурсов и охране патентованных данных, являющихся собственностью компании. Вы отлично работали до рокового часа в пятницу, когда зазвонил ваш телефон...
Охранник на первом этаже производил обычный обыск служащих, входящих в здание и покидающих его. Доктор Стив Хансен скрыл стандартную дискету внутри полого отделения своей обуви в надежде, что охрана его не поймает. Чиновники вашей компании поручают вам выполнить начальное расследование этого инцидента, и просят проявить большую осторожность, чтобы собрать данные в юридически значимой манере на случай, если они решат преследовать доктора Хансена по закону. Вооружившись инструментальными средствами, рассмотренными в этом разделе, вы имеете достаточно ресурсов для определения того, были ли данные, находящиеся на диске доктора Хансена, специально запрещены для распространения политикой вашей компании, и надо ли квалифицировать в соответствии с американскими законами вынос этих данных, как воровство торговых секретов.
dd. Первое, что вы должны сделать, - это перекинуть защелку на дискете в положение "только для чтения". Это предотвратит, на некотором уровне, изменение содержания диска. Затем вы включаете свой компьютер, чтобы выполнить судебное дублирование исходного носителя информации (дискета). Чтобы запросить дисковод для гибких дисков, вы набираете в командной строке следующую команду.
forensic# dd if=/dev/fd0 of=/mnt/storage/dr_hansen_floppy.bin ¬ conv=notrunc,noerror,sync 2880+0 records in 2880+0 records out
Вы не столкнулись ни с какими ошибками в своем судебном дублировании, потому что количество записей ввода и вывода одинаковы.
Затем вам нужно смонтировать эту копию в среде Linux и рассмотреть ее содержимое. Вы не можете смонтировать ее непосредственно в виде файла, но можете использовать в пределах Linux, чтобы преобразовать копию в специальный
forensic# losetup /dev/loop0 /mnt/storage/dr_hansen_floppy.bin forensic# mount -r /dev/loop0 /mnt/evidence forensic# ls -al /mnt/evidence total 30 drwxr-xr-x 2 root root 7168 Dec 31 1969 . drwxr-xr-x 4 root root 4096 Apr 9 09:52 .. -rwxr-xr-x 1 root root 19456 Apr 25 2002 Secret Formula.doc
После открытия файла
md5sum и md5. Вы помните, что после создания судебной копии необходимо сгенерировать контрольную сумму MD5 и для содержимого дискеты и для файла улик:
forensic# md5sum -b /dev/fd0 e9a4ee253a4537886a59a7973241bf20 */dev/fd0 forensic# md5sum -b floppy.bin e9a4ee253a4537886a59a7973241bf20 *dr_hansen_floppy.bin
Замечательно! Полученное вами изображение является точной побитовой копией исходного гибкого диска.
Эта команда дана последней, чтобы печатная версия данной истории отражала последовательность обсуждения инструментальных средств, приводящуюся в этой лекции. Однако, на самом деле, вам следует выполнить первую команду md5sum непосредственно перед тем, как выполнять дублирование дискеты, а вторую команду md5sum сразу же после окончания дублирования.
В лекции "Коммерческие наборы инструментов для судебного дублирования" было рассмотрено несколько наборов инструментов, выполняющих судебное дублирование, которые распространяются на коммерческой основе. Набор инструментов, обсуждаемый в этой лекции, может быть собран бесплатно. За короткое время вы можете легко им овладеть.
В связи с быстрым распространением операционных систем с открытым исходным кодом, типа Linux, dd, losetup, vnconfig и md5sum могут использоваться для расследования инцидентов так же эффективно, как их коммерческие аналоги.
В этой лекции говорится об использовании этих инструментальных средств и показывается, что они являются важным дополнением к комплекту инструментов эксперта. Поскольку эти инструментальные средства бесплатны, а результаты, полученные их методами дублирования, можно импортировать почти в любой набор судебного анализа, то вы можете предпочесть использование этих средств любым другим. Однако важно обратить внимание на то, что для использования этих инструментальных средств вам потребуется больше опыта и некоторые знания технических деталей файловой системы.
Аналогично обсуждавшейся в предыдущей лекции необходимости в надежной загрузочной дискете (или компакт-диске), судебное дублирование с некоммерческим программным обеспечением предъявляет те же самые требования. Поскольку Linux - операционная система с открытым исходным кодом, было создано много успешных разработок, заставивших Linux выполняться с компакт-дисков или дискет без обращения к жесткому диску. Мы предлагаем вам испробовать систему Trinux, которая распространяется как система Linux, предназначенная для работы с компакт-диска. Операционную систему Trinux можно исследовать на сайте http://trinux.sourceforge.net. Кроме того, аналогичный вариант системы FreeBSD предлагается на сайте http://sourceforge.net/projects/freebsdtogo/ и имеет подходящее название: FreeBSD To Go (передвижная FreeBSD).
На приведенной схеме этапов расследования мы все еще находимся на стадии судебного дублирования.

Инструмент dd используется для побитного копирования одного файла в другой. Копирование битов таким способом является основой всех инструментальных средств судебного дублирования. Инструмент dd универсален, а его исходный текст доступен публике. Кроме того, dd может компилироваться на почти любой платформе Unix. В этом разделе обсуждаются методы, которые может реализовать инструмент dd для выполнения судебного дублирования.
Инструмент .
Опции командной строки утилиты dd, подходящие для судебного дублирования, следующие.
Очевидно, что dd работает с файлами, а не непосредственно на физических устройствах. Однако операционные системы Unix с открытыми исходными кодами, типа Linux и FreeBSD, реализуют устройства, как файлы. Эти специальные файлы, расположенные в каталоге /dev, разрешают прямой доступ к устройствам через операционную систему. Следовательно, входными файлами в dd могут быть целые жесткие диски, разделы жестких дисков или другие устройства. При создании судебной копии жесткого диска входным файлом будет
Естественно, далее надо рассмотреть адресата для дублирования. Адресатом может быть другой жесткий диск (с использованием упомянутых файловых устройств), который называется побитовой копией исходного жесткого диска. Можно расширить эту идею за пределы использования жестких дисков в качестве носителя информации адресата и использовать вместо дисков накопитель на магнитной ленте, хотя это и более медленный метод. Адресатом может быть также обычный файл (обозначаемый так же, как файл улик), сохраненный в любой файловой системе, как логический файл. Это обычный способ хранения наиболее современных судебных копий, из-за легкости манипуляций при
Все три из этих адресатов вывода успешно использовались в прошлом по той или иной причине при создании судебной копии. Тип (также известный как метод) дублирования обычно диктуется проблемами, с которыми сталкиваются в процессе попытки дублирования, и которые часто не зависят от следователя. Например, если невозможно удалить жесткий диск из исходного компьютера во время дублирования, и не доступны никакие другие соединители для подключения дополнительного жесткого диска, было бы трудно скопировать содержание жесткого диска непосредственно на другой жесткий диск. Точно так же вы не могли бы сохранить копию в обычном файле, потому что это означало бы копирование на средства информации, уже находящиеся в исходном компьютере, то есть запись поверх потенциальных улик. Единственным вариантом в таком случае стало бы отображение по сети, что будет рассмотрено в следующих разделах.
Множество опций утилиты dd помогут сделать судебное дублирование более эффективным. Например, вы можете управлять размером блока, который будет копироваться, чтобы ускорить процесс для хоста, на котором выполняется dd ; ключ bs обычно устанавливается на 1Кб или 1Мб. Другая опция, которую вы должны использовать - это ключ conv, позволяющий дополнительным (необязательным) параметрам управлять процессом копирования. Параметры noerror и notrunc представляют две особо рекомендуемые опции. Эти ключи позволят игнорировать случаи чтения плохих блоков с исходных носителей, так что копирование продолжится, не обрывая вывод улик. Дополнительная опция
Хорошей практикой при выполнении судебного дублирования является создание файла регистрации, чтобы вы могли обращаться к нему в будущем или сделать его доступным для судебных слушаний. Команда script системы Unix позволит перехватить ввод и вывод на консоль Unix или в сеансе
forensic# script /root/disk.bin.duplication
Чтобы создать зеркальную копию изображения жесткого диска, используя dd, вы должны сообщить утилите, какой исходный жесткий диск будет входным файлом, а какой - выходным (файл улик), на котором вы будете хранить изображение.
Вы можете определить, какой жесткий диск является источником, а какой адресатом, изучая вывод команды dmesg. И в системе Linux и в FreeBSD команда dmesg выводит информацию на консоль во время загрузки машины (и любые другие сообщения консоли, которые появляются после загрузки). Определить, "кто есть кто" среди жестких дисков не сложно; скорее, вы захотите подключиться к жесткому диску-хранилищу, созданному другим изготовителем, нежели к исходному жесткому диску, и тогда станет очевидно, какой из дисков является источником, а какой адресатом. После того как вы очистили жесткий диск адресата в /dev/
forensic# dd, if =/dev/hdc =/dev/hdd bs=1024 conv=noerror, notrunc, sync
dd.В первом методе мы обработали побитовую копию с исходного жесткого диска и расположили ее поверх жесткого диска адресата. Используя этот метод, мы не можем просто скопировать улики с одного носителя на другой. Метод, который способствует более простому управлению уликами, заключается в создании
dd.forensic# dd, if =/dev/hdc =/mnt/storage/disk.bin bs=1024 conv=noerror,notrunc,sync
Процесс создания копии в других разновидностях операционных систем Unix подобен показанному выше. Единственное различие состоит в указании правильного имени
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
В предыдущем примере, если бы в процессе дублирования произошла ошибка, число входящих записей ( 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, dd дополнит соответствующий блок в выводе нулями. Так как размер блока равен 1024 бита (указан с помощью параметра bs), это значит, что в нашей судебной копии 1024 байта данных не надежны. Если бы мы вычислили контрольную сумму MD5 для /dev/ad0 и /mnt/storage/disk.bin, весьма вероятно, что эти два файла не соответствовали бы друг другу. Короче говоря, такой вывод является причиной того, что нам требуется выполнить команду script, чтобы задокументировать эту ошибку в своем отчете о расследовании.
Иногда следователь создает много файлов улик для единственного исходного жесткого диска или раздела. Обычно это происходит тогда, когда следователь хочет, чтобы файлы улик были достаточно маленькими и могли поместиться на архивном компакт-диске, или когда файловая система хоста не поддерживает файлы большого размера. Такого рода проблема может быть решена с помощью комбинации ключей dd начнет копирование. Ключ count задает количество блоков, обозначенных ключом bs, которые утилита dd будет читать из исходного входного файла. Поэтому, при выполнении комбинации команд dd с увеличивающимся значением ключей
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,
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,
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-гигабайтного жесткого диска при увеличении размера блока! Конечно, в какой-то момент вы почувствуете уменьшение отдачи и, возможно, захотите поэкспериментировать со своей аппаратурой и определить, что больше подходит для вашего конкретного случая.
Если других вариантов нет, судебная копия может быть передана на отдельный компьютер целиком. Это можно сделать, переадресовывая стандартный вывод команды dd через Netcat (или Cryptcat) на другую машину, связанную TCP/IP-сетью. (Обсуждения Netcat или Cryptcat см. в лекции "NETCAT и CRYPTCAT").
Исходная машина, содержащая отображаемый носитель информации, должна быть загружена с надежной дискеты или компакт-диска системой Linux или FreeBSD. Создание надежной дискеты или компакт-диска не должно отнять у вас много времени и сил, поскольку выполнению такой задачи были посвящены целые проекты. Один из примеров - система Trinux, которую вы можете найти на сайте http://trinux.sourceforge.net и решить, подходит ли она вам. Чтобы все было согласовано, компьютер адресата должен быть загружен системой Unix. После этого судебное дублирование по сети может быть выполнено простыми командами.
На рабочей станции адресата выполните следующую команду:
forensic# nc-l-p 2222 > /mnt/storage/disk.bin
Для передачи судебной копии используйте утилиту Cryptcat. У Cryptcat есть два преимущества по сравнению с утилитой Netcat: проверка правильности и секретность. Поскольку данные на исходной машине зашифрованы, расшифровка их на компьютере адресата должна давать побитовую копию ввода. Если бы взломщик изменил поток битов в сети, после расшифровки вывод был бы значительно изменен. Кроме того, нападавший не мог перехватить точную копию жесткого диска исходной машины по сети с помощью анализатора сетевого потока (
На исходной машине выполните следующую команду (судебный компьютер использует IP-адрес 192.168.1.1):
source# dd if=/dev/hdc bs=1024 conv=noerror,notrunc,sync | nc 192.168.1.1 2222
Иногда по финансовым соображениям вам может потребоваться повторно использовать жесткие диски для сбора улик с других исходных носителей из других инцидентов. Поэтому жесткий диск-хранилище должен быть свободен от артефактов, оставшихся от предыдущих копий. Наихудший сценарий, с которым может столкнуться следователь, состоит в доказательстве виновности невинного индивидуума на основе артефактов, оставшихся от предыдущего расследования! Это - то место, где утилита dd опять может спасти положение, очистив носитель с уликами перед его повторным использованием.
В операционной системе Unix с открытым исходным кодом, типа Linux и FreeBSD, есть специальный файл, названный подходящим именем /dev/zero, который при его прочтении возвращает неограниченное количество нулей. Если вы используете этот файл как ввод, а носитель информации с уликами, как вывод, то вы запишете нули на носитель с уликами. Когда на весь диск с уликами записаны нули, он считается очищенным перед его последующим использованием.
dd.Следующая команда демонстрирует, как бы вы чистили диск с уликами, подключенный к логическому устройству /dev/
forensic# dd if=/dev/zero of =/dev/hdb
Чтобы выполнить такую же очистку на платформе FreeBSD, вам надо изменить of или выходящий файл на правильное имя устройства жесткого диска, как показано ниже.
forensic# dd if=/dev/zero of =/dev/ad1
Если вы сомневаетесь, что эта команда обнулит жесткий диск адресата, используйте средства просмотра файлов в шестнадцатеричном формате, которые будут обсуждаться в "Средства просмотра файлов и редакторы общего назначения" (hexdump, hexedit, xvi32:), чтобы просмотреть жесткий диск и убедиться, что он содержит нули. Дополнительно можно использовать флаги grep и -v с критериями поиска 0. По флагу -v при просмотре соответствующего жесткого диска будет идти поиск всего ненулевого, и выдаваться сообщение об этом. Если вы не получите соответствующих сообщений, следовательно жесткий диск содержит одни нули.
Как правило, следователь предпочитает создание обычного файла, который содержит судебную копию, выполненную с помощью утилиты dd. С помощью только этого файла трудно просматривать losetup выполняет это преобразование в системе Linux. ("lo" в названии losetup означает local (локальное закольцовывание) и, следовательно, монтирует обычный файл, так же как это делается с любым жестким диском.)
loopback , в базовой инсталляции операционной системы Unix нет никаких инструментальных средств, позволяющих быстро просматривать файлы, удаленные из исходной файловой системы.С утилитой losetup используются следующие опции:
forensic# losetup Использование: losetup loop_device # дать информацию losetup -d loop_device # удалить losetup [ -e encryption ] [ -o offset ] loop_device file # установка
Поскольку в процессе судебного анализа мы не будем использовать никакого кодирования, опции кодирования игнорируются. Это упрощает использование инструмента. Сначала мы определяем -устройство, связанное с файлом улик, лучше всего подойдет следующая командная строка.
forensic# losetup/dev/loop0/mnt/storage/disk.bin
Следующая команда демонстрирует команду losetup в действии. Для отображения жесткого диска была использована утилита dd с исходного диска, присоединенного к файлу устройства /dev/losetup с нулевым смещением. При анализе диска с помощью утилиты fdisk, получено сообщение, что раздел Windows 98, которым мы интересуемся в расследовании, начинается в логическом секторе 64.
forensic# if=/dev/hdb of=/mnt/storage/disk.bin conv=notrunc,
noerror,sync bs=1024
20043922+0 records in
20043922+0 records out
forensic# losetup /dev/loop0 /mnt/storage/disk.bin
forensic# fdisk -l /dev/loop0
Disk /dev/loop0: 1 heads, 40087844 sectors, 1 cylinders
Units = cylinders of 40087844 * 512 bytes
Device Boot Start End Blocks Id System
/dev/loop0p1 * 1 1 20041056 c Win95 FAT32 (LBA)
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(0, 1, 1) logical=(0, 0, 64)
Partition 1 has different physical/logical endings:
phys=(1023, 254, 63) logical=(0, 0, 40082175)
Partition 1 does not end on cylinder boundary:
phys=(1023, 254, 63) should be (1023, 0, 40087844)
Чтобы смонтировать раздел Windows, мы должны использовать смещение, равное 32256, которое получается в результате умножения 63 секторов на 512 байтов, содержащихся в каждом секторе. При выполнении команды losetup смещение указывается опцией -o. Следующая запись демонстрирует задание правильного смещения, а затем монтирование и просмотр содержимого файла улик /mnt/storage/disk.bin в каталоге
/mnt/evidence (конечно, вначале должен быть создан каталог / mnt/evidence!). forensic# losetup -o 32256 /dev/loop0 /mnt/storage/disk.bin forensic# mount -o ro /dev/loop0 /mnt/evidence forensic# ls /mnt/evidence
После того, как изображение улик было смонтировано в состояние, предназначенное только для чтения, его можно проанализировать так же, как если бы был вставлен оригинальный исходный носитель без возможности разрушения свидетельской ценности оригинала. В сценарии, который рассмотрен в предыдущем выводе, доступ к файлу /mnt/storage/disk.bin был изменен на доступ, предназначенный только для чтения с помощью команды chmod с разрешениями 400. Кроме того, еще один метод оградить файл от изменения во время монтирования состоит в использовании с командой mount опции "только чтение" -o ro.
loopback , все команды, оперирующие с файлами и устройствами, будут работать на специальном устройстве (/dev/loop0), которое связано с изображением.В последней секции, чтобы получить доступ к разделу, мы должны были изменить смещение с помощью losetup, потому что устройства не распознают процесс угадывания, где начинается раздел, может оказаться утомительным и ненужным. К счастью, -устройство для решения проблемы смещения, и это значительно облегчает процесс судебного анализа.
На момент написания этой книги усовершенствованное устройство не было связано с каким-либо дистрибутивом Linux, но его можно было найти на общедоступном FTP-сервере, расположенном на ftp://ftp.hq.
Сначала отредактируйте свой файл
loopback . Если это так, то вы должны изменить соответствующим образом номера версий в этом примере, чтобы заставить его работать в вашем конкретном случае.prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image= /boot/vmlinuz-2.4.7-10
label=linux
initrd=/boot/initrd-2.4.7-10.imp
read-only
root=/dev/hda2
image= /boot/vmlinuz-2.4.17-xfs-enhanced_loop
label=linux_enhanced
root=/dev/hda2
/dev/hda2, но оно может быть иным для вашего конкретного судебного компьютера. Кроме того, описываемый здесь процесс работает в системе RedHat Linux 7.2. Установка нового ядра может происходить по разному для разных дистрибутивов Linux, поэтому вам, вероятно, придется почитать документацию, сопровождающую ваш конкретный дистрибутив системы Linux.
Чтобы установить усовершенствованное ядро , загрузите и извлеките его в каталог, используя утилиту tar. Следующая командная строка извлекает исходный код ядра системы.
forensic# tar xzvf linux-2.4.17-xfs-enhanced.tar.gz-C/usr/src
После того как исходный код ядра разархивирован, ядро должно повторно компилироваться. Имейте ввиду, что различные инсталляции будут отличаться друг от друга, потому что платформы, на которых будет выполняться это ядро, могут использовать разные аппаратные средства. Следовательно, во время выполнения команды make menuconfig вы должны выбрать опции, подходящие для вашей платформы. Компиляция может быть выполнена следующими командными строками:
forensic# cd /usr/src/inux-2.4.17-xfs-enhanced_loop forensic# make menuconfig forensic# make dep forensic# make clean forensic# make bzImage forensic# make modules forensic# make modules_install forensic# cd arch/i386/boot forensic# cp bzImage /boot/vmlinuz-2.4.17-xfs-enhanced_loop forensic# lilo -v
После установки ядра необходимо установить двоичные файлы набора инструментов , используя следующую командную строку:
forensic# rpm -ivh --force loop-utils-0.0.1-1.i386.rpm
Теперь перезагрузите систему и не забудьте выбрать новое ядро, набрав linux_enhanced в строке приглашения начальной загрузки
После установки комплекта инструментальных средств начинается реальное волшебство. С тем же самым файлом улик, который использовался в предыдущем разделе (disk.bin), вы можете смонтировать исходные данные, найденные в разделе Windows 98, используя утилиту losetup тем же самым способом, но без смещения. Дополнительный флаг -r к утилите losetup позволяет сделать файл улик доступным только для чтения, что всегда является хорошей мерой безопасности. После того как файл улик был связан с dmesg, чтобы отобразить разделы, найденные в файле улик. Просто смонтируйте раздел так, как бы вы сделали это на любом физическом жестком диске. В этом сценарии разделы начинают заполнять другие зацикленные ( loop ) устройства с увеличивающимися второстепенными номерами
forensic# losetup /dev/loop0 /mnt/storage/disk.bin forensic# mount -o ro /dev/loop0 /mnt/evidence forensic# ls /mnt/evidence
Следующие команды нарушат связи, созданные предыдущими командами:
forensic# cd /mnt/storage forensic# umount/mnt/evidence forensic# losetup-d /dev/loop0
losetup -d. Работать необходимо в том же самом каталоге, где находится файл disk.bin, иначе произойдет ошибка.Так же, как утилита losetup позволяет преобразовывать файл улик, созданный в результате судебного дублирования, в устройство, приспособленное для анализа, так и функция vnconfig, можете монтировать или анализировать вновь созданный специальный файл так, как это делаете с реальным жестким диском.
loopback , базовая инсталляция операционных систем Unix не имеет никаких инструментальных средств для быстрого просмотра файлов, удаленных из файловой системы.Чтобы скомпилировать поддержку для vn, необходимо добавить строку, подобную следующей, к своему
pseudo-device vn
Затем ядро должно быть повторно скомпилировано, а машина перезагружена. Вы также можете выполнить команду ./MAKEDEV all в каталоге /dev, чтобы создать файлы устройств.
Далее показаны опции командной строки для утилиты vnconfig:
forensic# vnconfig
usage: vnconfig [-cdeguv] [-s option] [-r option] [-S value] special_file ¬
[regular_file] [feature]
vnconfig -a [-cdeguv] [-s option] [-r option] [-f config_file]
Следующая команда демонстрирует связывание файла улик, созданного из исходного жесткого диска, со специальным
forensic# vnconfig /dev/vn0 /mnt/storage/disk.bin
forensic# fdisk /dev/vn0
******* Working on device /dev/vn0 *******
parameters extracted from in-core disklabel are:
cylinders=2495 heads=255 sectors/track=63 (16065 blks/cyl)
Figures below won"t work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=2495 heads=255 sectors/track=63 (16065 blks/cyl)
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS superblock is:
The data for partition 1 is:
sysid 12,(DOS or Windows 95 with 32 bit FAT, LBA)
start 63, size 40082112 (19571 Meg), flag 0
beg: cyl 0/ head 1/ sector 1;
end: cyl 1023/ head 254/ sector 63
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
После того как файл улик был связан с виртуальным узлом, можно использовать все команды, которые управляют файлами на устройстве. Конечно, вы должны установить профилактические меры для chmod 400 <имя файла> перед тем, как он будет связан с виртуальным узлом.
Следующая команда демонстрирует монтирование копии исходного носителя, управляемого системой Window, в системе FreeBSD:
forensic# mount -t msdos -o ro /dev/vn0s1 /mnt/evidence forensic# ls /mnt/evidence
После того как вы собрали улики, используя любое из средств, предложенных в этой лекции, необходимо предусмотреть механизм проверки их законности, действующий в любое время. Если законность улик не заслуживает доверия, все усилия по их анализу и сбору могут рассматриваться как пустые траты. Поэтому, применяя принятую в промышленности контрольную сумму MD5 в качестве инструмента для снятия цифровых "отпечатков пальцев" для собранных улик, вы можете гарантировать, что данные, собранные несколько лет назад, в точности совпадают с версией, представленной в суде.
Инструмент md5sum (и MD5 ) поставляется с большинством операционных систем Unix, имеющих открытые исходные коды. Для системы Windows набор инструментальных средств Cygwin содержит исполняемый файл md5sum (см. лекцию "Cygwin").
Инструмент, предназначенный для вычисления контрольной суммы MD5 файла в системе Linux, называется md5sum и обычно поставляется с большинством дистрибутивов Linux. Опции для утилиты md5sum таковы:
forensic# md5sum -справка
Использование: md5sum [ОПЦИЯ] [ФАЙЛ]...
Или: md5sum [ОПЦИЯ] --проверка [ФАЙЛ]
Напечатать или проверить контрольные суммы MD5 (128 битовые).
Если ФАЙЛ отсутствует, или если ФАЙЛ задан как "-", следует стандартный ввод.
-b, --binary читает файлы в двоичном режиме (в системах DOS/Windows
задано по умолчанию)
-c, --check проверяет суммы MD5 в соответствии с заданным списком
-t, --text читает файлы в текстовом режиме
(задано по умолчанию)
Следующий две опции полезны только при проверке контрольных сумм:
--status ничего не выводится, код состояния показывает success (успех)
-w, --warn предупреждает о неверно отформатированных строках
контрольной суммы
--help отображает эту справку и выходит
--version выводит информацию о версии и выходит
Вы вызываете инструмент, задавая один параметр - файл, контрольная сумма которого будет рассчитана. Для судебных целей, все контрольные суммы MD5 будут рассчитываться в двоичном режиме. Следовательно, вы всегда должны использовать ключ -b.
Ниже продемонстрировано вычисление контрольной суммы MD5 для нескольких файлов улик, которые мы скопировали:
forensic# ls disk.1.bin disk.2.bin disk.3.bin disk.4.bin forensic# md5sum -b * md5sums.txt
После получения списка файлов из файла контрольной суммы MD5, ратификация их проста. Ее можно выполнить, указав ключ -c и файл контрольной суммы MD5.
forensic# md5sum -c md5sums.txt disk.1.bin: OK disk.2.bin: OK disk.3.bin: OK disk.4.bin: OK
Если хотя бы 1 бит файла улик изменен, будет выведено сообщение о несовпадении контрольных сумм. Мы открыли двоичный редактор и заменили первый бит с 1 на 0 в файле disk.4.bin. Если мы сравним контрольные суммы MD5 с помощью утилиты md5sum, то получим следующие результаты:
forensic# md5sum -c md5sums.txt disk.1.bin: OK disk.2.bin: OK disk.3.bin: OK disk.4.bin: FAILED md5sum: WARNING: 1 of 4 computed checksums did NOT match
Инструмент md5sum может вычислять контрольную сумму MD5 целых жестких дисков в операционных системах Unix. Это возможно благодаря тому, что система Unix обрабатывает жесткие диски, как специальные файлы, и утилита md5sum не замечает никаких различий. Вскоре мы продемонстрируем, как сравнить контрольную сумму MD5 исходного жесткого диска с контрольной суммой файла улик, полученного в результате судебного дублирования.
md5sum была перенесена на операционную систему Windows. md5sum является частью расширенного дистрибутива Cygwin, который вы изучили в лекции "Cygwin". В Windows-версии все опции и ключи точно такие же, как и в версии Linux. Единственное различие, которое мы заметили при выполнении, состоит в том, что версия Windows не всегда подразумевает ключ -b, и именно поэтому мы рекомендуем, чтобы вы привыкли указывать его явно.В системе FreeBSD инструмент расчета контрольной суммы MD5 называется MD5. Он является частью базовой операционной системы и работает подобно своим аналогам для Windows и Linux. Применение MD5 следующее:
forensic# md5 <имя файла>
Обратите внимание, что инструмент MD5 намного проще, чем его аналог для системы Linux, и вы не должны явно указывать использование двоичного режима. Следующая команда демонстрирует использование утилиты MD5 с файлом улик, собранном в процессе судебного дублирования. Кроме того, контрольная сумма MD5 скопированного исходного жесткого диска совпадает с созданным файлом улик.
forensic# md5 /dev/ad0 MD5 (/dev/ad0) = aa935fb10922184c9c2a8423a1f4e56c forensic# md5/mnt/storage/disk.bin MD5 (/mnt/storage/disk.bin) = aa935fb10922184c9c2a8423a1f4e56c
Пример из жизни. Похищение секретов
Вы работаете в успешной фармацевтической компании, в которой открытие одной химической формулы может помочь перегнать или вывести из строя других игроков в определенном секторе промышленности. Ваша работа состоит не в разработке этих формул; ваша задача заключается в обеспечении защиты огромных компьютерных ресурсов и охране патентованных данных, являющихся собственностью компании. Вы отлично работали до рокового часа в пятницу, когда зазвонил ваш телефон...
Охранник на первом этаже производил обычный обыск служащих, входящих в здание и покидающих его. Доктор Стив Хансен скрыл стандартную дискету внутри полого отделения своей обуви в надежде, что охрана его не поймает. Чиновники вашей компании поручают вам выполнить начальное расследование этого инцидента, и просят проявить большую осторожность, чтобы собрать данные в юридически значимой манере на случай, если они решат преследовать доктора Хансена по закону. Вооружившись инструментальными средствами, рассмотренными в этом разделе, вы имеете достаточно ресурсов для определения того, были ли данные, находящиеся на диске доктора Хансена, специально запрещены для распространения политикой вашей компании, и надо ли квалифицировать в соответствии с американскими законами вынос этих данных, как воровство торговых секретов.
dd. Первое, что вы должны сделать, - это перекинуть защелку на дискете в положение "только для чтения". Это предотвратит, на некотором уровне, изменение содержания диска. Затем вы включаете свой компьютер, чтобы выполнить судебное дублирование исходного носителя информации (дискета). Чтобы запросить дисковод для гибких дисков, вы набираете в командной строке следующую команду.
forensic# dd if=/dev/fd0 of=/mnt/storage/dr_hansen_floppy.bin ¬ conv=notrunc,noerror,sync 2880+0 records in 2880+0 records out
Вы не столкнулись ни с какими ошибками в своем судебном дублировании, потому что количество записей ввода и вывода одинаковы.
Затем вам нужно смонтировать эту копию в среде Linux и рассмотреть ее содержимое. Вы не можете смонтировать ее непосредственно в виде файла, но можете использовать в пределах Linux, чтобы преобразовать копию в специальный
forensic# losetup /dev/loop0 /mnt/storage/dr_hansen_floppy.bin forensic# mount -r /dev/loop0 /mnt/evidence forensic# ls -al /mnt/evidence total 30 drwxr-xr-x 2 root root 7168 Dec 31 1969 . drwxr-xr-x 4 root root 4096 Apr 9 09:52 .. -rwxr-xr-x 1 root root 19456 Apr 25 2002 Secret Formula.doc
После открытия файла
md5sum и md5. Вы помните, что после создания судебной копии необходимо сгенерировать контрольную сумму MD5 и для содержимого дискеты и для файла улик:
forensic# md5sum -b /dev/fd0 e9a4ee253a4537886a59a7973241bf20 */dev/fd0 forensic# md5sum -b floppy.bin e9a4ee253a4537886a59a7973241bf20 *dr_hansen_floppy.bin
Замечательно! Полученное вами изображение является точной побитовой копией исходного гибкого диска.
Эта команда дана последней, чтобы печатная версия данной истории отражала последовательность обсуждения инструментальных средств, приводящуюся в этой лекции. Однако, на самом деле, вам следует выполнить первую команду md5sum непосредственно перед тем, как выполнять дублирование дискеты, а вторую команду md5sum сразу же после окончания дублирования.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.