Dd: инструмент очистки жесткого диска
Иногда по финансовым соображениям вам может потребоваться повторно использовать жесткие диски для сбора улик с других исходных носителей из других инцидентов. Поэтому жесткий диск-хранилище должен быть свободен от артефактов, оставшихся от предыдущих копий. Наихудший сценарий, с которым может столкнуться следователь, состоит в доказательстве виновности невинного индивидуума на основе артефактов, оставшихся от предыдущего расследования! Это - то место, где утилита dd опять может спасти положение, очистив носитель с уликами перед его повторным использованием.
Dd: инструмент судебного дублирования
Инструмент dd используется для побитного копирования одного файла в другой. Копирование битов таким способом является основой всех инструментальных средств судебного дублирования. Инструмент dd универсален, а его исходный текст доступен публике. Кроме того, dd может компилироваться на почти любой платформе Unix. В этом разделе обсуждаются методы, которые может реализовать инструмент dd для выполнения судебного дублирования.
Инструмент dd первоначально был написан Полом Рубином (Paul Rubin), Дэвидом Маккензи (David MacKenzie) и Стюартом Кемом (Stuart Kem) для преобразования данных. Исходный текст и справочная страница фактически не сообщают того, что dd значит на самом деле, представляя его в целом как "программу, предназначенную для дампа данных". Инструмент dd включен в пакет файловых утилит GNU (GNU fileutils) и его можно загрузить с сайта http://mirrors.kernel.org/gnu/fileutils/.
Losetup: преобразование обыкновенного файла в устройство в системе Linux
Как правило, следователь предпочитает создание обычного файла, который содержит судебную копию, выполненную с помощью утилиты dd. С помощью только этого файла трудно просматривать логические файлы, которые существовали на первоначальном исходном жестком диске. Поэтому, этот обычный файл должен быть преобразован в специальный файл устройства, который эмулирует жесткий диск. Как только обычный файл преобразован в устройство, следователь может анализировать исходную файловую систему точно так же, как оригинальный жесткий диск. Инструмент losetup выполняет это преобразование в системе Linux. ("lo" в названии losetup означает local loopback (локальное закольцовывание) и, следовательно, монтирует обычный файл, так же как это делается с любым жестким диском.)
Примечание. Монтирование файловой системы обеспечивает только логическое представление исходной файловой системы. Хотя каждый бит все еще доступен через устройство loopback, в базовой инсталляции операционной системы Unix нет никаких инструментальных средств, позволяющих быстро просматривать файлы, удаленные из исходной файловой системы.
Md5sum и md5: ратификация собранных улик
После того как вы собрали улики, используя любое из средств, предложенных в этой лекции, необходимо предусмотреть механизм проверки их законности, действующий в любое время. Если законность улик не заслуживает доверия, все усилия по их анализу и сбору могут рассматриваться как пустые траты. Поэтому, применяя принятую в промышленности контрольную сумму MD5 в качестве инструмента для снятия цифровых "отпечатков пальцев" для собранных улик, вы можете гарантировать, что данные, собранные несколько лет назад, в точности совпадают с версией, представленной в суде.
Инструмент md5sum (и MD5) поставляется с большинством операционных систем Unix, имеющих открытые исходные коды. Для системы Windows набор инструментальных средств Cygwin содержит исполняемый файл md5sum (см. лекцию "Cygwin").
Реализация
Опции командной строки утилиты 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 сразу же после окончания дублирования.
<
Судебное дублирование #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-гигабайтного жесткого диска при увеличении размера блока! Конечно, в какой-то момент вы почувствуете уменьшение отдачи и, возможно, захотите поэкспериментировать со своей аппаратурой и определить, что больше подходит для вашего конкретного случая.
Судебное дублирование #3: создание файла улик на удаленной системе
Если других вариантов нет, судебная копия может быть передана на отдельный компьютер целиком. Это можно сделать, переадресовывая стандартный вывод команды dd через Netcat (или Cryptcat) на другую машину, связанную TCP/IP-сетью. (Обсуждения Netcat или Cryptcat см. в лекции "NETCAT и CRYPTCAT").
Исходная машина, содержащая отображаемый носитель информации, должна быть загружена с надежной дискеты или компакт-диска системой Linux или FreeBSD. Создание надежной дискеты или компакт-диска не должно отнять у вас много времени и сил, поскольку выполнению такой задачи были посвящены целые проекты. Один из примеров - система Trinux, которую вы можете найти на сайте http://trinux.sourceforge.net и решить, подходит ли она вам. Чтобы все было согласовано, компьютер адресата должен быть загружен системой Unix. После этого судебное дублирование по сети может быть выполнено простыми командами.
Примечание. На судебный компьютер операционную систему Unix загружать не обязательно. Компьютер адресата может иметь операционную систему Windows.
На рабочей станции адресата выполните следующую команду:
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
Усовершенствованное устройство loopback в системе Linux
В последней секции, чтобы получить доступ к разделу, мы должны были изменить смещение с помощью losetup, потому что устройства loopback не распознают таблиц разделов. При монтировании файловой системы на устройствах loopback процесс угадывания, где начинается раздел, может оказаться утомительным и ненужным. К счастью, NASA разработало новое усовершенствованное loopback-устройство для решения проблемы смещения, и это значительно облегчает процесс судебного анализа.
На момент написания этой книги усовершенствованное устройство loopback не было связано с каким-либо дистрибутивом Linux, но его можно было найти на общедоступном FTP-сервере, расположенном на ftp://ftp.hq.nasa.gov/pub/ig/ccd/enhanced_loo pback/. Необходимо выполнить две установки, чтобы получить усовершенствованные функциональные возможности. Одна установка обновит ядро на модифицированное, а другая добавит инструментальные средства, необходимые для использования дополнительных возможностей, которые может предоставить новое ядро.
Vnode: преобразование обычного файла в устройство системы FreeBSD
Так же, как утилита losetup позволяет преобразовывать файл улик, созданный в результате судебного дублирования, в устройство, приспособленное для анализа, так и функция vnode системы FreeBSD позволяет выполнить ту же самую задачу. Устройство vnode в системе FreeBSD связывает обыкновенный файл с абстрактным устройством, обозначенным, как /dev/vn#, где # означает номер устройства, которое является произвольным и определяется пользователем. После того, как вы свяжите файл улик с устройством vnode, используя утилиту vnconfig, можете монтировать или анализировать вновь созданный специальный файл так, как это делаете с реальным жестким диском.
Примечание. Монтирование файловой системы обеспечивает только логическое представление исходной файловой системы. Хотя каждый бит и доступен через устройство loopback, базовая инсталляция операционных систем Unix не имеет никаких инструментальных средств для быстрого просмотра файлов, удаленных из файловой системы.
EnCase
EnCase представляет собой широко используемый набор инструментов судебного анализа. Его используют многие следователи правоохранительных органов. Он также широко используется в финансовых учреждениях, оказывая помощь при внутренних расследованиях. EnCase, подобно набору Forensic Toolkit приспособлен для аналитиков, которые не углубляются в знание деталей, касающиеся жестких дисков и структур данных операционной системы. Кроме того, EnCase включает в себя как инструментальные средства получения данных, так и средства их анализа, превращая его в самодостаточный комплект для успешного завершения почти любого расследования. EnCase - коммерческий набор инструментов и стоит (приблизительно) от $2000 до $4000, в зависимости от того, являетесь ли вы представителем правоохранительных органов или коммерческим клиентом. Чтобы использовать аналитическую часть комплекта, для EnCase, подобно FTK, требуется защитная заглушка (dongle).
Примечание. Руководство пользователя EnCase включает общий судебный учебник для начинающих, который необходимо прочесть прежде, чем вы начнете пользоваться этим инструментом.
EnCase может анализировать почти все популярные файловые системы, включая NTFS, FAT32 и EXT2. Это делает его очень разносторонним инструментом для организаций, пользующихся различными платформами. EnCase можно приобрести на сайте http://www.encase.com компании Guidance Software.
Forensic toolkit
Судебный комплект инструментов Forensic Toolkit (FTK) от компании AccessData (http://www.accessdata.com) помогает аналитику, сокращая большие наборы данных до поднабора, содержащего важную информацию. FTK - коммерческий продукт. Он продается компанией AccessData. До конца прошлого года FTK поставлялся вместе с программой SnapBack, являющейся коммерческим инструментом судебного дублирования (см. лекцию "Коммерческие наборы инструментов для судебного дублирования").
Внимание. Для работы FTK требуется защитная заглушка (dongle). Если у вас нет защитной заглушки, вам нужно связаться с компанией AccessData, и это может задержать ваше расследование.
FTK может автоматически извлекать документы Microsoft Office, электронной почты, отслеживать деятельность, связанную с интернетом, и пр. Поскольку инструмент делает это автоматически, он экономит время, чтобы аналитик мог приступить сразу к анализу важных данных. Инструмент FTK полностью индексирует данные, поэтому поиск по ключевым словам происходит почти мгновенно. При работе с изображением жесткого диска в несколько гигабайт это свойство может сэкономить часы, проведенные за судебным компьютером.
Инструмент FTK анализирует только файловые системы Microsoft Windows. Поэтому, если система, которую вы расследуете, относится к системам Unix, то для ее анализа нужно использовать другие инструменты: EnCase или комплект инструментов Coroner.
Судебный комплект инструментов Forensic Toolkit (FTK) от компании AccessData (http://www.accessdata.com) помогает аналитику, сокращая большие наборы данных до поднабора, содержащего важную информацию. FTK - коммерческий продукт. Он продается компанией AccessData. До конца прошлого года FTK поставлялся вместе с программой SnapBack, являющейся коммерческим инструментом судебного дублирования (см. лекцию "Коммерческие наборы инструментов для судебного дублирования").
Внимание. Для работы FTK требуется защитная заглушка (dongle). Если у вас нет защитной заглушки, вам нужно связаться с компанией AccessData, и это может задержать ваше расследование.
FTK может автоматически извлекать документы Microsoft Office, электронной почты, отслеживать деятельность, связанную с интернетом, и пр. Поскольку инструмент делает это автоматически, он экономит время, чтобы аналитик мог приступить сразу к анализу важных данных. Инструмент FTK полностью индексирует данные, поэтому поиск по ключевым словам происходит почти мгновенно. При работе с изображением жесткого диска в несколько гигабайт это свойство может сэкономить часы, проведенные за судебным компьютером.
Инструмент FTK анализирует только файловые системы Microsoft Windows. Поэтому, если система, которую вы расследуете, относится к системам Unix, то для ее анализа нужно использовать другие инструменты: EnCase или комплект инструментов Coroner.
Инструментальные средства обеспечения безопасности
Утилита graverobber собирает важную, не удаленную информацию с нужной системы. Ее можно вызвать в двух различных состояниях: для сбора информации с "живой" системы (системы, которая в настоящее время запущена) и для сбора информации с автономной системы. Для анализа автономной системы вам необходимо иметь доступ к интересующему вас жесткому диску или его представлению, сделанному с помощью dd. Мы начнем с рассмотрения состояния, в котором собираются "живые" данные, а затем рассмотрим анализ автономной системы.
Утилита graverobber является инструментом, который управляется из командной строки, и имеет многочисленные ключи. Информация по использованию командной строки находится в исходном коде утилиты graverobber.
Использование: grave-robber [-filmnpstvDEFIMOPVS] [-b body_file] [-c corpse_dir] [-d data_directory] [-e error_file] [-o os_type] [directory_name(s)] Общие: -b body bodyfile. Используйте "-" для стандартного вывода stdout. -c corpse_dir каталог, в котором будет выполнен анализ выключенной системы. Как правило, это смонтированный диск. -d dir Каталог для выходных данных. -e file Перенаправляет стандартный поток ошибок в этот файл. -o os_type Спецификация типа автономной OC. В версии TCT-1.09 поддерживаются следующие операционные системы: FREEBSD2, FREEBSD3, FREEBSD4, OPENBSD2, BSDI2, BSDI3, BSDI4, SUNOS4, SUNOS5, LINUX2. -v Обеспечивает подробный вывод.
Сбор микро-данных. -F Собирает файлы из файловой системы по мере их прохождения. Копирует объекты из переменной $conf_pattern, установленной в coroner.cf, обычно включающей стандартные выражения, подобные "*.cf", "*.conf", и т.д. Подразумевает -m. -i Собирает пассивные данные Inode. -I Перехватывает выполняющиеся процессы. Пробуйте вначале копировать с процессора, а затем извлекайте изображение прямо с диска. Требует "живой" функционирующей системы. -l Выполняет действия, касающиеся материалов "look@first" (обрабатывать в первую очередь) - обрабатывает путь, ищет файлы в каталоге look@first.
Требует "живой" системы. -m Перехватывает данные MACtime. -M Вычисляет контрольные суммы MD5файлов. Подразумевает ключ -m. -O Сохраняет файлы, которые открыты, но были удалены с диска (зачастую это файлы конфигурации, исполняемые файлы и т.д.). Требует "живой системы". -p Копирует задействованную память в файл с помощью команды pcat. В некоторых системах с этой командой возникают проблемы, так что будьте осторожны! Требует "живой" системы. -P Выполняет действующие команды - ps, lsof, и т.д. Требует "живой" системы. -s Выполняет общие команды Shell на хосте; это включает сбор информации в сети и на хосте типа netstat, df и т.д. Этот ключ не включает действующие команды (ps/lsof) (смотрите ключ -P). -S Сохраняет файлы, перечисленные в "save_these_files" (conf dir). -t Собирает надежную информацию. -V Собирает информацию из каталога dev.
Сбор макро-данных -f Быстрый сбор данных. Избегает операций с файловой системой. Не используется вместе с опцией -m. Эта опция подразумевает ключи -P, -s и -O. -n Сбор данных, заданный по умолчанию. Устанавливает ключи -i, -I, -m, -M, -P, -s, -t, -l, -O, -F, -S, -V. -E Выполняет все, что можно, включая опасные опции. В настоящее время в версии 1.09 этот ключ добавляет только -p к ключам, заданным по умолчанию.
Листинг 22.1. Примечание. Если никаких имен каталогов не задано, то graverobber подразумевает корневой каталог (/).
Если приведенный выше список выглядит устрашающе, не волнуйтесь. Выполнение утилиты graverobber сведется к одной команде. Команда, которая нас интересует, предназначенная для сбора данных с функционирующей "живой" системы (обработка каталога /), выглядит следующим образом:
victim# cd tct-1.09/bin victim# mkdir /mnt/storage/evid victim# ./grave-robber -v -d /mnt/storage/evid/
С параметром -v graverobber выполняется в подробном режиме. С помощью параметра -d каталог /mnt/storage/evid задается, как область хранения вывода.
Имеется несколько пояснений, касающихся предыдущей команды, которые стоит упомянуть.
Во-первых, набор инструментов должен быть установлен и скомпилирован на системе-жертве. Потенциально это может уничтожить часть улик, если вы захотите в будущем выполнить судебное дублирование этого жесткого диска (для автономного анализа с использованием TCT). Во-вторых, количество данных, произведенных этим процессом, может быть огромно и обычно оно не помещается на гибком диске. Поэтому, приведенная здесь команда использовала каталог /mnt/storage/evid, который может находиться на внешнем жестком диске, смонтированном через сетевую файловую систему (NFS). Монтирование каталога-хранилища через NFS поможет уменьшить деятельность на жестком диске жертвы, если вам потребуется выполнять судебное дублирование в будущем. Возможно, что вы захотите скопировать и скомпилировать TCT на том же жестком диске по той же самой причине. Когда graverobber закончит работу, вы получите каталог /mnt/storage/evid, заполненный уликами, предназначенными для дальнейшего анализа.
Для примера, рассматриваемого в этой лекции, предположим, что мы экспортировали каталог /mnt/storage с нашего судебного компьютера и установили его на машине-жертве через NFS. Теперь весь дополнительный анализ мы выполним на судебной рабочей станции. Чтобы ограничить возможное изменение состояния машины-жертвы, на ней будут собраны только те данные, которые очевидно являются уликами. Мы будем придерживаться этого фундаментального судебного принципа на случай, если позже мы захотим выполнить дублирование.
forensic# pwd /mnt/storage/evid forensic# ls -al total 4460 drwxr-xr-x 9 root wheel 4096 Apr 19 12:23 . drwxr-xr-x 3 root wheel 4096 Apr 19 12:23 .. -rw-r--r-- 1 root wheel 81342 Apr 19 12:23 MD5_all -rw-r--r-- 1 root wheel 54 Apr 19 12:23 MD5_all.md5 -rw-r--r-- 1 root wheel 4414968 Apr 19 12:23 body -rw-r--r-- 1 root wheel 8282 Apr 19 12:23 body.S drwx------ 2 root wheel 4096 Apr 19 12:23 command_out drwx------ 8 root wheel 4096 Apr 19 12:23 conf_vault drwx------ 2 root wheel 4096 Apr 19 12:23 icat drwx------ 2 root wheel 4096 Apr 19 12:23 proc drwx------ 2 root wheel 4096 Apr 19 12:23 removed_but_running drwx------ 2 root wheel 4096 Apr 19 12:23 trust drwx------ 2 root wheel 4096 Apr 19 12:23 user_vault
Файл MD5_all будет содержать все контрольные суммы MD5-вывода, произведенного утилитой graverobber. Фрагмент этого файла показан ниже.
Fri Apr 19 14:45:00 EDT 2002 d41d8cd98f00b204e9800998ecf8427e /root/evid// c213baacdb82f1b4b7b017e64bb7f9e9 /root/evid//body.S 121eb60b8a0a74045fefe3e3c445a766 /root/evid//body d41d8cd98f00b204e9800998ecf8427e /root/evid//command_out f2e21b93a776dbd2bf8e2c180bbf0d2b /mnt/storage/evid//command_out/lsof0 1977905a8c61187e98a3ed83a04d337f /mnt/storage/evid//command_out/lsof0.md5 3f75c98c1c0722e4fe2f473f61084c5d /mnt/storage/evid//command_out/lsof 688d73a46ffd897436c08519108fd1e8 /mnt/storage/evid//command_out/lsof.md5 1a42658e1680864aa41ce65f14a44a7d /mnt/storage/evid//command_out/ps 76df89b0b72d90d18e6d04184d4660b3 /mnt/storage/evid//command_out/ps.md5 Примечание. Может показаться странным получение контрольной суммы MD5-каталога, но если вы представите себе каталог, как специальный файл на диске, который указывает на содержащиеся в нем файлы и каталоги, то вычисление контрольной суммы MD5 станет возможным.
Так как невозможно вычислить контрольную сумму MD5-файла MD5_all, когда вычисляются другие суммы (потому что результат добавляется к файлу), существует файл MD5_all.md5. Он содержит контрольную сумму MD5-файла MD5_all. Содержание этого файла следующее.
c185ae9291fda9365ac87193d437b01b /mnt/storage/evid // MD5_all
Основной файл содержит большую часть информации, собранной утилитой graverobber. В основном он представляет собой электронную таблицу с информацией, разграниченной символом "|" и имеющей отношение к MAC-временам, разрешениям файлов, правам собственности файлов и другой информации, относящейся к нашему расследованию. Содержание файла выглядит подобно следующему фрагменту.
class|host|start_time body|redhat62|1018203800 md5|file|st_dev|st_ino|st_mode|st_ls|st_nlink|st_uid|st_gid|st_rdev|st_size |st_atime|st_mtime|st_ctime|st_blksize|st_blocks cc6a0e39ec990af13cc6406bbc0ff333|/sbin/arp|770|100477|33261| -rwxr-xr-x|1|0|0|0|36272|1018203746|952425102|1016710670|4096|72 d73b4aa0d067479b7b80555fbca64f99|/usr/bin/at|770|16748|35309 |-rwsr-xr-x|1|0|0|0|33288|1018203769|951940087|1016710377|4096|72 93287edbf19f164bb81b188b6475d756|/bin/cat|770|81832|33261 |-rwxr-xr-x|1|0|0|0|9528|1018203746|949931427|1016710371|4096|24 023915f5fd17489a0595277e1051eac0|/bin/cp|770|81820|33261 |-rwxr-xr-x|1|0|0|0|33392|1018203754|952479772|1016710370|4096|72
Строки, записанные курсивом, очевидно, показывают названия полей. Большая часть этой информации может показаться вам бессмысленной, и мы не будем обременять вас излишними деталями. Однако вы должны помнить, что утилита graverobber (и другие инструментальные средства из пакета TCT) может использовать эту информацию, чтобы вывести более значащие сообщения. Мы возвратимся к этой теме после того, как обсудим остальную часть структуры файла улик, произведенного инструментом TCT.
Файл body.S имеет ту же самую структуру, что и основной файл, обсуждавшийся ранее, за исключением того, что он содержит все программы SUID с машины-жертвы. Если вы плохо знакомы с системой Unix, то все программы SUID должны быть интересны вам как следователю. Причина здесь в том, что когда эти файлы выполняются, результирующий процесс изменяет текущего пользователя на владельца файла. Скорее, мы заинтересовались бы SUID-файлами, которые принадлежат привилегированному пользователю (root).
Каталог command_out содержит выводы, сделанные командами, выполненными в системе инструментом TCT. Так как мы решили выполнить утилиту graverobber на "живой" системе, то это как раз та информация, которую мы ищем! Мы будем иметь вывод каждой выполненной команды, такой как arp, перенаправленный в файл с названием, совпадающим с именем команды. Для файла вывода также будет вычислена контрольная сумма MD5 и сохранена в файле с тем же самым именем и расширением .md5. Если вы хотите обратиться к файлу регистрации команд, выполненных в системе, можете прочитать файл coroner.log, находящийся в вершине каталога данных.
forensic# ls -al total 428 drwx------ 2 root wheel 4096 Apr 19 12:23 . drwxr-xr-x 9 root wheel 4096 Apr 19 12:23 .. -rw-r--r-- 1 root wheel 29 Apr 19 12:23 arp -rw-r--r-- 1 root wheel 62 Apr 19 12:23 arp.md5 -rw-r--r-- 1 root wheel 154 Apr 19 12:23 df -rw-r--r-- 1 root wheel 61 Apr 19 12:23 df.md5 -rw-r--r-- 1 root wheel 4291 Apr 19 12:23 dmesg -rw-r--r-- 1 root wheel 64 Apr 19 12:23 dmesg.md5 -rw-r--r-- 1 root wheel 401 Apr 19 12:23 finger -rw-r--r-- 1 root wheel 65 Apr 19 12:23 finger.md5 -rw-r--r-- 1 root wheel 1147 Apr 19 12:23 free_inode_info._dev_hda2 -rw-r--r-- 1 root wheel 84 Apr 19 12:23 free_inode_info._dev_hda2.md5 -rw-r--r-- 1 root wheel 732 Apr 19 12:23 ifconfig -rw-r--r-- 1 root wheel 67 Apr 19 12:23 ifconfig.md5 -rw-r--r-- 1 root wheel 337 Apr 19 12:23 ipcs
Чтобы яснее видеть то, что мы здесь описываем, исследуем файл ifconfig. Так как команда ifconfig в системе Unix дает информацию о плате сетевого интерфейса, мы ожидаем увидеть IP-адреса и доступные интерфейсы. Следующая информация была собрана с нашей системы.
forensic# cat ifconfig Sun Apr 7 14:25:37 EDT 2002 eth0 Link encap:Ethernet HWaddr 00:BD:73:9E:00:01 inet addr:192.168.1.104 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:851 errors:0 dropped:0 overruns:0 frame:0 TX packets:725 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:9 Base address:0x1000
Lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:89 errors:0 dropped:0 overruns:0 frame:0 TX packets:89 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
forensic# cat ifconfig.md5 cae275f055428cdaa505f81970b29662 /mnt/storage/evid//command_out/ifconfig
Важно отметить, что большинство улик, найденных в этом каталоге, потерялось бы, если бы машина-жертва была выключена. Выключение системы и получение ее изображения прежде, чем будет выполнен любой другой анализ - это стандартная методика, используемая многими организациями и, по нашему мнению, она является результатом заблуждения. Если нет специфической угрозы потери данных или их повреждения, то обычно разумнее оставить систему работающей и перед выключением машины собрать ценную информацию, пропадающую после ее выключения. Без "короткоживущих" данных, типа netstat, мы бы не смогли увидеть, какого типа сетевая деятельность велась на машине-жертве.
Каталог conf_vault содержит все интересные системные файлы конфигурации. Он также записывает большинство основных (home) каталогов пользователей в системе. Файлы в этом каталоге сохраняются с той же структурой каталога, как и в первоначальной системе-жертве. Кроме того, утилита graverobber создает файл с именем index.html, который может быть загружен в Web-броузере.
Это позволяет выбирать папки обычным образом в пределах этого каталога.
Каталоги icat и proc содержат изображения выполняющихся процессов. Эти каталоги очень важны для исследования системы Unix, потому что исполняемый файл может быть отмечен, как удаленный в файловой системе, но все еще выполняться в памяти. Как вы, наверное, догадываетесь, большинство взломщиков запускают инструменты типа программ черного хода (backdoor) или анализаторы сетевых потоков (sniffer) и удаляют исполняемый файл. Эти каталоги дают единственный способ найти изображения процессов так, чтобы вы затем могли проанализировать их с помощью инструментов. В этом каталоге файлы названы в соответствии с первоначальным ID процесса (PID). Они имеют временную метку (timestamp), содержащую время, когда они были зафиксированы. Утилита graverobber также создает файл .md5, который содержит контрольную сумму MD5-изображения исполняемого файла. Следующая выборка, сделанная из каталога proc, поможет проиллюстрировать нашу точку зрения:
forensic# ls -al total 3312 drwx------ 2 root wheel 4096 Apr 19 12:23 . drwxr-xr-x 9 root wheel 4096 Apr 19 12:23 .. -rw-r--r-- 1 root wheel 25968 Apr 19 14:23 1.out_2002_04_19_14:23:20_-0400 -rw-r--r-- 1 root wheel 83 Apr 19 14:23 1.out_2002_04_19_14:23:20_-0400.md5
Каталог removed_but_running содержит файлы, которые были удалены, но все еще были открыты во время выполнения утилиты graverobber. Эта ситуация может возникать в тех случаях, когда атакующий загрузил исполняемый файл (например, анализатор сетевого потока), а затем удалил все еще открытый файл. Поскольку файл не был полностью удален из физической файловой системы, мы можем найти его копию. Обратите внимание, однако, что файл удален из логической файловой системы. Название каждого файла в каталоге removed_but_running указывает на то, когда данные были собраны, подобно именам изображений процессов, которые обсуждались ранее.
Следующий каталог, который мы видим в уликах - это каталог trust. Каталог trust содержит файлы, которые устанавливают любой тип доверия между этой системой и другими.В нашем примере в этом каталоге не было установлено никаких доверительных отношений.
Последний каталог, user_vault, содержит файлы из каждого пользовательского каталога, которые могут помочь нашему расследованию. Некоторые из собранных в нем данных, являются файлами .bash_history из всех пользовательских каталогов. Файлы .bash_history содержат список последних команд, которые пользователь попытался выполнять. По нашему опыту, если эти файлы найдены, то они или позволят вам поймать неопытного хакера, из тех, кто не знаком с системой Unix, или не содержат ничего полезного для нашего расследования.
Lazarus
lazarus является единственным некоммерческим инструментальным средством, доступным широкой публике, которое пытается восстанавливать файлы из автономной файловой системы. Как было объявлено, lazarus предназначен для восстановления файлов из файловых систем UFS, EXT2, NTFS и FAT32.
lazarus анализирует данные, прошедшие утилиту unrm, которая обсуждалась в предыдущем разделе. Поскольку lazarus выведет еще большее количество информации из файла unrm, то можно ожидать, что для выполнения этого инструмента потребуется так же много свободного пространства, как требовалось для unrm. Поэтому, если вся файловая система файла занимала 2Гб, и 1,5Гб из них были свободны, то утилите unrm потребуется 1,5Гб свободного пространства на судебном компьютере, а для lazarus потребуется еще почти 1,5Гб свободного пространства. Кроме того, lazarus ни в коем случае не является быстрым инструментом. Ему потребуется длительное время непрерывной работы для полного завершения анализа.
lazarus управляется из командной строки. Вам доступны следующие опции (эту информацию можно найти, рассматривая исходный текст утилиты lazarus):
Использование: lazarus [флаги] <имя файла изображения> Имеются следующие опции: -1 Этот ключ позволяет обрабатывать по одному байту за один раз, вместо обработки за раз одного блока (1КБ) данных. -b Этот ключ позволяет не писать нераспознанные двоичные блоки данных (по умолчанию они пишутся). -B Этот ключ позволяет не писать никаких двоичных блоков данных (по умолчанию они пишутся). -h Этот ключ позволяет генерировать HTML-код вместо ascii текста. Он делает вывод в три файла - файл данных ($ARGV [0]) +.html, .menu.html и .frame.html. Вначале вы захотите взглянуть на файл $ARGV [0] .frame.html (в своем броузере). -H каталог позволяет писать HTML-код в каталог с этим именем. Этот ключ должен использоваться с флагом -h. -D каталог Этот ключ позволяет писать восстановленные блоки в каталог с этим именем. -t Этот ключ позволяет не писать нераспознанные блоки текстовых данных (по умолчанию они пишутся). -T Этот ключ позволяет не писать никаких блоков текстовых данных (по умолчанию они пишутся). -w каталог Использует этот каталог, чтобы писать весь HTML-код.
Используйте этот ключ с флагом -h.
Следующая команда обычно используется для восстановления блоков данных из судебной копии машины-жертвы.
forensic# ./lazarus -h /mnt/storage/www -D /mnt/storage/blocks /mnt/storage/linux_free.bin
Вывод (через несколько часов!) будет сделан в каталог /mnt/storage, а файл назван linux_ free.bin.html. Загрузите этот файл в свой броузер и рассмотрите файлы, восстановленные с жесткого диска. Следующая иллюстрация показывает начальную Web-страницу, которую мы загрузили.
увеличить изображение
Этот экран показывает весь жесткий диск в виде блоков в логарифмическом масштабе. Каждый блок, представленный как ".", указывает свободное пространство, которое не восстановлено к файлу. Любой другой блок имеет код типа T, X и так далее, который можно активизировать щелчком. Щелкая на этом коде, вы можете переместиться к восстановленному файлу.
Каждый код представляет свой тип файла. T представляет текстовый файл, X - исполняемый файл, H - файл HTML и так далее. Коды суммированы в следующем списке.
T | серый | Нераспознанный текст. |
F | Ярко-красный | Вывод анализатора сетевого потока (Sniffer). |
М | Синий | Почта. |
Q | Бледно-синий | Файлы Mailq. |
S | Фиолетовый | Файлы Emacs/lisp. |
P | Зеленоватый | Программные файлы. |
C | Зеленый | код на языке C. |
H | Светло-фиолетовый | HTML. |
W | Красноватый | Файлы пароля. |
L | Светло-коричневый | Журналы регистрации. |
. | Черный | Нераспознанные блоки. |
O | Светло-серый | Пустые блоки. |
R | Черный | Удаленные блоки. |
X | Черный | Исполняемые двоичные файлы. |
E | Золотой | Двоичные ELF. |
I | Зеленоватый | Файлы JPG/GIF. |
A | Черный | Архив (cpio, tar и другие). |
Z | Зеленоватый | Сжатые файлы. |
! | Черный | Аудио файлы. |
увеличить изображение
Примечание. Инструмент TCT был выполнен на том же жестком диске, который мы анализировали в процессе "живого ответа" в лекции "Создание и использование комплекта инструментов "живого ответа" для Unix". Это тот же самый фрагмент данных, который мы видели в файле /etc/motd, и который редактировался взломщиком.
Важно отметить, что lazarus может также обрабатывать устройства, не подвергнутые предварительной обработке (например, копии жесткого диска жертвы), также как и вывод утилиты unrm. Различие будет только во времени, которое займет обработка, потому что надо будет исследовать большее количество блоков данных.
Пример из жизни. Бегство служащего компании, подозреваемого в нелегальной деятельности
Вы - судебный эксперт D.E.A. (Администрация по контролю за применением законов о наркотиках), и собираетесь получить нужную вам информацию в крупной фармацевтической компании, мощный компьютер которой обрабатывает данные для разработки новейшего препарата. В пятницу утром вы приезжаете в эту компанию и передаете им юридические документы, позволяющие вам сделать копии и провести анализ нужных вам дисков. Подозревается, что один из служащих этой компании, Кевин Джонсон, использовал свою службу в компании для передачи информации южноамериканским наркобаронам. Предполагается, что в обмен на большую сумму денег он использовал для разработки наркотиков некоторые ресурсы компании. Кевин Джонсон ускользнул от наблюдения властей и исчез без следа.
Все, что имеет D.E.A. в качестве доказательства его связей - это IP-адреса, среди которых отправителем является офис компании, а получателем - южноамериканский адресат. Вы должны предоставить необходимую информацию отделу D.E.A. и помочь расследованию. Вы, конечно, прочитали лекции "Коммерческие наборы инструментов для судебного дублирования" и знаете, как создать судебную копию рабочего компьютера, оставленного Кевином Джонсоном. Для сбора данных вы выбираете инструмент EnCase, чтобы импортировать эти данные в соответствующие инструментальные средства.
The Forensic Toolkit. Мы видели, как нескольких щелчков мыши позволяют понять, для чего использовался жесткий диск Кевина Джонсона. Рассматривая электронную почту, автоматически обнаруженную инструментом FTK, мы узнаем, что Кевин планировал встретиться в Колумбии с какой-то женщиной. Теперь у D.E.A. есть зацепка, которой не было раньше: адрес электронной почты ladybluebird@hotpop.com.
EnCase. EnCase находит информацию, подобно FTK. Он делает это достаточно эффективно, и мы можем использовать различные внешние средства для просмотра данных, которые считаем важными. Кроме того, мы можем экспортировать данные для восстановления улик, например, электронной почты.
Кроме того, используя утилиту EScripts, мы смогли восстановить историю поисков в интернете и получить результаты в удобной для пользователя форме. Из этого отчета видно, что Кевина Джонсона интересовала информация о южноамериканских городах, например, он рассматривал карту Боготы (Колумбия). Кроме того, Кевин Джонсон просматривал информацию о внутренних гаванях Балтимора (штат Мэриленд). Разумно предположить, что мистер Джонсон может появиться в одном из этих городов, и отделу D.E.A. следует установить в этих городах наблюдение.
© 2003-2007 INTUIT.ru. Все права защищены. |
Mactime
Одна из стадий реагирования на инцидент состоит в определении временного графика атаки. Это может выполняться для следственных целей или в целях восстановления системы. Удачно, что TCT имеет инструмент mactime, который вычисляет время последней модификации, время последнего обращения и время ctime (последняя модификация структуры файла, например, разрешений) после заданной даты. По желанию мы можем также выбрать конечную дату, создав временные рамки, ограничивающие наш анализ. Если мы не определяем значение второго времени time2, это значение по умолчанию будет текущим временем. Инструмент имеет много опций командной строки и их резюме, согласно исходному коду, таково:
Использование: mactime [-DfhlnpRsty] [-d directory] [-g group] [-p passwd] [-u user] [-b bodyfile] time1[-time2] [-d directory] Формат времени задан в самой простой форме как: Месяц/день/год - 4/5/1982 Обязательно задавайте год в виде четырех цифр.
-b [файл] Использует этот файл как альтернативный основной ("body") файл вместо заданного по умолчанию ($DATA/$body). -B [файл] Выводит основную часть в этот файл. Знак "-" является стандартным выводом stdout, конечно. Этот ключ удобен для использования только с флагом -d. -d [каталог] Указывает определенный каталог для отчета. Этот ключ не использует обычный файл основной базы данных. -f [имя файла] Помечает файлы, перечисленные в заданном файле, другим цветом (только HTML!). -g [имя файла] Этот флаг использует альтернативный файл группы для печати групп. -h Этот флаг выдает некоторый простой вывод HTML вместо открытого ascii текста. -l Берет "последний" вывод. -n Этот флажок заставляет mactime принимать вывод с нормальной "датой", который выглядит примерно так: "Tue Apr 7 17:20:43 PDT 1998". -p [имя файла] Этот флаг использует альтернативный файл пароля для печати пользовательских идентификаторов (ID). -R Этот флаг конфигурирует mactime для рекурсивного анализа подката логов (полезен только с флагом -d). -s Этот ключ помечает файлы SUID/SGID другим цветом (только HTML!). -t Этот ключ выводит время в машинном формате. -u [пользователь] Помечает файлы, принадлежащие пользователю, другим цветом (только HTML!). -v Этот ключ активизирует подробный вывод.
Чтобы выполнить mactime на данных, собранных утилитой graverobber в предыдущем разделе, мы будем использовать ключ -b. Поэтому, следующая команда выведет времена mactimes для данных, которые мы зафиксировали в предыдущем разделе. Мы выбрали дату 1/1/1971 для уверенности в том, что увидим времена mactimes для всех файлов в системе-жертве (если, конечно, вы не установили операционную систему более трех десятилетий назад).
forensic# ./mactime -b /mnt/storage/evid/body "1/1/1971"
Mar 03 89 21:54:51 574 ma. -rw-r--r-- root/toor wheel /usr/lib/bcc/include/regexp.h
Mar 03 89 21:55:06 153 ma. -rw-r--r-- root/toor wheel /usr/lib/bcc/include/regmagic.h
Nov 15 89 01:57:45 353 ma. -r--r--r-- root/toor wheel /usr/doc/pmake-2.1.34/tests/cmd.test
410 ma. -r--r--r-- root/toor wheel /usr/doc/pmake-2.1.34/tests/cmdvar.test
Первый столбец вывода - дата. Второй столбец - время, а третий - размер файла. Четвертый столбец представляет значение mac: последнее время модификации, последнее время обращения, и время ctime, соответственно. "." означает, что значение отсутствует. Таким образом, в предыдущем примере, ни у каких файлов не изменялось время ctimes.
Чтобы выполнить утилиту mactime в файловой системе, которую graverobber не анализировал, используем ключи -R и -d. Мы могли бы смонтировать изображение, созданное инструментом dd (см. лекцию "Некоммерческие наборы инструментов, предназначенные для судебного дублирования"), для этого процесса, или смонтировать копию жесткого диска в виде, предназначенном только для чтения. Для получения аналогичного вывода команда была бы следующей:
forensic# mactime -R -d /mnt/evidence "1/1/1971"
Реализация
Инструмент FTK имеет графический интерфейс, так что для его использования не требуются опции командной строки. Первое, что вам надо сделать при запуске FTK - это решить, хотите ли вы создать новое дело или открыть уже существующее.
Мы создадим новое дело, а затем импортируем туда наши исходные файлы улик. Эти файлы улик были созданы с исходного диска, с помощью инструмента судебного дублирования EnCase (см. лекцию "Коммерческие наборы инструментов для судебного дублирования"). Когда мы выбираем опцию Start A New Case, появляется экран, позволяющий описать специфику нашего дела.
Следующий экран позволяет задать параметры нашего дела. Аббревиатура KFF означает known-file filter (фильтр известных файлов). Эта опция отфильтровывает файлы, которые, предположительно, являются безопасными. Для корректной работы операционная система Windows требует сотни стандартных системных файлов. Эти файлы, если они не были изменены, в большинстве сценариев дадут аналитику очень узкую информацию. Опция KFF позволяет уменьшить количество файлов, которые требуется анализировать. Следовательно, при проведении расследования эта опция может сэкономить время, деньги и ресурсы.
Если вы предполагаете, что может потребоваться поиск по ключевым словам, то отметьте опцию Full Text Index (Индексирование всего текста). Процесс импорта займет значительно больше времени, но цена будет оправдана, если вы выполните поиск более одного раза.
На следующем экране, FTK просит, чтобы мы добавили к делу улики. Уликами могут быть файлы, созданные с помощью инструмента EnCase или файлы изображений, созданные в dd. Файлы улик, создаваемые в EnCase были описаны в лекции "Коммерческие наборы инструментов для судебного дублирования", а получение копии жесткого диска с помощью dd рассматривалось в лекции "Некоммерческие наборы инструментов, предназначенные для судебного дублирования".
Когда мы выбираем Add Evidence (Добавление улик), нам предоставляются несколько опций, касающихся типа улик, которые нужно добавить.
Инструмент FTK имеет графический интерфейс, так что для его использования не требуются опции командной строки. Первое, что вам надо сделать при запуске FTK - это решить, хотите ли вы создать новое дело или открыть уже существующее.
Мы создадим новое дело, а затем импортируем туда наши исходные файлы улик. Эти файлы улик были созданы с исходного диска, с помощью инструмента судебного дублирования EnCase (см. лекцию "Коммерческие наборы инструментов для судебного дублирования"). Когда мы выбираем опцию Start A New Case, появляется экран, позволяющий описать специфику нашего дела.
Следующий экран позволяет задать параметры нашего дела. Аббревиатура KFF означает known-file filter (фильтр известных файлов). Эта опция отфильтровывает файлы, которые, предположительно, являются безопасными. Для корректной работы операционная система Windows требует сотни стандартных системных файлов. Эти файлы, если они не были изменены, в большинстве сценариев дадут аналитику очень узкую информацию. Опция KFF позволяет уменьшить количество файлов, которые требуется анализировать. Следовательно, при проведении расследования эта опция может сэкономить время, деньги и ресурсы.
Если вы предполагаете, что может потребоваться поиск по ключевым словам, то отметьте опцию Full Text Index (Индексирование всего текста). Процесс импорта займет значительно больше времени, но цена будет оправдана, если вы выполните поиск более одного раза.
На следующем экране, FTK просит, чтобы мы добавили к делу улики. Уликами могут быть файлы, созданные с помощью инструмента EnCase или файлы изображений, созданные в dd. Файлы улик, создаваемые в EnCase были описаны в лекции "Коммерческие наборы инструментов для судебного дублирования", а получение копии жесткого диска с помощью dd рассматривалось в лекции "Некоммерческие наборы инструментов, предназначенные для судебного дублирования".
Когда мы выбираем Add Evidence (Добавление улик), нам предоставляются несколько опций, касающихся типа улик, которые нужно добавить.
EnCase имеет графический интерфейс пользователя и не требует командных строк. Запуская EnCase, вы щелкаете на кнопке New (Создать), расположенной в верхней части инструментальной панели, для создания нового дела. Затем EnCase просит вас указать каталоги для экспорта документов и хранения любых временных файлов. Мы настоятельно рекомендуем, чтобы вы изменили заданные по умолчанию каталоги на уникальные каталоги, предназначенные для текущего дела, над которым вы работаете. Это позволит хранить отдельно данные от разных дел, улучшая, таким образом, целостность документов.
Как только дело создано, сохраните файл дела. Это можно сделать, используя опцию Save (Сохранить), расположенную на инструментальной панели.
увеличить изображение
После того, как вы сохранили файл дела в первый раз, пришло время добавить к нему ваши улики. Щелкните на кнопке Add (Добавить), находящейся на инструментальной панели. Затем введите соответствующую информацию.
увеличить изображение
Когда вы загрузите файл улик в первый раз, EnCase будет пытаться проверить данные, добавленные к делу. Важно понять, что файл улик инструмента EnCase использует собственный формат. Когда копируются данные, информация о контрольной сумме сохраняется непосредственно в файле улик инструмента EnCase. В процессе проверки целостности вычисляются контрольные суммы в файле улик и помечаются любые данные, которые были изменены. Во время этого процесса аналитик может выполнять анализ на уже загруженных уликах, однако задачи будут выполняться немного медленнее, чем они выполняются, когда процесс загрузки уже завершен.
увеличить изображение
Когда процесс проверки завершен, результаты отображаются на экране истории улик. Вы можете рассматривать специфику загруженных файлов улик, выбирая Case (Дело) в верхнем левом углу и рассматривая вкладку Evidence (улики) внизу окна EnCase. Каждая строка представляет загруженный файл улик, и информация, касающаяся проверки контрольной суммы, отображается для ссылки на нее в будущем.
увеличить изображение
После загрузки инструмента TCT распакуйте его и введите каталог, который он создает. Находясь в каталоге TCT, наберите следующую команду, чтобы скомпилировать пакет.
forensics# make
По окончании компиляции перечисленные здесь инструментальные средства будут доступны в каталоге bin или в lazarus. В эти каталоги включено много инструментальных средств, но здесь мы не будем рассматривать все. За деталями обратитесь к документации в каталоге doc.
Graverobber. Утилита graverobber автоматизирует большинство команд, которые обсуждались в лекции "Создание и использование комплекта инструментов "живого ответа" для Unix". Когда она выполняется в "живом" режиме, то собирает всю информацию о состоянии процессов, сетевых подключениях и параметрах, и важные системные файлы конфигурации. graverobber можно также вызвать для выполнения автономного анализа. Если вы создали изображение нужного вам жесткого диска с помощью dd, то graverobber сможет его проанализировать.Mactime. Утилита mactime получает время последнего обращения к файловой системе и ее модификации, а также время ctimes (последняя модификация файловой структуры такого типа, как права доступа к файлу). Утилиту mactime можно вызвать напрямую, или выполнять, как часть анализа, который выполняется утилитой graverobber.Unrm. Утилита unrm выгружает нераспределенное пространство из изображения, созданного инструментом dd. По умолчанию данные посылаются на экран, но обычно их переадресовывают в файл, используя оператор ">".Lazarus. Утилита lazarus собирает детали расследования судебной копии. Она содержит инструментальные средства, с помощью которых можно попытаться реконструировать удаленные файлы. lazarus обычно вызывается для обработки набора данных, созданных утилитой unrm, построения HTML-отчета о файлах, которые она попыталась восстановить.
В следующих разделах обсуждаются эти инструментальные средства.
The Coroner's Toolkit
Практически существует только один вариант программного обеспечения для судебного анализа, которое имеет открытые исходные коды (то есть бесплатно). Он называется - The Coroner's Toolkit или TCT. Инструмент TCT отличается от FTK и EnCase тем, что он автоматизирует анализ файловых систем Unix (UFS, FFS, EXT2 и так далее). Инструмент TCT можно выполнять на работающей системе, которая, как вы подозреваете, была взломана, или на судебном изображении, созданном с помощью dd (подробно описан в лекции "Некоммерческие наборы инструментов, предназначенные для судебного дублирования").
Инструмент TCT можно загрузить с сайтов, принадлежащих его авторам (Dan Farmer и Wietse Venema), а именно, http://www.fish.com/forensics/ или http://www.porcupine.org/forensics/.
Внимание. При работе с TCT требуется лучшее понимание компьютерной криминалистики, чем при работе с EnCase или FTK.
Unrm
unrm - очень простой инструмент, и едва ли заслуживает того, чтобы быть заголовком в этом разделе. Мы обращаем на него внимание лишь потому, что lazarus будет использовать вывод утилиты unrm в следующем разделе.
Применяя unrm для сбора нераспределенного пространства в изображении, созданном с помощью dd, нужно использовать следующую команду:
forensic# ./unrm /dev/loop0 linux_free.bin
Эта команда предполагает, что вы смонтировали судебную копию жесткого диска с системой Linux (с именем linux_drive.bin), используя утилиту losetup, которая обсуждалась в лекции "Некоммерческие наборы инструментов, предназначенные для судебного дублирования".
Если жесткий диск, дублированный в файл linux_drive.bin, имел полный объем 2Гб, и имел 1,5Гб свободного пространства, то результирующий файл linux_drive_freespace.bin будет иметь размер 1,5Гб.
IE History
IE History - это инструмент, который вы можете использовать для обработки файлов данных, связанных с Web-броузерами. Инструмент IE History можно получить, отправив запрос по электронной почте ее автору, Скотту Пондеру (Scott Ponder) по адресу support@phillipsponder.com. Цель инструмента IE History сделать разбор двоичных файлов истории так, чтобы можно было проанализировать каждое посещение Web-сайта. Без инструментов такого типа отслеживание использования Web-броузера было бы затруднено, потому что содержимое этого файла нельзя прочесть полностью, используя средства общего назначения, предназначенные для просмотра файлов.
Клиент службы America Online
Служба America Online (AOL) широко используется, особенно для доступа в интернет из дома. Поэтому использование клиента службы America Online для восстановления электронной почты заслуживает отдельного раздела в этой лекции.
Служба AOL, как правило, является наиболее трудной для восстановления из всех почтовых программ. Отчасти так происходит потому, что восстановление зависит от версии данных AOL, найденных на машине подозреваемого, та же самая версия должна быть установлена на судебном компьютере. Поскольку все расследования прошлого года, с которыми мы столкнулись, содержали улики в 5-й версии клиента службы AOL или выше, то мы сконцентрируемся на более новых методах восстановления электронной почты.
Служба AOL использует термин profile (профиль) для предоставления различных входов в систему и адресов электронной почты, которые используются с клиентом AOL. Каждый, кто совместно пользуется домашним компьютером в семье, имеет собственный профиль; таким способом электронная почта каждого пользователя сохраняется отдельно и конфиденциально. Служба AOL сохраняет всю информацию для каждого профиля в одном большом файле. Поскольку отдельным компьютером могут использоваться несколько профилей, вы должны восстановить каждый файл, чтобы получить полную картину деятельности, проделанной в интернете с определенного компьютера.
Клиенты службы America Online могут быть расположены на сайте http://www.aol.com, который содержит почти все когда-либо распространяемые версии. Клиенты свободно доступны для загрузки.
Netscape Navigator/Communicator
Netscape Navigator и Communicator (http://www.netscape.com) имеют собственную версию почтовой программы, которая встречается так же часто, как Outlook Express. Подобно Outlook Express, файлы приложения Netscape, которые входят в почтовые папки, сохраняются в каталоге. Вместо простого импортирования, как мы делали в Outlook Express, или открытия файла, как это делается в Outlook, мы должны использовать более хитрое решение, чтобы получить доступ к электронной почте Netscape.
Outlook
Приложение Outlook, устанавливаемое с комплектом Microsoft Office, часто встречается в корпоративных расследованиях. Электронную почту, созданную в Outlook, восстановить даже проще, чем электронную почту приложения Outlook Express. Файлы с расширением .pst называются "Папками личных файлов" и используются в Outlook для хранения электронной почты.
Outlook Express
Приложение Microsoft Outlook Express - обычный клиент электронной почты и новостей интернета. Оно устанавливается по умолчанию в операционных системах Windows вместе с приложением Internet Explorer. Поскольку оно легко доступно, многие пользователи выбирают его для использования в качестве заданного по умолчанию почтового клиента. Поэтому, судебный эксперт должен быть готов к восстановлению электронной почты, сгенерированной из этой программы. В этом разделе описано, как судебный аналитик может использовать Outlook Express несколько отличным от обычного пользователя способом, чтобы помочь установить направление дальнейшего расследования.
Почтовые ящики систем Unix
Хотя в большинстве систем Unix захваченная почта располагается в единственном текстовом файле, следователь может манипулировать данными для облегчения просмотра и анализа. В этом разделе для восстановления почтовых файлов подозреваемого и анализа их содержимого будут использоваться инструментальные средства, имеющиеся в большинстве инсталляций систем Linux и FreeBSD.
Реализация
Чтобы установить Outlook Express, вы должны сначала установить Internet Explorer. После того как он установлен на судебном компьютере, его больше не нужно конфигурировать. Аналитик просто импортирует интересующую его электронную почту в свою копию Outlook Express на судебном компьютере. Это можно выполнить с помощью следующих действий.
Откройте Outlook Express и выберите File/Import/Messages (Файл/Импорт/Сообщения).В диалоговом окне Import (Импорт) программы Outlook Express выберите версию Outlook Express, которую вы хотите импортировать. Затем щелкните на Next (Далее).Выберите Import Mail From an OE6 Store Directory (Импортировать почту из каталога OE6). Щелкните на OK.
Выберите местоположение каталога, который будет импортирован. Это может быть каталог, полученный при судебном дублировании или логическом копировании интересующей машины. Обычные места расположения этого каталога представлены в таблице 23.1. Щелкните на Next.
После того как Outlook Express обнаружил, что содержание каталога действительно является истинным хранилищем почты, он предлагает вам опцию выбора любой или всех доступных папок. Выберите соответствующую опцию (опции) и щелкните на Next (Далее).После того как вы закончите импорт, новые сообщения должны расположиться в дереве папки.
Необходимо знать места хранения почтовых файлов для различных версий Windows. В таблице 23.1 показаны типичные места расположения этих файлов.
Windows 2000 | C:\Documents and Settings\<имя пользователя>\Local Settings\Application Data\Identities\<уникальная длинная строка>\Microsoft\Outlook Express\ |
Windows NT | C:\winnt\profiles\<имя пользователя>\Local Settings\Application Data\Identities\<уникальная длинная строка>\Microsoft\Outlook Express\ |
Windows 95/98/Me | C:\Windows\Application Data\Identities\<уникальная длинная строка>\Microsoft\Outlook Express\ |
Информация должна быть скопирована из файла улик в новый каталог прежде, чем вы импортируете ее в Outlook Express, потому что для работы Outlook Express требуется такой доступ к данным, который позволяет чтение и запись, а файлы улик, обычно, запрещают запись.
После того как папки личных файлов подозреваемого найдены, вы можете открыть их, выбирая File/Open/Outlook Data File (Файл/Открыть/Файл данных Outlook).
После того как вы выбрали файл, он монтируется в дереве папок. Затем вы можете просмотреть электронную почту, календарь, задачи и контакты, содержащиеся в этих файлах, без вмешательства другой существующей в Outlook электронной почты. В следующем экранном снимке папка с названием "1 февраля 2002" является папкой личных файлов, открытой из файла, обнаруженного в нашем примере улик.
увеличить изображение
Примечание. Хотя почтовые папки и возможно импортировать, делать этого не рекомендуется, потому что очень легко перепутать сообщения электронной почты, неправильно выбирая целевые папки в процессе импорта. Кроме того, процесс импорта гораздо более сложен, чем простой выбор File/Open.
Первый шаг к использованию Netscape Messenger для импорта электронной почты заключается в нахождении каталогов, в которых он хранит электронную почту. В следующей таблице показаны пути к каталогам, в которых обычно сохраняются почтовые сообщения в Netscape.
Операционная система Типичное место хранения почты Netscape
Windows 2000 | C:\Documents и Settings\Application Data\Mozilla\profiles\<имя пользователя>\<уникальное имя файла>.slt\Mail\ |
Windows NT | C:\winnt\profiles\Application Data\Mozilla\profiles\<имя пользователя>\<уникальное имя файла>.slt\Mail\ |
Windows 95/98/Me | C:\Windows\Application Data\Mozilla\profiles\<имя пользователя>\<уникальное имя файла>.slt\Mail\ |
Следующий шаг в восстановлении почты Netscape состоит в создании правильной почтовой учетной записи в пределах любого профиля на судебном компьютере. Здесь мы будем использовать заданный по умолчанию профиль, который автоматически установлен приложением Netscape (если потребуется, вы можете взять на себя хлопоты по создания "реального" профиля вместо использования профиля, заданного по умолчанию в Netscape). Гораздо проще, однако, выбрать File/Import (Файл/Импорт), чтобы импортировать любую электронную почту приложения Outlook Express, которая уже существует на судебном компьютере. Мы выбираем для импортирования приложение Outlook Express, потому что оно установлено почти в каждой системе Windows. Мы делаем это не для того, чтобы действительно отыскать локальную электронную почту Outlook Express, а для создания необходимой структуры каталогов и изменения конфигурационных файлов в пределах Netscape, чтобы поставить себя в положение, пригодное для импорта электронной почты, обнаруженной в файле улик. Как только вы завершите этот процесс, не забудьте удалить любую электронную почту, которая была импортирована из Outlook Express, потому что она была импортирована локально, а не из файлов улик. Если вы не удалите эти локально импортированные данные, вы создадите риск смешивания интересующей вас электронной почты с электронной почтой судебного компьютера.
Файлы данных службы AOL расположены в подкаталоге organize, который находится в инсталляционном каталоге (в данном случае, это каталог C:\Program Files\America Online 7.0a\organize) клиента AOL. После того как этот каталог был скопирован с компьютера подозреваемого и сохранен на судебном компьютере, вы открываете электронную почту с помощью клиента AOL.
Очевидно, клиент службы AOL должен быть установлен на судебном компьютере прежде, чем электронная почта подозреваемого может быть восстановлена. Вам не нужно получать правильную учетную запись службы AOL для восстановления электронной почты подозреваемого. Поэтому, при запуске клиента AOL, отменяйте любые навязчивые экраны с предложением подписаться, до тех пор, пока экран будет иметь следующий вид.
Далее, скопируйте каталог organize на судебный компьютер.
Найдите файлы, которые не имеют расширений. На следующей иллюстрации - это файлы fsorensics. Это имена account/screen, которые используются с клиентом AOL . Этот файл будет содержать данные, которые мы будем восстанавливать.
увеличить изображение
Переименуйте обнаруженный файл с расширением .pfc (в этом примере fsorensics.pfc). Это расширение делает файл личным файл-кабинетом (personal file cabinet), то есть типом файла, который могут открывать клиенты AOL.Выберите File/Open в клиенте AOL. Найдите файл, который был переименован в шаге 3, и откройте его.Повторите шаги 2-4 для каждого экранного имени, обнаруженного в каталоге organize.
После того как вы выполнили эти шаги, прокрутите экран вниз, чтобы найти почтовые папки. Следующий экран отображает почтовые папки для учетной записи fsorensics@aol.com.
увеличить изображение
Содержимое почтовой папки можно внимательно просмотреть, дважды щелкнув на отдельных почтовых заголовках.
Вы можете просматривать заголовки SMTP для полученной электронной почты, щелкая на кнопке Details (Подробно) сверху индивидуального почтового сообщения, как показано на следующем экране.
увеличить изображение
Интересное различие между AOL и другими доминирующими почтовыми программами заключается в том, что AOL может также сохранять избранные посещенные Web-сайты в том же самом наборе данных, который мы только что открыли. Поэтому надо не забывать просмотреть все Web-сайты, сохраненные в списке Favorites (Избранное).
Вы должны также обратить внимание на дополнительный каталог, расположенный под каталогом ниже organize, с именем CACHE, который может содержать более старые версии почтовых ящиков подозреваемого. Во многих расследованиях может оказаться ценной возможность анализа этих файлов, потому что, по мере добавления или удаления электронной почты на компьютере подозреваемого, изменения показываются, как снимки в каталоге CACHE. Используя описанные выше шаги, вы можете восстановить эти файлы.
Файл электронной почты Unix обычно располагается в каталоге /var/spool/mail/username в Linux, и в каталоге /var/mail/username в системе FreeBSD. Другие разновидности Unix имеют подобный каталог и структуру именования файлов. Этот файл содержит всю электронную почту для определенного пользователя с именем username, и каждое сообщение подписывается в этот файл. Файл можно рассматривать с помощью стандартных средств просмотра текстов, потому что формат файла не запатентован.
Если почтовый файл содержит много вложений или если подозреваемый сохранил тысячи сообщений, пролистывание текстового файла в редакторе общего назначения (см. лекцию "Средства просмотра файлов и редакторы общего назначения") может быть неэффективным и даже непрактичным. Кроме того, без использования специализированных декодеров файловых вложений, аналитик, читающий полный текстовый файл в редакторе общего назначения первоначально, скорее всего, не сможет рассмотреть какие-либо вложенные файлы. Поэтому у аналитика должна быть возможность управлять электронной почтой в почтовой программе, чтобы полностью проанализировать содержание и увеличить эффективность.
Электронная почта может быть восстановлена с помощью следующих действий.
Скопируйте файл почтового ящика в каталог почты и смените имя файла на имя пользователя, который будет к нему обращаться. Это показывает следующий вывод.
forensic# ls -al Mailbox -rw-r--r-- 1 kjones 1000 15745 Mar 5 15:16 Mailbox forensic# cp Mailbox /var/mail/kjones
Переключите пользователя, используя команду su системы, на пользователя, почтовый ящик которого был скопирован. В данном случае, пользователь - kjones.Используйте любую программу общего назначения, предназначенную для отправки почты, чтобы читать содержание электронной почты.Примечание. Хотя программа "mail" установлена почти на каждой системе Unix, авторы любят использовать также программы mutt и pine, потому что они позволяют легко сохранять или просматривать вложенные файлы. Кроме того, они обеспечивают лучшие возможности для поиска.
После запуска IE History вы должны увидеть экран, подобный показанному ниже.
увеличить изображение
Щелкните на кнопке Open History File (Открыть файл истории), чтобы открыть окно просмотра, подобное показанному на следующей иллюстрации. Заметьте, что это окно просмотра отличается от типичных окон просмотра файлов в системе Windows, в которых файлы не переводятся в соответствии со спецификациями, заданными в файле desktop.ini. Это позволяет пользователю просматривать файлы истории локального диска, которые обычно переводятся в файловые страницы истории приложением Windows Explorer.
Инструмент IE History может обрабатывать много различных типов файлов, включая файлы истории деятельности в Internet Explorer и в Netscape Web. В таблице 23.2 суммированы места обычного расположения этих файлов.
Windows 95/98/Me | Internet Explorer |
\Windows\Temporary Internet Files\ Content.IE5\\Windows\Cookies\ \Windows\History\History.IE5\ Любой файл index.dat является файлом истории. | |
Windows NT | Internet Explorer |
\Winnt\Profiles\<имя пользователя>\Local Settings\Temporary Internet Files\Content.IE5\\Winnt\Profiles\<имя пользователя>\Cookies\ \Winnt\Profiles\<имя пользователя>\Local Settings\History\History.IE5\ Любой файл index.dat является файлом истории. | |
Windows 2000 | Internet Explorer |
\Documents and Settings\<имя пользователя>\Local Settings\Temporary Internet Files\Content.IE5\\Documents and Settings\<имя пользователя>\Cookies\ \Document and Settings\<имя пользователя>\Local Settings\History\History.IE5\ Любой файл index.dat является файлом истории. | |
Windows 95/98/Me | Netscape |
\Windows\Application Data\Mozilla\Profiles\<название профиля>\<каталог профиля>\ Любой файл index.dat является файлом истории. | |
Windows NT | Netscape |
\Documents and Settings\<имя пользователя>\Application Data\Mozilla\Profiles\<название профиля>\<каталог профиля>\ Любой файл index.dat является файлом истории. | |
Windows 2000 | Netscape |
\Winnt\Profiles\<имя пользователя>\Application Data\Mozilla\Profiles\<название профиля>\<каталог профиля>\ Любой файл index.dat является файлом истории. | |
Unix (Linux, BSD, etc.) | Netscape |
~<имя пользователя>/.netscape/ Любой файл index.dat является файлом истории. |
Frhed
Frhed - это инструмент редактирования шестнадцатеричного кода в системе Windows. Это графический инструмент и он включает много функций, полезных для судебного анализа. Frhed можно загрузить с сайта http://homepages.tu-darmstadt.de/~rkibria/real_index.html*frhed.
Hexdump
Hexdump - это инструмент просмотра файлов, работающий в таком режиме, который выполняет меньше всего интерпретации при представлении содержимого входного файла. В связи с такими функциональными возможностями, Hexdump является естественным и эффективным инструментом, который используется для определения типа файла и цели, для которой предназначено его содержимое. Кроме того, Hexdump поставляется вместе с популярными марками некоммерческих операционных систем Unix типа Linux и FreeBSD. А это значит, что Hexdump легко доступен, потому что исходный код этих операционных систем открыт.
Hexedit
Хотя Hexdump является прекрасным инструментом для просмотра содержимого файлов, инструмент hexedit представляется собой лучшую альтернативу. hexedit позволяет пользователю редактировать файл и отображать его в формате, аналогичном hexdump.fmt. И что еще важнее, hexedit позволяет аналитику отыскивать шестнадцатеричные и/или ASCII-строки, то есть нечто, что нельзя выполнить, используя только утилиты Hexdump и grep (инструмент, который ищет соответствия заданному образцу, доступный в большинстве операционных систем Unix), потому что вывод может быть разбит переходом на новую строку.
Например, если вы ищете строку "utxZ" среди данных, изображенных на рис. 24.1, она была бы пропущена утилитой grep (стандартный инструмент поиска, просматривающий строку за строкой). Это происходит потому, что строка "utxZ" расположена на двух строках в выводе Hexdump. Однако с помощью hexedit, аналитик может легко найти эту строку в выводе ASCII-кода.
hexedit является эффективным судебным инструментом еще и потому, что он может открывать большие файлы (такого большого размера, как файлы поддержки операционной системы) без катастрофического замедления работы машины. Это происходит потому, что hexedit открывает входной файл по мере необходимости, по фрагменту за раз. Следовательно, при необходимости, с помощью hexedit можно производить поиск и анализировать целое устройство (типа жестких дисков на 80 Гб).
Инструмент hexedit можно исследовать, загрузив его со следующих сайтов: http://www.chez.com/prigaux/hexedit.html, http://merd.net/pixel/hexedit-1.2.2.bin.i386.dynamic.tgz и http://merd.net/pixel/hexedit-1.2.2.src.tgz.
Команда file
Хотя команда file, которая поставляется с большинством инсталляций Unix, не активизирует средство просмотра, она упомянута здесь, потому что ее фундаментальное использование дополнит средства просмотра, обсуждаемые в следующих разделах. Поскольку эта команда присутствует в операционных системах Unix с открытым кодом (FreeBSD, Linux и так далее), ее исходный код легко доступен.
Midnight Commander
Midnight Commander (MC) - это одно из тех инструментальных средств, которое само по себе не является средством просмотра, но имеет встроенное средство просмотра файлов. Этот инструмент стоит упомянуть, потому что мы используем его все время при быстром проходе набора данных, особенно в расследованиях, которые включают системы Unix. Midnight Commander можно загрузить с сайта http://www.gnome.org/projects/mc/.
Quickview Plus
Для судебного следователя Quickview Plus является эквивалентом швейцарского походного армейского ножа. Quickview полезен тем, что он может просматривать много разных типов форматов файла, а также открывать сжатые файлы для отображения их содержимого в Windows. На момент написания этой книги инструмент Quickview поддерживал более 200 типов файлов (полный список смотрите на сайте http://www.jasc.com/qvp_more.asp?pf%5Fid=006).
Поскольку Quickview не является оригинальным редактором, в котором обычно создаются многие файлы, то опасность просмотра зараженных файлов смягчена. Например, представьте себе документ Microsoft Word, который содержит вредный макрос, обнаруженный среди данных, захваченных у подозреваемого. Если бы для просмотра этого документа использовался редактор Word, то он мог бы потенциально выполнить на судебном компьютере какие-либо не желательные для аналитика действия. С другой стороны, при просмотре этого документа редактор Quickview не выполняет макросы, как это сделал бы Word, и поэтому обеспечивает аналитику еще один уровень доверия и гарантии.
Редактор Quickview Plus можно загрузить с сайта компании www.jasc.com в качестве оценочной версии. Если вы хотите купить программу, то можете сделать это на том же сайте. Мы используем его на каждом судебном компьютере и находим, что его цена оправдана.
Реализация
Команда file принимает в качестве аргумента имя файла. Она выполняется следующим способом:
forensic# file <имя файла>
Команда file смотрит на заголовки и другие свойства указанного файла в файле "magic". Файл "magic" в большинстве операционных систем Unix, расположен в каталоге /usr/share/magic. Файл "magic" содержит сигнатуры многих известных файлов, таких как текстовые файлы, исполняемые, сжатые и другие.
Вы можете указать другой файл "magic" вместо файла, заданного по умолчанию, используя ключ -m.
forensic# file -m mymagicfile.txt <имя файла>
Эта команда будет использовать файл mymagicfile.txt, расположенный в текущем каталоге, в качестве таблицы для поиска сигнатур файлов.
Ниже приводится пример типов вывода, которые дает команда file.
forensic# file netcat.c netcat.c: ASCII C program text, with CRLF line terminators forensic# file nc.exe nc.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable forensic# file nc11nt.zip nc11nt.zip: Zip archive data, at least v2.0 to extract forensic# cd suspiciousfiles forensic# file * Finding Me.mp3: mp3 file with ID3 2.0 tag Finding Me.wma: Microsoft ASF Somebrowserimagefile.tif: mp3 file with ID3 2.0 tag
Как видите, команда file просто отображает имена файлов с сигнатурами, найденными в файле magic. Поскольку файл magic доведен до совершенства, вы можете видеть, что команда file довольно точна в определении сигнатур многих типов файла, даже если они не родные для системы Unix.
Как показано ниже, команда file может распознавать даже устройства Unix.
#file -s /dev/sda{,1,2,3,4,5} /dev/sda1: Linux/i386 ext2 filesystem /dev/sda2: x86 boot sector, extended partition table /dev/sda3: can"t read "/dev/sda3" (Device not configured). /dev/sda4: can"t read "/dev/sda4" (Device not configured). /dev/sda5: Linux/i386 ext2 filesystem
Повсюду в этой лекции, просматривая файлы с другими средствами просмотра, мы будет пользоваться командой file.
В своей самой простой форме, Hexdump используется следователем для того, чтобы читать содержимое файла и отображать его с "сырым" форматированием. При выполнении Hexdump в этом режиме указывается единственный параметр - имя входного файла. Например, набрав команду, показанную ниже, вы получите вывод файла с именем 1.tiff , продемонстрированный на следующей иллюстрации.
forensic# hexdump 1.tiff
Поскольку хорошо известно, что файл в формате TIFF (Tag Image File Format) начинается с байтов 49 49 00 2A в шестнадцатеричной системе, то тип файла легко увидеть в этом выводе после небольшого визуального анализа. Если этот заголовок вам не известен, не волнуйтесь: большинство систем Unix включает файл, который содержит сигнатуры файлов, в каталоге /usr/share/magic. Выборка из файла magic показывает заголовок формата TIFF.
# Tag Image File Format, from Daniel Quinlan (quinlan@yggdrasil.com) # The second word of TIFF files is the TIFF version number, 42, which has # never changed. The TIFF specification recommends testing for it. 0 string MM\x00\x2a TIFF image data, big-endian 0 string II\x2a\x00 TIFF image data, little-endian
Команда file системы Unix использует эту информацию, чтобы определить неизвестный тип файла.
Вывод Hexdump, как показано на предыдущей иллюстрации, отформатирован так, что крайний левый столбец содержит смещение байта в пределах файла 1.tiff, в шестнадцатеричном коде. Байты входного файла отображены в строке после смещения. В этом примере, вы можете видеть, что третья строка содержит звездочку (*), что означает, что все строки, расположенные после последней отображенной, являются дубликатами.
В некоторых случаях, может быть удобным рассматривать вывод инструмента Hexdump в шестнадцатеричном формате и в формате ASCII одновременно. Программа Hexdump, поставляемая с FreeBSD, выполнит преобразование автоматически, если использовать ключ -C. Давайте посмотрим другой тип файла, используя этот ключ.
forensic# hexdump-C suspiciousfile.bin
Ниже показан соответствующий вывод.
hexedit вызывается следующей командой.
forensic# hexedit suspiciousfile.bin
После открытия файла, отображается вывод, подобный представленному на следующей иллюстрации.
В выводе отсчет байтов смещения дается в левом столбце сверху вниз в шестнадцатеричном формате. Средний столбец показывает байты из файла suspiciousfile.bin в шестнадцатеричной записи. Крайний правый столбец содержит то же самое, что и средний столбец, но в ASCII-коде. Любые непечатаемые символы показаны точками (.).
Резюме наиболее часто используемых команд дано в таблице 24.1.
< | Идти в начало файла. |
> | Идти в конец файла. |
СТРЕЛКА ВПРАВО | Следующий символ. |
СТРЕЛКА ВЛЕВО | Предыдущий символ. |
СТРЕЛКА "ВНИЗ" | Следующая строка. |
СТРЕЛКА "ВВЕРХ" | Предыдущая строка. |
HOME | Начало строки. |
END | Конец строки. |
PAGE UP | Следующая страница. |
PAGE DOWN | Предыдущая страница. |
F2 | Сохранить. |
F3 | Загрузить файл. |
F1 | Справка. |
CTRL-L | Обновить. |
CTRL-Z | Приостановить. |
CTRL-X | Сохранить и выйти. |
CTRL-C | Выйти без сохранения. |
TAB | Переключатель hex/ASCII. |
ENTER | Идти дальше. |
BACKSPACE | Отменить предыдущий символ. |
CTRL-U | Отменить все. |
CTRL-S | Поиск вперед. |
CTRL-R | Поиск назад. |
CTRL-SPACEBAR | Установить метку. |
CTRL-Y | Вставить. |
ESC-I | Заполнить. |
ESC-W | Копировать. |
ESC-Y | Вставить в файл. |
Например, чтобы найти строку "utxZ" в файле suspiciousfile.bin, нужно нажать TAB, для передачи управления вкладке с ASCII-кодом. Затем, нажмите CTRL-S для поиска вперед и CTRL-R для поиска назад в представлении содержимого файла в ASCII-кодах. Этот процесс был выполнен, и соответствующий вывод показан ниже.
Обратите внимание, что курсор выбрал первую букву в последовательности символов "utxZ" ASCII-кода, и что эта последовательность переходит на новую строку.
Для поиска строки в шестнадцатеричном формате, нажмите TAB, чтобы переместить фокус на вкладку, содержащую данные в шестнадцатеричном формате. Чтобы найти последовательность символов "66 D4 D4 68" в шестнадцатеричном представлении, которое также переходит на вторую строку, нажмите CTRL-S для поиска вперед.
Редактор vi вызывается просто, и мы будем использовать флаг -R для уверенности в том, что файл не будет изменен во время его просмотра (опция командной строки -R запускает vi в режиме, предназначенном только для чтения). Ниже приводится эта команда.
forensic# vi-R suspiciousfile.txt
Далее показано, как выглядит вывод.
Файл, похоже, представляет собой список слов. Хорошая особенность редактора vi заключается в его способности выполнять поиск в соответствии со сложными конструкциями регулярных выражений (regular expressions). Команда поиска внутри vi активизируется набором наклонной черты вправо (/) в окне, а затем вводится регулярное выражение.
Например, чтобы найти слово hacker, в окне vi набирается следующая команда:
/hacker
Вывод показан ниже.
Теперь допустим, что мы не заинтересованы в том, чтобы находить те слова hacker, которые являются второй частью другого слова. Продолжая поиск, и вручную выбирая строки, начинающиеся с hacker, можно набрать n и двигаться к следующему совпадению с выражением, которое мы ищем. В данном списке, нам надо было бы нажимать n много раз, чтобы обратиться к каждому слову, начинающемуся с hacker. Поэтому, необходимо использовать более эффективный метод поиска.
Если мы заинтересованы в поиске строк, которые начинаются со слова hacker, использование регулярных выражений (regular expressions) может значительно облегчить операцию. Регулярное выражение, предназначенное для обнаружения слова hacker, расположенного в начале строки, производится добавлением к нужному ключевому слову символа "начала строки", "^" (знак вставки). Показанная ниже команда находит следующую строку, которая содержит слово hacker, расположенное в начале строки.
/^hacker
Ниже показан соответствующий вывод.
Это простое выражение, но можно создавать и более сложные выражения. Обзор регулярных выражений лежит вне контекста этой книги, но есть хороший (и бесплатный) способ познакомиться с ним - справочная страница "perlre", которую можно найти на сайте www.perl.com или на машине, где должным образом установлен язык программирования Perl.
Вывод редактора Frhed подобен выводу hexedit, в том отношении, что смещение байтов находится в левом столбце (в шестнадцатеричной форме), содержимое представлено в среднем столбце, а перевод в ASCII-коды находится в правом столбце. Снимок экрана на рис. 24.2 представляет тот же самый файл suspiciousfile.bin, который загружался в предыдущих разделах; его можно увидеть, выбрав File/Open.
увеличить изображение
Рис. 24.2. Представление файла suspiciousfile.bin в редакторе Frhed
Для поиска содержимого файла нужно выбрать Edit/Find. В открывшемся диалоговом окне будет представлено множество опций для поиска. Чтобы искать строку шестнадцатеричного кода, кодировать байты нужно следующим способом:
<bh:#>
Символ # представляет критерии поиска байта в шестнадцатеричной форме. Чтобы сделать поиск образца размером больше одного байта, можно объединить несколько символов, подобно тому, как показано на следующей иллюстрации.
Щелкните на OK, и строка будет найдена и подсвечена. Чтобы продолжить поиск вперед, нажмите F3, или выберите Edit/Find Next; для поиска назад нажмите F4, или выберите Edit/Find Previous.
Чтобы произвести поиск в пределах столбца ASCII-кодов, введите критерии поиска без дополнительного форматирования. Для поиска в ASCII-кодах есть дополнительная опция: можно установить чувствительность поиска к регистру. Это означает, что если вы хотите искать UTXZ и выбираете опцию Match case (Учитывать регистр) в диалоговом окне Find, поиск не будет обнаруживать в содержимом строку utxZ.
Редактор Frhed может также экспортировать содержимое в ASCII-файл, подобный выводу инструмента Hexdump. Для этого выберите File/Export as Hexdump. Если вы хотите сделать дамп только части файла, диалоговое окно Export позволяет вам выбирать смещения начального и конечного байтов, предназначенных для вывода, как показано на следующей иллюстрации.
После того, как был сделан дамп данных в текстовый файл, вывод можно просматривать с помощью любой стандартной утилиты, предназначенной для просмотра текстов.
Щелкните дважды на значке xvi32 после того, как вы разархивируете дистрибутивы. Выберите File/Open, а затем выберите файл suspiciousfile.bin, чтобы открыть интерфейс xvi32 для редактирования файлов в шестнадцатеричном формате.
увеличить изображение
Поскольку аналитик обычно только рассматривает содержимое файлов, то в этом разделе будет описана только функция поиска. Здесь эту функцию использовать намного проще, чем в редакторе Frhed, поскольку для поиска байтов в шестнадцатеричном формате не применяется никакое кодирование. Для поиска строк, заданных в ASCII и шестнадцатеричном коде, в пределах содержимого файлов, выберите Search/Find, чтобы открыть диалоговое окно Find, показанное ниже.
Обратите внимание на опцию, помеченную как Joker Char Hex. Это шестнадцатеричное представление символа, который будет соответствовать любому символу. В данном примере, 0x2E представляет символ ".". Помещая символ "." в критерий поиска, мы сообщаем редактору xvi32, что в этом месте может стоять любой символ. Редактор xvi32 находит не только текстовые строки, но он может также находить строки, заданные в шестнадцатеричном формате.
увеличить изображение
Чтобы в редакторе xvi32 найти строку, заданную в шестнадцатеричном формате, выберите опцию Hex String в диалоговом окне Find и заполните критерии поиска. Если найдено соответствие, то оно подсвечивается в окне просмотра.
Способность Quickview эффективно переключаться между файлами, несмотря на множество разных файлов, облегчается тем, что левая панель окна интерфейса выполнена в стиле Windows Explorer. Этот интерфейс делает возможным просмотр множества файлов с использованием только клавишей стрелок и TAB, которые помогают, когда время ограничено.
Чтобы передвигаться в Quickview от одной панели к другой, надо нажимать клавишу TAB. Находясь на панели дерева каталога, можно нажимать стрелки "ВВЕРХ" и "ВНИЗ", для передвижения вверх и вниз по списку каталога. Чтобы войти в нужный каталог, нажмите клавишу стрелки "ВПРАВО", чтобы войти и раскрыть его. Чтобы свернуть каталог, используйте клавишу стрелки "ВЛЕВО". Выбрав каталог, можно рассматривать файлы, нажимая клавишу TAB, до тех пор, пока фокус не перейдет к панели с содержимым каталога. Она показана в левой нижней части окна на рис. 24.3.
увеличить изображение
Рис. 24.3. Интерфейс Quickview, выполненный в стиле Windows Explorer
После того как появится содержание каталога, можно нажимать стрелки "ВВЕРХ", "ВНИЗ", "ВПРАВО", "ВЛЕВО", для отображения и подсветки нужных файлов. На рис. 24.3 рассматривается файл suspiciousfile.txt. Содержимое файла видно на правой панели.
Функциональные возможности, встроенные в Quickview, позволяют определять различные типы файлов, исходя из заголовка и информации, находящейся в нижнем колонтитуле, а не только из имени файла. Это полезно для аналитика, потому что Quickview отобразит файл правильно даже в том случае, если он имеет неправильное расширение файла. Эта ситуация, похоже, часто случается во время реальных расследований, потому что подозреваемый пытается скрывать файлы. Так как обычное поведение операционной системы Windows при просмотре и редактировании файлов состоит в исследовании расширения файла и запуска связанной с ним программы, то Quickview является лучшим выбором для судебного аналитика, потому что на него не влияет расширение файла.
Когда вы загружаете MC с Web-сайта, вам, возможно, придется скомпилировать его перед использованием. В зависимости от платформы, на которой он будет выполняться, вы должны следовать соответствующим инструкциям по инсталляции, которые поставляются вместе с пакетом. MC доступен как RedHat Package Manager (RPM) для Linux и как пакет/порт в мире систем *BSD. Порт может быть расположен в каталоге /usr/ports/misc/mc на FreeBSD. MC можно вызвать следующей командой:
forensic# mc
Сразу после вызова появляется экран (рис. 24.7). MC можно было бы охарактеризовать, как консольный вариант инструмента, выполненного в стиле Windows Explorer, который позволяет передвигаться по файловой системе и быстро просматривать файлы. В любое время вы можете нажать клавишу F9, и увидеть меню, показанное на этом рисунке, если вы не можете запомнить команды, описанные в этом разделе.
увеличить изображение
Рис. 24.7. Главный экран инструмента Midnight Commander
Обратите внимание, что левая панель в MC отображает содержимое рабочего каталога, в котором вы выполняете команду MC. Правая панель начинается с вашего основного каталога. Нажимая клавиши со стрелками "ВВЕРХ" и "ВНИЗ", вы можете передвигаться по файловой системе в левой панели. Нажимая клавишу TAB в этом месте, вы передадите управление правой панели. И снова, нажимая клавиши со стрелками "ВВЕРХ" и "ВНИЗ", будет передвигаться в пределах файловой системы. При передвижении по файловой системе, нажатие клавиши ENTER заменит каталог на тот, который вы подсветили. Если у вас подсвечен файл, а не каталог, то нажатие клавиши F3 вызовет внутреннее средство просмотра, как показано на рис. 24.8.
Нажав клавишу F4 при просмотре файла, вы переключите средство просмотра на шестнадцатеричный режим. Этот режим генерирует вывод, подобный выводу инструментов Hexdump и hexedit. Результаты вывода инструмента MC в шестнадцатеричном формате показаны на рис. 24.9. Повторное нажатие F4 переключает режим назад к ASCII-кодам.
Нажатие F7 в обоих режимах просмотра позволит вам искать строки в ASCII или шестнадцатеричных кодах.
увеличить изображение
Рис. 24.8. Способность инструмента Midnight Commander просматривать файлы
увеличить изображение
Рис. 24.9. Midnight Commander может просматривать файлы в шестнадцатеричном режиме
Совет. Производя поиск в этом режиме, не забудьте добавлять в начало всех чисел, которые должны быть шестнадцатеричными кодами, 0x, иначе значения будут интерпретироваться как десятичные числа.
В режиме ASCII, вы можете производить поиск с помощью регулярных выражений (regular expression), нажимая клавишу F6. Хотя регулярные выражения в контекст этой книге не обсуждаются, вы можете больше узнать о них на справочной (man) странице perlre; регулярные выражения обеспечивают мощные функциональные возможности поиска.
Вы можете также перескочить на любую позицию в файле, нажимая клавишу F5. В режиме ASCII инструмент MC спросит у вас номер строки, на которую вы хотите перейти, а в шестнадцатеричном режиме он спросит смещение в пределах открытого файла.
Закончив просмотр файла, нажмите F10 для возвращения в главное меню MC. Когда файл выбран, нажатие F4 вызовет редактирование файла редактором vi в двоичном режиме.
Примечание. Некоторые файлы не могут правильно отображаться, если соответствующее внешнее средство просмотра не установлено на вашей машине. Например, если вы выбираете просмотр сжатых файлов, они перед отображением разархивируются. Чтобы посмотреть, как инструмент MC отображает файлы с различными расширениями, нажмите F9/Command/Extension File Edit. Эта команда запустит редактор vi. Вы можете изменить этот файл с расширениями и сохранить его для будущего использования при запуске MC.
Нижняя часть окна MC позволяет вам набрать команду, как будто вы находитесь в командном приглашении shell. В любом месте, выбирая файл или каталог, вы можете немедленно скопировать и вставить его название в командное приглашение shell, нажимая ALT-ENTER.
Если при расследовании вы используете инструмент MC для помощи во время анализа, вам может понадобиться копировать и/или перемещать файлы из одного каталога в другой, по мере окончания их исследования. Нажмите F5 и F6, чтобы скопировать и переместить выбранный файл, соответственно, из одной панели на следующую. Если требуется удалить файл (возможно, что он не имеет отношения к вашему анализу), нажмите F8.
Примечание. Копирование, вставка, перемещение и удаление могут изменять метки времени и даты файлов, которыми вы манипулируете. Поэтому вы должны делать это только с теми данными, для которых у вас хранится отдельный оригинал улик.
Пример из жизни. Расшифровка мистических файлов
преступника
Вам вручили компакт диск с какими-то странными файлами, которые были захвачены у предполагаемого хакера. Официальные лица правоохранительных органов надеются, что вы сможете придать смысл этим файлам, поскольку их собственные ресурсы ограничены после обычного урезания бюджета. Так как вы любите помогать хорошим людям, вы решаете выполнить некоторый анализ этих файлов на благо общества.
Файлы с компакт-диска обладают следующими свойствами.
forensic# ls -al /mnt/cdrom total 306 dr-x------ 2 kjones 1000 512 Apr 22 21:58 . drwxr-xr-x 11 kjones 1000 512 Apr 22 21:42 .. -r-x------ 1 kjones 1000 1889 Apr 22 21:59 bin -r-x------ 1 kjones 1000 1075 Apr 22 21:58 h -r-x------ 1 kjones 1000 1041 Apr 22 21:58 p -r-x------ 1 kjones 1000 1212 Apr 22 21:57 s -r-x------ 1 kjones 1000 290564 Apr 22 21:42 t
Не имея доступа к первоначальным именам файлов, неопытный следователь стал бы нервничать, но вам не о чем беспокоится, потому что вы внимательно прочли эту лекцию! Не так ли?
Запуск команды file. Первым делом вам необходимо запустить команду file, чтобы определить типы файлов. Вы обнаруживаете следующую информацию.
forensic# file * bin: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 65535) h: ASCII English text p: ASCII text s: ASCII text t: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), stripped
Большую часть этой истории вы уже знаете! У преступника была копия tcpdump (вы это обнаружите, если запустите файл "t" в "санитарной среде" или просмотрите в нем строки) и файла вывода, сгенерированного инструментом tcpdump. Поэтому ваш следующий шаг заключается в том, чтобы прочитать лекцию "Анализаторы сетевых потоков" и узнать, как проанализировать этот вывод утилиты tcpdump.
Анализ шестнадцатеричного кода. Вы могли бы сделать дамп содержимого этих файлов, но вы решаете сделать только дамп файлов "h", "p" и "s", поскольку уже знаете, что файл "bin" является выводом утилиты tcpdump, и его надо анализировать, используя непосредственно tcpdump. Следующие результаты отображаются, когда вы используете файл форматирования hexdump.fmt (или опцию -C в FreeBSD).
forensic# hexdump -C h/head 00000000 23 20 48 6f 73 74 20 44 61 74 61 62 61 73 65 0a |# Host Database.| 00000010 23 20 54 68 69 73 20 66 69 6c 65 20 73 68 6f 75 |# This file shou| 00000020 6c 64 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 61 |ld contain the a| 00000030 64 64 72 65 73 73 65 73 20 61 6e 64 20 61 6c 69 |ddresses and ali| 00000040 61 73 65 73 0a 23 20 66 6f 72 20 6c 6f 63 61 6c |ases.# for local| 00000050 20 68 6f 73 74 73 20 74 68 61 74 20 73 68 61 72 | hosts that shar| 00000060 65 20 74 68 69 73 20 66 69 6c 65 2e 0a 23 20 49 |e this file..# I| 00000070 6e 20 74 68 65 20 70 72 65 73 65 6e 63 65 20 6f |n the presence o| 00000080 66 20 74 68 65 20 64 6f 6d 61 69 6e 20 6e 61 6d |f the domain nam| 00000090 65 20 73 65 72 76 69 63 65 20 6f 72 20 4e 49 53 |e service or NIS| forensic# hexdump -C p/head 00000000 72 6f 6f 74 3a 2a 3a 30 3a 30 3a 43 68 61 72 6c |root:*:0:0:Charl| 00000010 69 65 20 26 3a 2f 72 6f 6f 74 3a 2f 62 69 6e 2f |ie &:/root:/bin/| 00000020 63 73 68 0a 74 6f 6f 72 3a 2a 3a 30 3a 30 3a 42 |csh.toor:*:0:0:B| 00000030 6f 75 72 6e 65 2d 61 67 61 69 6e 20 53 75 70 65 |ourne-again Supe| 00000040 72 75 73 65 72 3a 2f 72 6f 6f 74 3a 0a 64 61 65 |ruser:/root:.dae| 00000050 6d 6f 6e 3a 2a 3a 31 3a 31 3a 4f 77 6e 65 72 20 |mon:*:1:1:Owner | 00000060 6f 66 20 6d 61 6e 79 20 73 79 73 74 65 6d 20 70 |of many system p| 00000070 72 6f 63 65 73 73 65 73 3a 2f 72 6f 6f 74 3a 2f |rocesses:/root:/| 00000080 73 62 69 6e 2f 6e 6f 6c 6f 67 69 6e 0a 6f 70 65 |sbin/nologin.ope| 00000090 72 61 74 6f 72 3a 2a 3a 32 3a 35 3a 53 79 73 74 |rator:*:2:5:Syst| forensic# hexdump -C s/head 00000000 72 6f 6f 74 3a 24 31 24 38 44 65 30 47 66 5a 51 |root:$1$8De0GfZQ| 00000010 24 6c 4f 79 78 59 42 70 2e 6e 59 56 59 74 5a 52 |$lOyxYBp.nYVYtZR| 00000020 45 63 63 42 73 61 31 3a 30 3a 30 3a 3a 30 3a 30 |EccBsa1:0:0::0:0| 00000030 3a 43 68 61 72 6c 69 65 20 26 3a 2f 72 6f 6f 74 |:Charlie &:/root| 00000040 3a 2f 62 69 6e 2f 63 73 68 0a 74 6f 6f 72 3a 2a |:/bin/csh.toor:*| 00000050 3a 30 3a 30 3a 3a 30 3a 30 3a 42 6f 75 72 6e 65 |:0:0::0:0:Bourne| 00000060 2d 61 67 61 69 6e 20 53 75 70 65 72 75 73 65 72 |-again Superuser| 00000070 3a 2f 72 6f 6f 74 3a 0a 64 61 65 6d 6f 6e 3a 2a |:/root:.daemon:*| 00000080 3a 31 3a 31 3a 3a 30 3a 30 3a 4f 77 6e 65 72 20 |:1:1::0:0:Owner | 00000090 6f 66 20 6d 61 6e 79 20 73 79 73 74 65 6d 20 70 |of many system p|
Если вы рассмотрите файл "t" с помощью Hexdump и взглянете на более глубокие смещения, то обнаружите следующую информацию:
forensic# hexdump -C t ... 0003cda0 35 2c 20 31 39 39 36 2c 20 31 39 39 37 0a 54 68 |5, 1996, 1997.Th| 0003cdb0 65 20 52 65 67 65 6e 74 73 20 6f 66 20 74 68 65 |e Regents of the| 0003cdc0 20 55 6e 69 76 65 72 73 69 74 79 20 6f 66 20 43 | University of C| 0003cdd0 61 6c 69 66 6f 72 6e 69 61 2e 20 20 41 6c 6c 20 |alifornia. All | 0003cde0 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e |rights reserved.| 0003cdf0 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 0003ce00 40 28 23 29 20 24 48 65 61 64 65 72 3a 20 2f 74 |@(#) $Header: /t| 0003ce10 63 70 64 75 6d 70 2f 6d 61 73 74 65 72 2f 74 63 |cpdump/master/tc| 0003ce20 70 64 75 6d 70 2f 74 63 70 64 75 6d 70 2e 63 2c |pdump/tcpdump.c,| 0003ce30 76 20 31 2e 31 35 38 20 32 30 30 30 2f 31 32 2f |v 1.158 2000/12/| 0003ce40 32 31 20 31 30 3a 34 33 3a 32 34 20 67 75 79 20 |21 10:43:24 guy | 0003ce50 45 78 70 20 24 20 28 4c 42 4c 29 00 75 6e 6b 6e |Exp $ (LBL).unkn| 0003ce60 6f 77 6e 20 64 61 74 61 20 6c 69 6e 6b 20 74 79 |own data link ty| 0003ce70 70 65 20 25 64 00 25 73 00 00 00 00 00 00 00 00 |pe %d.%s........| 0003ce80 61 63 3a 64 65 45 3a 66 46 3a 69 3a 6c 6d 3a 6e |ac:deE:fF:i:lm:n| 0003ce90 4e 4f 70 71 72 3a 52 73 3a 53 74 54 3a 75 76 77 |NOpqr:Rs:StT:uvw| 0003cea0 3a 78 58 59 00 69 6e 76 61 6c 69 64 20 70 61 63 |:xXY.invalid pac| 0003ceb0 6b 65 74 20 63 6f 75 6e 74 20 25 73 00 25 73 3a |ket count %s.%s:| 0003cec0 20 69 67 6e 6f 72 69 6e 67 20 6f 70 74 69 6f 6e | ignoring option| 0003ced0 20 60 2d 6d 20 25 73 27 20 00 28 6e 6f 20 6c 69 | "-m %s" .(no li| 0003cee0 62 73 6d 69 20 73 75 70 70 6f 72 74 29 0a 00 69 |bsmi support)..i| 0003cef0 6e 76 61 6c 69 64 20 73 6e 61 70 6c 65 6e 20 25 |nvalid snaplen %| 0003cf00 73 00 76 61 74 00 77 62 00 72 70 63 00 72 74 70 |s.vat.wb.rpc.rtp| ...
Информация, представленная здесь инструментом Hexdump, ясно показывает, что этот файл компилировался из исходного файла, который содержал слово tcpdump.
Чтобы раздел "Пример из жизни" остался достаточно кратким, мы лишь упомянем, что другая информация, например, инструкции по использованию, также представлена в выводе Hexdump, помогая подтвердить ваше предположение о том, что этот файл является программой-анализатором сетевых потоков (sniffer) tcpdump.
Мы решили освободить вас от деталей исследования тех же самых файлов с помощью Hexdump, vi, Frhed, xvi32 и Quickview Plus. Мы предполагаем, что общая картина вам ясна, а выбор конкретного инструмента является в данном случае результатом личного предпочтения.
<
Vi
Иногда файл, предназначенный для анализа, является текстовым, а не двоичным. В операционных системах Unix текстовые файлы можно просматривать, используя команду cat, но опять же поиск может быть не эффективен, если ключевое слово занимает несколько строк. Редактор vi устанавливается с большинством операционных систем Unix, как самый элементарный редактор. Пусть вас не вводит в заблуждение слово элементарный (basic): на овладение мощью редактора vi могут потребоваться годы. В этом разделе мы сконцентрируемся на возможностях vi, связанных с просмотром файлов и будем предполагать, что читатель немного знаком с этим инструментом, поскольку полное объяснение его работы находится за пределами контекста этой лекции.
это еще один бесплатный инструмент,
Редактор xvi32 - это еще один бесплатный инструмент, предназначенный для просмотра файлов Windows в шестнадцатеричном формате. Он похож на инструмент Frhed тем, что имеет графический интерфейс пользователя (GUI). Редактор xvi32 выглядит несколько ограниченным в своих функциональных возможностях, потому что не имеет опции частичного открытия файлов, которая есть у Frhed, но в остальном он хорошо с ним конкурирует.
Редактор xvi32 можно загрузить с сайта http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm.
Таблица ASCII
Схемы заголовков протоколов и таблицы представляют собой отличный справочный материал, полезный при анализе структуры сетевых пакетов. Эта таблица содержит символы кодов ASCII, их десятичные, восьмеричные и шестнадцатеричные эквиваленты, управляющие последовательности или последовательности CTRL-ключей, которые используются для генерации символов (там, где это применимо), и краткое описание каждого ключа.
0 | 000 | 00 | NUL | \0, ^@ | символ NULL |
1 | 001 | 01 | SOH | CTRL-A, ^A | Начало заголовка |
2 | 002 | 02 | STX | CTRL-B, ^B | Начало текста |
3 | 003 | 03 | ETX | CTRL-C, ^C | Конец текста(прекращение работы) |
4 | 004 | 04 | EOT | CTRL-D, ^D | Конец передачи (EOF (конец файла), Logout (Выход из системы)) |
5 | 005 | 05 | ENQ | CTRL-E, ^E | Запрос |
6 | 006 | 06 | ACK | CTRL-F, ^F | Подтверждение |
7 | 007 | 07 | BEL | \a, CTRL-G, ^G | Звонок |
8 | 010 | 08 | BS | \b, CTRL-H, ^H | Возврат на один символ |
9 | 011 | 09 | TAB | \t, CTRL-I, ^I | Горизонтальная табуляция |
10 | 012 | 0A | LF | \n, CTRL-J, ^J | Новая строка/перевод строки |
11 | 013 | 0B | VT | CTRL-K, ^K | Вертикальная табуляция |
12 | 014 | 0C | FF | \f, CTRL-L, ^L | Новая страница/перевод страницы |
13 | 015 | 0D | CR | \r, CTRL-M, ^M | Перевод каретки |
14 | 016 | 0E | SO | CTRL-N, ^N | Сдвиг без сохранения выдвигаемых разрядов |
15 | 017 | 0F | SI | CTRL-O, ^O | Сдвиг внутрь |
16 | 020 | 10 | DLE | CTRL-P, ^P | Прекращение связи данных |
17 | 021 | 11 | DC1 | CTRL-Q, ^Q | Контроллер 1 |
18 | 022 | 12 | DC2 | CTRL-R, ^R | Контроллер 2 |
19 | 023 | 13 | DC3 | CTRL-S, ^S | Контроллер 3 |
20 | 024 | 14 | DC4 | CTRL-T, ^T | Контроллер 4 |
21 | 025 | 15 | NAK | CTRL-U, ^U | Отрицательное квитирование |
22 | 026 | 16 | SYN | CTRL-V, ^V | Бездействующая синхронизация |
23 | 027 | 17 | ETB | CTRL-W, ^W | Конец блока передачи |
24 | 030 | 18 | CAN | CTRL-X, ^X | Отмена |
25 | 031 | 19 | EOM | CTRL-Y, ^Y | Конец среды |
26 | 032 | 1A | SUB | CTRL-Z, ^Z | Замена (Приостановка) |
27 | 033 | 1B | ESC | \e, CTRL-[, ^ [ | Выход |
28 | 034 | 1C | FS | CTRL-\, ^ \ | Разделитель файла |
29 | 035 | 1D | GS | CTRL-], ^] | Разделитель группы |
30 | 036 | 1E | RS | CTRL-^, ^^ | Разделитель записи |
31 | 037 | 1F | US | CTRL-_, ^ _ | Разделитель модулей |
32 | 040 | 20 | SPACE | Пробел | |
33 | 041 | 21 | ! | Восклицательный знак | |
34 | 042 | 22 | " | Двойная кавычка | |
35 | 043 | 23 | # | Знак фунта | |
36 | 044 | 24 | $ | Знак доллара | |
37 | 045 | 25 | % | Процент | |
38 | 046 | 26 | & | Амперсанд | |
39 | 047 | 27 | ' | Одиночная кавычка/Апостроф | |
40 | 050 | 28 | ( | Открывающаяся круглая скобка | |
41 | 051 | 29 | ) | Закрывающаяся круглая скобка | |
42 | 052 | 2A | * | Звездочка/Знак умножения | |
43 | 053 | 2B | + | Плюс | |
44 | 054 | 2C | , | Запятая | |
45 | 055 | 2D | - | Дефис/Тире/Минус | |
46 | 056 | 2E | . | Точка | |
47 | 057 | 2F | / | Наклонная черта вправо/Знак деления | |
48 | 060 | 30 | 0 | Ноль | |
49 | 061 | 31 | 1 | Один | |
50 | 062 | 32 | 2 | Два | |
51 | 063 | 33 | 3 | Три | |
52 | 064 | 34 | 4 | Четыре | |
53 | 065 | 35 | 5 | Пять | |
54 | 066 | 36 | 6 | Шесть | |
55 | 067 | 37 | 7 | Семь | |
56 | 070 | 38 | 8 | Восемь | |
57 | 071 | 39 | 9 | Девять | |
58 | 072 | 3A | : | Двоеточие | |
59 | 073 | 3B | ; | Точка с запятой | |
60 | 074 | 3C | < | Знак "меньше" | |
61 | 075 | 3D | = | Знак равенства | |
62 | 076 | 3E | > | Знак "больше" | |
63 | 077 | 3F | ? | Вопросительный знак | |
64 | 080 | 40 | @ | знак "а" в кружочке | |
65 | 081 | 41 | A | Прописное A | |
66 | 082 | 42 | B | Прописное B | |
67 | 083 | 43 | C | Прописное C | |
68 | 084 | 44 | D | Прописное D | |
69 | 085 | 45 | E | Прописное E | |
70 | 086 | 46 | F | Прописное F | |
71 | 087 | 47 | G | Прописное G | |
72 | 090 | 48 | H | Прописное H | |
73 | 091 | 49 | I | Прописное I | |
74 | 092 | 4A | J | Прописное J | |
75 | 093 | 4B | K | Прописное K | |
76 | 094 | 4C | L | Прописное L | |
77 | 095 | 4D | М | Прописное М | |
78 | 096 | 4E | N | Прописное N | |
79 | 097 | 4F | O | Прописное O | |
80 | 100 | 50 | P | Прописное P | |
81 | 101 | 51 | Q | Прописное Q | |
82 | 102 | 52 | R | Прописное R | |
83 | 103 | 53 | S | Прописное S | |
84 | 104 | 54 | T | Прописное T | |
85 | 105 | 55 | U | Прописное U | |
86 | 106 | 56 | V | Прописное V | |
87 | 107 | 57 | W | Прописное W | |
88 | 110 | 58 | X | Прописное X | |
89 | 111 | 59 | Y | Прописное Y | |
90 | 112 | 5A | Z | Прописное Z | |
91 | 113 | 5B | [ | Открывающаяся квадратная скобка | |
92 | 114 | 5C | \ | Наклонная черта влево | |
93 | 115 | 5D | ] | Закрывающаяся квадратная скобка | |
94 | 116 | 5E | ^ | Знак вставки "^" | |
95 | 117 | 5F | _ | Символ подчеркивания | |
96 | 12 | 060 | ` | Обратная кавычка | |
97 | 121 | 61 | a | Строчное а | |
98 | 122 | 62 | b | Строчное b | |
99 | 123 | 63 | c | Строчное с | |
100 | 124 | 64 | d | Строчное d | |
101 | 125 | 65 | e | Строчное e | |
102 | 126 | 66 | f | Строчное f | |
103 | 127 | 67 | g | Строчное g | |
104 | 130 | 68 | h | Строчное h | |
105 | 131 | 69 | i | Строчное i | |
106 | 132 | 6A | j | Строчное j | |
107 | 133 | 6B | k | Строчное k | |
108 | 134 | 6C | l | Строчное l | |
109 | 135 | 6D | m | Строчное m | |
110 | 136 | 6E | n | Строчное n | |
111 | 137 | 6F | o | Строчное o | |
112 | 140 | 70 | p | Строчное p | |
113 | 141 | 71 | q | Строчное q | |
114 | 142 | 72 | r | Строчное r | |
115 | 143 | 73 | s | Строчное s | |
116 | 144 | 74 | t | Строчное t | |
117 | 145 | 75 | u | Строчное u | |
118 | 146 | 76 | v | Строчное v | |
119 | 147 | 77 | w | Строчное w | |
120 | 150 | 78 | x | Строчное x | |
121 | 151 | 79 | y | Строчное y | |
122 | 152 | 7A | z | Строчное z | |
123 | 153 | 7B | { | Открывающаяся фигурная скобка | |
124 | 154 | 7C | | | Труба | |
125 | 155 | 7D | } | Закрывающаяся фигурная скобка | |
126 | 156 | 7E | ~ | Тильда | |
127 | 157 | 7F | DEL | Знак удаления |
Управляющие последовательности для любого символа можно написать, используя наклонную черту влево, с последующим восьмеричным или шестнадцатеричным кодом. Например, символ 9 (символ горизонтальной табуляции) можно написать как \t, \011 или \x09.
<
Заголовки Ethernet
увеличить изображение
Поле типа делает размер области данных зависимой от значения типа. Следующая таблица описывает поля, расположенные за "типом", в зависимости от значения типа:
0800 | Дейтаграмма IP | 46-1500 (переменная) |
0806 | ARP Запрос/Ответ | 28 |
PAD | 18 | |
8035 | RARP Запрос/Ответ | 28 |
PAD | 18 |
Заголовки протокола управления передачей (TCP)
увеличить изображение
URG - флаг срочности ASC - флаг пакета, содержащего подтверждение получения PSH - флаг форсированной отправки RST - переустановка соединения SYN - синхронизация чисел последовательности FIN - окончание передачи
Заголовки протокола управляющих сообщений в интернете (ICMP)
увеличить изображение
"Тип" и "код" ICMP пакета изменяют остальную часть характеристик пакета. В следующей таблице дано резюме различных типов ICMP пакетов, которые вы можете встретить.
0 | 0 | Ответ Echo |
3 | Адресат недостижим | |
0 | Сеть назначения недостижима | |
1 | Хост назначения недостижим | |
2 | Протокол недостижим | |
3 | Порт недостижим | |
4 | Требовалась фрагментация, но установлен бит "не фрагментировать" | |
5 | Маршрут источника неверен | |
6 | Сеть назначения неизвестна | |
7 | Хост назначения неизвестен | |
8 | Исходный хост изолирован (вышел из употребления) | |
9 | Сеть назначения административно запрещена | |
10 | Хост назначения административно запрещен | |
11 | Сеть недоступна для запрошенного типа обслуживания | |
12 | Хост недоступен для запрошенного типа обслуживания | |
13 | Связь административно запрещена с помощью фильтра | |
14 | Нарушение старшинства хостов | |
15 | Произошло сокращение старшинства | |
4 | 0 | Сдерживание источника |
5 | Перенаправление | |
0 | Перенаправление для сети | |
1 | Перенаправление для хоста | |
2 | Перенаправление для запрошенного типа обслуживания и сети | |
3 | Перенаправление для запрошенного типа обслуживания и хоста | |
8 | 0 | Запрос Echo |
9 | 0 | Объявление маршрутизатора |
10 | 0 | Просьба маршрутизатора |
11 | Время жизни истекло | |
0 | Время жизни равняется 0 в течение транзита | |
1 | Время жизни равняется 0 во время повторной сборки | |
12 | Неверный параметр | |
0 | Плохой IP заголовок | |
1 | Отсутствие необходимой опции | |
13 | 0 | Запрос временной метки |
14 | 0 | Ответ с временной меткой |
15 | 0 | Информационный запрос |
16 | 0 | Информационный ответ |
17 | 0 | Запрос маски адреса |
18 | 0 | Ответ с маской адреса |
В следующей таблице представлены поля в пределах пакета (расположенные после контрольной суммы), определенные значениями "типа" и "кода".
0 или 8; 0 | Идентификатор | 16 |
Номер сегмента | 16 | |
Данные | Переменная | |
3; 0-15 | Неиспользованное (должно быть 0) | 32 |
IP заголовок + первые 64 бита оригинальных данных дейтаграммы IP | Переменная | |
4; 0 | Неиспользованное | 32 |
IP заголовок + первые 64 бита оригинальных данных дейтаграммы IP | Переменная | |
5; 0-3 | Интернет-адрес шлюза | 32 |
IP заголовок + первые 64 бита оригинальных данных дейтаграммы IP | Переменная | |
11; 0 или 1 | Неиспользованное | 32 |
IP заголовок + первые 64 бита оригинальных данных дейтаграммы IP | Переменная | |
12; 0 | Указатель | 8 |
Неиспользованное | 24 | |
IP заголовок + первые 64 бита оригинальных данных дейтаграммы IP | Переменная | |
13 или 14; 0 | Идентификатор | 16 |
Номер сегмента | 16 | |
Начальная временная метка | 32 | |
Временная метка получения | 32 | |
Временная метка передачи | 32 | |
15 или 16; 0 | Идентификатор | 16 |
Номер сегмента | 16 | |
17 или 18; 0 | Идентификатор | 16 |
Номер сегмента | 16 | |
Маска подсети | 32 |
Заголовки протоколов
Эта часть приложения относится к лекции "Анализаторы сетевых потоков", которая описывает анализаторы сетевых потоков. Это приложение поможет вам при расшифровке зловредных интернет-пакетов. Для каждого типа пакета, перечисленного в приложении, даются ссылки.