Инструментальные средства обеспечения безопасности

       

Реализация


Опции командной строки утилиты dd, подходящие для судебного дублирования, следующие.

  • if. Указывает входной файл, который нужно читать.
  • of. Указывает выходной файл, в который будет сделан вывод.
  • bs. Указывает размер блока в байтах, для чтения и записи.
  • count. Указывает число блоков, предназначенных для копирования из входного файла в файл вывода.
  • skip. Указывает число блоков от начала, которые должны быть пропущены, перед чтением из входного файла.
  • conv. Позволяет задавать дополнительные параметры, некоторые из которых следующие:
    • notrunc. Не позволит оборвать вывод в случае ошибки;
    • noerror. Не будет прекращать чтение входного файла в случае ошибки (то есть, если были считаны запорченные блоки, процесс будет продолжаться).
    • sync. Заполнит соответствующие биты вывода нулями, если возникнет ошибка ввода. Это происходит только в том случае, если опция используется вместе с опцией notrunc.

Очевидно, что dd работает с файлами, а не непосредственно на физических устройствах. Однако операционные системы Unix с открытыми исходными кодами, типа Linux и FreeBSD, реализуют устройства, как файлы. Эти специальные файлы, расположенные в каталоге /dev, разрешают прямой доступ к устройствам через операционную систему. Следовательно, входными файлами в dd могут быть целые жесткие диски, разделы жестких дисков или другие устройства. При создании судебной копии жесткого диска входным файлом будет файл устройства жесткого диска (то есть, /dev/hdb в Linux или /dev/ad1 в FreeBSD). При создании судебной копии отдельного раздела, входной файл будет файлом устройства раздела (то есть, /dev/hdb1 в Linux или /dev/ad1s1 в FreeBSD).

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

В операционной системе Unix с открытым исходным кодом, типа Linux и FreeBSD, есть специальный файл, названный подходящим именем /dev/zero, который при его прочтении возвращает неограниченное количество нулей. Если вы используете этот файл как ввод, а носитель информации с уликами, как вывод, то вы запишете нули на носитель с уликами. Когда на весь диск с уликами записаны нули, он считается очищенным перед его последующим использованием.

Внимание. Этот процесс удаляет все данные, структуры файловых систем и не распределенное пространство диска. Будьте очень осторожны при назначении источника и адресата, используя команду dd.

Следующая команда демонстрирует, как бы вы чистили диск с уликами, подключенный к логическому устройству /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 используются следующие опции:



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 байтов, содержащихся в каждом секторе.


Сначала отредактируйте свой файл lilo.conf, который определяет, что будет загружено после запуска системы. Отредактируйте текущий файл lilo.conf, подражая следующему файлу, полученному из системы RedHat Linux 7.2.

Примечание. Возможно, что к моменту издания этой книги NASA выпустит более новую версию своего усовершенствованного устройства 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 Примечание. Выражения, записанные жирным шрифтом, должны быть изменены в зависимости от дистрибутива Linux, который вы используете. В данном случае корневой раздел был присоединен к устройству

/dev/hda2, но оно может быть иным для вашего конкретного судебного компьютера. Кроме того, описываемый здесь процесс работает в системе RedHat Linux 7.2. Установка нового ядра может происходить по разному для разных дистрибутивов Linux, поэтому вам, вероятно, придется почитать документацию, сопровождающую ваш конкретный дистрибутив системы Linux.

Чтобы установить усовершенствованное ядро loopback, загрузите и извлеките его в каталог, используя утилиту tar. Следующая командная строка извлекает исходный код ядра системы.

forensic# tar xzvf linux-2.4.17-xfs-enhanced.tar.gz-C/usr/src

После того как исходный код ядра разархивирован, ядро должно повторно компилироваться. Имейте ввиду, что различные инсталляции будут отличаться друг от друга, потому что платформы, на которых будет выполняться это ядро, могут использовать разные аппаратные средства. Следовательно, во время выполнения команды make menuconfig вы должны выбрать опции, подходящие для вашей платформы. Компиляция может быть выполнена следующими командными строками:




Чтобы скомпилировать поддержку для 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]

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

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 файла в системе 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 и рассмотреть ее содержимое. Вы не можете смонтировать ее непосредственно в виде файла, но можете использовать локальную функцию loopback в пределах 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

После открытия файла 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 сразу же после окончания дублирования.

<

Содержание раздела