Россия, Москва, Московский Государственный Открытый Университет, 2007 |
Некоммерческие наборы инструментов, предназначенные для судебного дублирования
Судебное дублирование #3: создание файла улик на удаленной системе
Если других вариантов нет, судебная копия может быть передана на отдельный компьютер целиком. Это можно сделать, переадресовывая стандартный вывод команды 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: проверка правильности и секретность. Поскольку данные на исходной машине зашифрованы, расшифровка их на компьютере адресата должна давать побитовую копию ввода. Если бы взломщик изменил поток битов в сети, после расшифровки вывод был бы значительно изменен. Кроме того, нападавший не мог перехватить точную копию жесткого диска исходной машины по сети с помощью анализатора сетевого потока (sniffer) типа tcpdump или Ethereal (см. лекцию "Анализаторы сетевых потоков" ). Если бы он мог получить копию, то смог бы обойти и любые локальные меры защиты и исследовать все файлы так же, как судебный аналитик!
На исходной машине выполните следующую команду (судебный компьютер использует IP-адрес 192.168.1.1):
source# dd if=/dev/hdc bs=1024 conv=noerror,notrunc,sync | nc 192.168.1.1 2222
dd: инструмент очистки жесткого диска
Иногда по финансовым соображениям вам может потребоваться повторно использовать жесткие диски для сбора улик с других исходных носителей из других инцидентов. Поэтому жесткий диск-хранилище должен быть свободен от артефактов, оставшихся от предыдущих копий. Наихудший сценарий, с которым может столкнуться следователь, состоит в доказательстве виновности невинного индивидуума на основе артефактов, оставшихся от предыдущего расследования! Это - то место, где утилита dd опять может спасти положение, очистив носитель с уликами перед его повторным использованием.
Реализация
В операционной системе Unix с открытым исходным кодом, типа Linux и FreeBSD, есть специальный файл, названный подходящим именем /dev/zero, который при его прочтении возвращает неограниченное количество нулей. Если вы используете этот файл как ввод, а носитель информации с уликами, как вывод, то вы запишете нули на носитель с уликами. Когда на весь диск с уликами записаны нули, он считается очищенным перед его последующим использованием.
Следующая команда демонстрирует, как бы вы чистили диск с уликами, подключенный к логическому устройству /dev/hdb в системе Linux.
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 при просмотре соответствующего жесткого диска будет идти поиск всего ненулевого, и выдаваться сообщение об этом. Если вы не получите соответствующих сообщений, следовательно жесткий диск содержит одни нули.
losetup: преобразование обыкновенного файла в устройство в системе Linux
Как правило, следователь предпочитает создание обычного файла, который содержит судебную копию, выполненную с помощью утилиты dd. С помощью только этого файла трудно просматривать логические файлы, которые существовали на первоначальном исходном жестком диске. Поэтому, этот обычный файл должен быть преобразован в специальный файл устройства, который эмулирует жесткий диск. Как только обычный файл преобразован в устройство, следователь может анализировать исходную файловую систему точно так же, как оригинальный жесткий диск. Инструмент losetup выполняет это преобразование в системе Linux. ("lo" в названии losetup означает local loopback (локальное закольцовывание) и, следовательно, монтирует обычный файл, так же как это делается с любым жестким диском.)
Реализация
С утилитой losetup используются следующие опции:
forensic# losetup Использование: losetup loop_device # дать информацию losetup -d loop_device # удалить losetup [ -e encryption ] [ -o offset ] loop_device file # установка
Поскольку в процессе судебного анализа мы не будем использовать никакого кодирования, опции кодирования игнорируются. Это упрощает использование инструмента. Сначала мы определяем файл устройства, который будет связан с файлом улик при судебном дублировании. В системе Linux используются файлы устройств /dev/loop#, где # - число от 0 до 9. (Выбор числа произволен и определяется пользователем.) Чтобы сделать первое loopback -устройство, связанное с файлом улик, лучше всего подойдет следующая командная строка.
forensic# losetup/dev/loop0/mnt/storage/disk.bin
Следующая команда демонстрирует команду losetup в действии. Для отображения жесткого диска была использована утилита dd с исходного диска, присоединенного к файлу устройства /dev/hdb, а файл улик был сохранен в каталоге /mnt/storage/disk.bin. Файл был связан с файлом устройства /dev/loop0, используя 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.