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

Средства просмотра файлов и редакторы общего назначения

Разбить на страницы
Показывать лекцию целиком

Выбор подходящих редакторов и средств просмотра файлов является фундаментом успешного судебного анализа. Без средств, позволяющих должным образом рассматривать подозрительные файлы, следователь может прийти к неправильному заключению. Например, представьте себе аналитика, который полагается на средство просмотра изображений, обеспечивая надлежащие результаты для файла с именем image.tiff. Если файл image.tiff в действительности является музыкальным файлом MP3, он не будет правильно отображен в средстве просмотра, предназначенном для рисунков. Следовательно, нужно использовать общие средства просмотра файлов. К счастью для аналитика, такие средства просмотра общего назначения существуют.

Эта лекция посвящена редакторам и средствам просмотра, используемым во время типичного судебного анализа. Эти средства определены, как общие (generic) в том смысле, что они поддерживают много различных типов файлов. Некоторые из представленных средств просмотра поддерживают даже неограниченное количество файловых форматов. Более того, хотя "редактирование" обычно не выполняется во время расследования. В этой лекции проиллюстрировано, что редакторы, могут также добавлять мощные свойства к комплекту инструментов аналитика.

Команда file

Хотя команда file, которая поставляется с большинством инсталляций Unix, не активизирует средство просмотра, она упомянута здесь, потому что ее фундаментальное использование дополнит средства просмотра, обсуждаемые в следующих разделах. Поскольку эта команда присутствует в операционных системах Unix с открытым кодом (FreeBSD, Linux и так далее), ее исходный код легко доступен.

Реализация

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

Реализация

В своей самой простой форме, 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

Ниже показан соответствующий вывод.

Вы можете легко распознать, что этот файл содержит заголовок формата GIF, версии 89a, графический файл (и если вы не знали этого, то могли бы посмотреть файл magic). Однако если системы FreeBSD под рукой нет, чтобы можно было выполнить преобразование выходного формата, используя один ключ командной строки, напишите маленький файл форматирования, чтобы выполнить подобное преобразование. Это случается, когда в расследовании используется инструмент Hexdump системы Linux. Чтобы решить эту проблему, создайте следующий файл и назовите его hexdump.fmt.

"%12.12_ad" 16/1 "%02X"
"\t" 16/1 "%_p"
"\n"

Создав файл, вы можете использовать его вместе с Hexdump следующим образом.

forensic# hexdump-f hexdump.fmt suspiciousfile.bin

Рисунок 24.1 демонстрирует вывод Hexdump с использованием спецификации формата, заданной в файле hexdump.fmt.

(рис 24.1) Вывод инструмента hexdump для файла suspiciousfile.bin

Спецификацию формата выходного файла инструмента Hexdump понять не просто. В целом, формат состоит из одной или более лексем. Каждая лексема является символом, который определяет либо то, как отображено смещение байта, либо выходной формат для содержимого файла. Кроме того, каждой лексеме можно присвоить дополнительную (не обязательную) спецификацию byte count (подсчет байтов) и iteration (итерация), в следующей форме.

<итерация>/<подсчет байтов> <лексема>

В дополнение к хорошо известным для программистов, работающих на языках C/C ++, операторам printf, лексемы могут содержать следующие параметры форматирования (этот текст можно найти также на справочной (man) странице в Hexdump ).

_a [dox] Отображает смещение, совокупное по входным файлам, следующего байта, который будет отображен. Добавленные в конец символы d, o, и x указывают основание отображаемого числа: десятичное, восьмеричное или шестнадцатеричное, соответственно.
_A [dox] Идентично конверсионной строке _a, за исключением того, что она выполняется только однажды, когда обрабатываются все входные данные.
_c Выводит символы в виде заданного по умолчанию набора символов. Непечатаемые символы отображаются в виде трех символов восьмеричным числом, дополненным нулем, за исключением тех символов, которые представляются стандартным обозначением с символом escape (см. выше): они отображаются строками из двух символов.
_p Выводит символы в виде заданного по умолчанию набора символов. Непечатаемые символы отображаются как одна точка ".".
_u Выводит символы US ASCII, за исключением того, что управляющие символы отображаются с помощью следующих названий, использующих нижний регистр. Символы большие, чем 0xff, в шестнадцатеричном формате отображаются как шестнадцатеричные строки.
% _c, % _p, % _u, %c Во внимание принимается только один байт.
%d, %i, %o, %u, %X, %x По умолчанию четыре байта, но поддерживаются также один, два и четыре байта.
%E, %e, %f, %G, %g Восемь байтов задано по умолчанию, поддерживается также учет четырех байтов.

Следовательно, файл hexdump.fmt, представленный ранее, интерпретируется следующим образом

linux# cat hexdump.fmt

"%12.12_ad " 16/1 "%02X "
"\t" 16/1 "%_p"
"\n"
  • Первая лексема форматирует смещение байта. Она имеет длину 12 цифр и дополнена 12 нулями. Смещение байта отображено десятичным числом. Два дополнительных пробела появляются после смещения байта, перед тем как начинаются фактические данные файла.
  • Вторая лексема повторена 16 раз, и 1 байт считан для каждой итерации. При выводе, он находится в двуцифровом шестнадцатеричном формате для каждой итерации. Поэтому каждая лексема представляет байт в правильно построенных столбцах.
  • Вторая строка повторяет вывод тех же самых 16 прочитанных байтов, на сей раз, форматируя байты в читаемый ASCII-код (однако, для непечатаемого символа вставляется точка [.]). \t представляет вставку TAB (табулятор) перед выводимыми байтами. Если бы эта строка в файле формата была передвинута вверх на первую строку, то была бы считана новая последовательность, но мы не собирались это выполнять. Поэтому, эта лексема должна находиться на новой линии.
  • Четвертая строка выводит символ начала строки.
  • Инструмент Hexdump является чрезвычайно мощной и эффективной утилитой, которая применяется для просмотра содержимого файлов при судебном расследовании. С небольшим знанием файлов форматирования утилиты Hexdump, аналитик может рассматривать данные любым нужным ему способом. Поэтому Hexdump необходим любому судебному следователю. К счастью, этот инструмент обычно устанавливается в базовой инсталляции большинства операционных систем Unix.

    Hexedit

    Хотя Hexdump является прекрасным инструментом для просмотра содержимого файлов, инструмент hexedit представляется собой лучшую альтернативу. hexedit позволяет пользователю редактировать файл и отображать его в формате, аналогичном hexdump.fmt. И что еще важнее, hexedit позволяет аналитику отыскивать шестнадцатеричные и/или ASCII-строки, то есть нечто, что нельзя выполнить, используя только утилиты Hexdump и grep (инструмент, который ищет соответствия заданному образцу, доступный в большинстве операционных систем Unix), потому что вывод может быть разбит переходом на новую строку.

    Например, если вы ищете строку "utxZ" среди данных, изображенных на рис 24.1, она была бы пропущена утилитой grep (стандартный инструмент поиска, просматривающий строку за строкой). Это происходит потому, что строка "utxZ" расположена на двух строках в выводе Hexdump. Однако с помощью hexedit, аналитик может легко найти эту строку в выводе ASCII-кода.

    hexedit является эффективным судебным инструментом еще и потому, что он может открывать большие файлы (такого большого размера, как файлы поддержки операционной системы) без катастрофического замедления работы машины. Это происходит потому, что hexedit открывает входной файл по мере необходимости, по фрагменту за раз. Следовательно, при необходимости, с помощью hexedit можно производить поиск и анализировать целое устройство (типа жестких дисков на 80 Гб).

    Инструмент , http://merd.net/pixel/hexedit-1.2.2.bin.i386.dynamic.tgz и http://merd.net/pixel/hexedit-1.2.2.src.tgz.

    Реализация

    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 для поиска вперед. Наберите в строке, предназначенной для поиска, 66 D4 D4 68 и нажмите ENTER. Если требуется поиск в обратном направлении, нажмите CTRL-R вместо CTRL-S. Следующий снимок с экрана иллюстрирует этот поиск в шестнадцатеричном формате.

    При судебном расследовании функция редактирования инструмента hexedit используется редко. Поэтому, чтобы гарантировать целостность файла улик, неплохо сделать входной файл hexedit доступным только для чтения. Поскольку в hexedit нет никакого ключа, позволяющего выполнить эту задачу, предварительно необходимо обязательно выполнить следующую команду, делающую файл suspiciousfile.bin доступным только для чтения.

    forensic# chmod 500 suspiciousfile.bin

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

    Vi

    Иногда файл, предназначенный для анализа, является текстовым, а не двоичным. В операционных системах Unix текстовые файлы можно просматривать, используя команду cat, но опять же поиск может быть не эффективен, если ключевое слово занимает несколько строк. Редактор vi устанавливается с большинством операционных систем Unix, как самый элементарный редактор. Пусть вас не вводит в заблуждение слово элементарный (basic): на овладение мощью редактора vi могут потребоваться годы. В этом разделе мы сконцентрируемся на возможностях vi, связанных с просмотром файлов и будем предполагать, что читатель немного знаком с этим инструментом, поскольку полное объяснение его работы находится за пределами контекста этой лекции.

    Реализация

    Редактор 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", которую можно найти на сайте http://www.perl.com или на машине, где должным образом установлен язык программирования Perl.

    Совет. Чтобы выйти из редактора vi без записи в файл, наберите :q!.

    Последний важный аспект, касающийся vi, на который стоит обратить внимание - это его способность читать двоичные файлы. Хотя его вывод не так симпатичен, как вывод инструментов Hexdump или hexedit, он достаточно эффективен, если vi - единственный доступный инструмент.

    vi-R suspiciousfile.bin

    Ниже приведен соответствующий вывод.

    В выводе рассматривается тот же самый файл, который анализировался в разделе, посвященном hexedit. Все содержимое в непечатаемом тексте выводится в шестнадцатеричной форме, используя формат \x##. Любой печатаемый ASCII-код можно просматривать на дисплее. Использование редактора vi для просмотра файла, который частично является текстом, а частично двоичным кодом (подобно этим ужасным отформатированным файлам DOS) очень полезно! Вот как выглядит нужная команда.

    vi-R dosfile.txt

    А вот соответствующий вывод.

    Примечание. Редактор vi, установленный по умолчанию в большинстве систем Linux, в действительности является редактором vim (улучшенный vi ). Редактор vim отображает вывод не так, как традиционный vi. Двоичный режим в редакторе vim может функционировать при использовании ключа -b.

    Frhed

    .

    Реализация

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

    После того, как был сделан дамп данных в текстовый файл, вывод можно просматривать с помощью любой стандартной утилиты, предназначенной для просмотра текстов. После того, как вы экспортировали данные в виде Hexdump, можно открыть текстовый файл в Windows Notepad (Блокнот).

    Одна из проблем просмотра файлов в шестнадцатеричных кодах заключается в понятиях Наименьшего значащего байтового кода (little endian - прямой порядок байтов) и Наибольшего значащего байтового кода (big endian - обратный порядок байтов), которые вступают в игру, когда файлы с одного типа архитектуры процессоров (например, процессоров Motorola) просматриваются на процессорах другого типа (например, процессоров Intel). Редактор Frhed может компенсировать это различие, если использовать ключи из меню, к которому можно обратиться, выбрав Options/Binary Mode (Двоичный режим). С помощью этого инструмента файлы с машин, имеющих различный порядок следования байтов, могут быть проанализированы и легко переставлены. На следующей иллюстрации показано диалоговое окно Binary Mode Setting, доступ к которому вы получаете через пункты меню Options/Binary Mode.

    Для пользователей, которым трудно использовать непростые средства просмотра шестнадцатеричных кодов и переводить шестнадцатеричный формат в двоичный, есть полезная функция, доступная через пункты меню Edit/Manipulate Bits (Манипулирование битами), открывающие диалоговое окно Manipulate Bits. В этом диалоговом окне вы можете выбирать шестнадцатеричные значения, как ряд ключей включить/выключить или в виде флажков, где отмеченный флажок означает 1, а неотмеченный - ноль.

    Возможно, одна из наиболее полезных функций инструмента Frhed, которая отсутствует во многих других редакторах, состоит в его способности открывать файл частично. Это позволяет судебному аналитику считывать для просмотра маленькие порции огромных файлов, типа образов, созданных утилитой dd (обсуждение dd см. в лекции "Некоммерческие наборы инструментов, предназначенные для судебного дублирования"), не блокируя ресурсы всего компьютера. Чтобы открыть файл частично, выберите File/Open Partially. Затем программа запрашивает у пользователя смещение начального байта и длину сегмента, которую надо считать.

    Xvi32

    Редактор xvi32 - это еще один бесплатный инструмент, предназначенный для просмотра файлов Windows в шестнадцатеричном формате. Он похож на инструмент Frhed тем, что имеет графический интерфейс пользователя (GUI). Редактор xvi32 выглядит несколько ограниченным в своих функциональных возможностях, потому что не имеет опции частичного открытия файлов, которая есть у Frhed, но в остальном он хорошо с ним конкурирует.

    Редактор .

    Реализация

    Щелкните дважды на значке xvi32 после того, как вы разархивируете дистрибутивы. Выберите File/Open, а затем выберите файл suspiciousfile.bin, чтобы открыть интерфейс xvi32 для редактирования файлов в шестнадцатеричном формате.

    Поскольку аналитик обычно только рассматривает содержимое файлов, то в этом разделе будет описана только функция поиска. Здесь эту функцию использовать намного проще, чем в редакторе Frhed, поскольку для поиска байтов в шестнадцатеричном формате не применяется никакое кодирование. Для поиска строк, заданных в ASCII и шестнадцатеричном коде, в пределах содержимого файлов, выберите Search/Find, чтобы открыть диалоговое окно Find, показанное ниже.

    Обратите внимание на опцию, помеченную как Joker Char Hex. Это шестнадцатеричное представление символа, который будет соответствовать любому символу. В данном примере, 0x2E представляет символ ".". Помещая символ "." в критерий поиска, мы сообщаем редактору xvi32, что в этом месте может стоять любой символ. Редактор xvi32 находит не только текстовые строки, но он может также находить строки, заданные в шестнадцатеричном формате.

    Чтобы в редакторе xvi32 найти строку, заданную в шестнадцатеричном формате, выберите опцию Hex String в диалоговом окне Find и заполните критерии поиска. Если найдено соответствие, то оно подсвечивается в окне просмотра.

    Quickview Plus

    Для судебного следователя ).

    Поскольку Quickview не является оригинальным редактором, в котором обычно создаются многие файлы, то опасность просмотра зараженных файлов смягчена. Например, представьте себе документ Microsoft Word, который содержит вредный макрос, обнаруженный среди данных, захваченных у подозреваемого. Если бы для просмотра этого документа использовался редактор Word, то он мог бы потенциально выполнить на судебном компьютере какие-либо не желательные для аналитика действия. С другой стороны, при просмотре этого документа редактор Quickview не выполняет макросы, как это сделал бы Word, и поэтому обеспечивает аналитику еще один уровень доверия и гарантии.

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

    Реализация

    Способность Quickview эффективно переключаться между файлами, несмотря на множество разных файлов, облегчается тем, что левая панель окна интерфейса выполнена в стиле Windows Explorer. Этот интерфейс делает возможным просмотр множества файлов с использованием только клавишей стрелок и TAB, которые помогают, когда время ограничено.

    Чтобы передвигаться в .

    (рис 24.3) Интерфейс Quickview, выполненный в стиле Windows Explorer

    После того как появится содержание каталога, можно нажимать стрелки "ВВЕРХ", "ВНИЗ", "ВПРАВО", "ВЛЕВО", для отображения и подсветки нужных файлов. На рис 24.3 рассматривается файл suspiciousfile.txt. Содержимое файла видно на правой панели.

    Функциональные возможности, встроенные в Quickview, позволяют определять различные типы файлов, исходя из заголовка и информации, находящейся в нижнем колонтитуле, а не только из имени файла. Это полезно для аналитика, потому что Quickview отобразит файл правильно даже в том случае, если он имеет неправильное расширение файла. Эта ситуация, похоже, часто случается во время реальных расследований, потому что подозреваемый пытается скрывать файлы. Так как обычное поведение операционной системы Windows при просмотре и редактировании файлов состоит в исследовании расширения файла и запуска связанной с ним программы, то Quickview является лучшим выбором для судебного аналитика, потому что на него не влияет расширение файла.

    На рис 24.4 продемонстрированы возможности Quickview на примере просмотра файла suspiciousfile.bin, реальные особенности которого показываются в виде изображения в формате GIF.

    (рис 24.4) Панель отображения файлов редактора Quickview

    С помощью редактора Quickview можно просматривать не только обычные файлы данных, обнаруженные во время расследования, но также информацию о системе и исполняемых файлах. Это помогает аналитику во время расследования, когда требуется инструмент для анализа. Следующие два экранных снимка показывают различные библиотеки динамической компоновки (DLL) и исполняемые файлы, найденные в системе Microsoft Windows. Пользователь обеспечивается важной информацией, касающейся расшифровки предназначения файла и лабораторных систем, которые требуются для продолжения его анализа.

    Важно не обесценивать инструмент и рис 24.6 представлен произвольный файл в формате GIF, найденный в кэше приложения Internet Explorer, который рассматривается в шестнадцатеричном и GIF-режимах.

    (рис 24.6) Quickview может отображать файлы в их родном формате(рис 24.5) Quickview может отображать файлы как шестнадцатеричные файлы

    Midnight Commander

    .

    Реализация

    Когда вы загружаете 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

    Обратите внимание, что левая панель в .

    Нажав клавишу F4 при просмотре файла, вы переключите средство просмотра на шестнадцатеричный режим. Этот режим генерирует вывод, подобный выводу инструментов . Повторное нажатие F4 переключает режим назад к ASCII-кодам.

    Нажатие F7 в обоих режимах просмотра позволит вам искать строки в ASCII или шестнадцатеричных кодах.

    (рис 24.9) Способность инструмента Midnight Commander просматривать файлы(рис 24.8) 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. Мы предполагаем, что общая картина вам ясна, а выбор конкретного инструмента является в данном случае результатом личного предпочтения.

    Страницы:

    Выбор подходящих редакторов и средств просмотра файлов является фундаментом успешного судебного анализа. Без средств, позволяющих должным образом рассматривать подозрительные файлы, следователь может прийти к неправильному заключению. Например, представьте себе аналитика, который полагается на средство просмотра изображений, обеспечивая надлежащие результаты для файла с именем image.tiff. Если файл image.tiff в действительности является музыкальным файлом MP3, он не будет правильно отображен в средстве просмотра, предназначенном для рисунков. Следовательно, нужно использовать общие средства просмотра файлов. К счастью для аналитика, такие средства просмотра общего назначения существуют.

    Эта лекция посвящена редакторам и средствам просмотра, используемым во время типичного судебного анализа. Эти средства определены, как общие (generic) в том смысле, что они поддерживают много различных типов файлов. Некоторые из представленных средств просмотра поддерживают даже неограниченное количество файловых форматов. Более того, хотя "редактирование" обычно не выполняется во время расследования. В этой лекции проиллюстрировано, что редакторы, могут также добавлять мощные свойства к комплекту инструментов аналитика.

    Команда file

    Хотя команда file, которая поставляется с большинством инсталляций Unix, не активизирует средство просмотра, она упомянута здесь, потому что ее фундаментальное использование дополнит средства просмотра, обсуждаемые в следующих разделах. Поскольку эта команда присутствует в операционных системах Unix с открытым кодом (FreeBSD, Linux и так далее), ее исходный код легко доступен.

    Реализация

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

    Реализация

    В своей самой простой форме, 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

    Ниже показан соответствующий вывод.

    Вы можете легко распознать, что этот файл содержит заголовок формата GIF, версии 89a, графический файл (и если вы не знали этого, то могли бы посмотреть файл magic). Однако если системы FreeBSD под рукой нет, чтобы можно было выполнить преобразование выходного формата, используя один ключ командной строки, напишите маленький файл форматирования, чтобы выполнить подобное преобразование. Это случается, когда в расследовании используется инструмент Hexdump системы Linux. Чтобы решить эту проблему, создайте следующий файл и назовите его hexdump.fmt.

    "%12.12_ad" 16/1 "%02X"
    "\t" 16/1 "%_p"
    "\n"

    Создав файл, вы можете использовать его вместе с Hexdump следующим образом.

    forensic# hexdump-f hexdump.fmt suspiciousfile.bin

    Рисунок 24.1 демонстрирует вывод Hexdump с использованием спецификации формата, заданной в файле hexdump.fmt.

    (рис 24.1) Вывод инструмента hexdump для файла suspiciousfile.bin

    Спецификацию формата выходного файла инструмента Hexdump понять не просто. В целом, формат состоит из одной или более лексем. Каждая лексема является символом, который определяет либо то, как отображено смещение байта, либо выходной формат для содержимого файла. Кроме того, каждой лексеме можно присвоить дополнительную (не обязательную) спецификацию byte count (подсчет байтов) и iteration (итерация), в следующей форме.

    <итерация>/<подсчет байтов> <лексема>

    В дополнение к хорошо известным для программистов, работающих на языках C/C ++, операторам printf, лексемы могут содержать следующие параметры форматирования (этот текст можно найти также на справочной (man) странице в Hexdump ).

    _a [dox] Отображает смещение, совокупное по входным файлам, следующего байта, который будет отображен. Добавленные в конец символы d, o, и x указывают основание отображаемого числа: десятичное, восьмеричное или шестнадцатеричное, соответственно.
    _A [dox] Идентично конверсионной строке _a, за исключением того, что она выполняется только однажды, когда обрабатываются все входные данные.
    _c Выводит символы в виде заданного по умолчанию набора символов. Непечатаемые символы отображаются в виде трех символов восьмеричным числом, дополненным нулем, за исключением тех символов, которые представляются стандартным обозначением с символом escape (см. выше): они отображаются строками из двух символов.
    _p Выводит символы в виде заданного по умолчанию набора символов. Непечатаемые символы отображаются как одна точка ".".
    _u Выводит символы US ASCII, за исключением того, что управляющие символы отображаются с помощью следующих названий, использующих нижний регистр. Символы большие, чем 0xff, в шестнадцатеричном формате отображаются как шестнадцатеричные строки.
    % _c, % _p, % _u, %c Во внимание принимается только один байт.
    %d, %i, %o, %u, %X, %x По умолчанию четыре байта, но поддерживаются также один, два и четыре байта.
    %E, %e, %f, %G, %g Восемь байтов задано по умолчанию, поддерживается также учет четырех байтов.

    Следовательно, файл hexdump.fmt, представленный ранее, интерпретируется следующим образом

    linux# cat hexdump.fmt
    
    "%12.12_ad " 16/1 "%02X "
    "\t" 16/1 "%_p"
    "\n"
  • Первая лексема форматирует смещение байта. Она имеет длину 12 цифр и дополнена 12 нулями. Смещение байта отображено десятичным числом. Два дополнительных пробела появляются после смещения байта, перед тем как начинаются фактические данные файла.
  • Вторая лексема повторена 16 раз, и 1 байт считан для каждой итерации. При выводе, он находится в двуцифровом шестнадцатеричном формате для каждой итерации. Поэтому каждая лексема представляет байт в правильно построенных столбцах.
  • Вторая строка повторяет вывод тех же самых 16 прочитанных байтов, на сей раз, форматируя байты в читаемый ASCII-код (однако, для непечатаемого символа вставляется точка [.]). \t представляет вставку TAB (табулятор) перед выводимыми байтами. Если бы эта строка в файле формата была передвинута вверх на первую строку, то была бы считана новая последовательность, но мы не собирались это выполнять. Поэтому, эта лексема должна находиться на новой линии.
  • Четвертая строка выводит символ начала строки.
  • Инструмент Hexdump является чрезвычайно мощной и эффективной утилитой, которая применяется для просмотра содержимого файлов при судебном расследовании. С небольшим знанием файлов форматирования утилиты Hexdump, аналитик может рассматривать данные любым нужным ему способом. Поэтому Hexdump необходим любому судебному следователю. К счастью, этот инструмент обычно устанавливается в базовой инсталляции большинства операционных систем Unix.

    Hexedit

    Хотя Hexdump является прекрасным инструментом для просмотра содержимого файлов, инструмент hexedit представляется собой лучшую альтернативу. hexedit позволяет пользователю редактировать файл и отображать его в формате, аналогичном hexdump.fmt. И что еще важнее, hexedit позволяет аналитику отыскивать шестнадцатеричные и/или ASCII-строки, то есть нечто, что нельзя выполнить, используя только утилиты Hexdump и grep (инструмент, который ищет соответствия заданному образцу, доступный в большинстве операционных систем Unix), потому что вывод может быть разбит переходом на новую строку.

    Например, если вы ищете строку "utxZ" среди данных, изображенных на рис 24.1, она была бы пропущена утилитой grep (стандартный инструмент поиска, просматривающий строку за строкой). Это происходит потому, что строка "utxZ" расположена на двух строках в выводе Hexdump. Однако с помощью hexedit, аналитик может легко найти эту строку в выводе ASCII-кода.

    hexedit является эффективным судебным инструментом еще и потому, что он может открывать большие файлы (такого большого размера, как файлы поддержки операционной системы) без катастрофического замедления работы машины. Это происходит потому, что hexedit открывает входной файл по мере необходимости, по фрагменту за раз. Следовательно, при необходимости, с помощью hexedit можно производить поиск и анализировать целое устройство (типа жестких дисков на 80 Гб).

    Инструмент , http://merd.net/pixel/hexedit-1.2.2.bin.i386.dynamic.tgz и http://merd.net/pixel/hexedit-1.2.2.src.tgz.

    Реализация

    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 для поиска вперед. Наберите в строке, предназначенной для поиска, 66 D4 D4 68 и нажмите ENTER. Если требуется поиск в обратном направлении, нажмите CTRL-R вместо CTRL-S. Следующий снимок с экрана иллюстрирует этот поиск в шестнадцатеричном формате.

    При судебном расследовании функция редактирования инструмента hexedit используется редко. Поэтому, чтобы гарантировать целостность файла улик, неплохо сделать входной файл hexedit доступным только для чтения. Поскольку в hexedit нет никакого ключа, позволяющего выполнить эту задачу, предварительно необходимо обязательно выполнить следующую команду, делающую файл suspiciousfile.bin доступным только для чтения.

    forensic# chmod 500 suspiciousfile.bin

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

    Vi

    Иногда файл, предназначенный для анализа, является текстовым, а не двоичным. В операционных системах Unix текстовые файлы можно просматривать, используя команду cat, но опять же поиск может быть не эффективен, если ключевое слово занимает несколько строк. Редактор vi устанавливается с большинством операционных систем Unix, как самый элементарный редактор. Пусть вас не вводит в заблуждение слово элементарный (basic): на овладение мощью редактора vi могут потребоваться годы. В этом разделе мы сконцентрируемся на возможностях vi, связанных с просмотром файлов и будем предполагать, что читатель немного знаком с этим инструментом, поскольку полное объяснение его работы находится за пределами контекста этой лекции.

    Реализация

    Редактор 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", которую можно найти на сайте http://www.perl.com или на машине, где должным образом установлен язык программирования Perl.

    Совет. Чтобы выйти из редактора vi без записи в файл, наберите :q!.

    Последний важный аспект, касающийся vi, на который стоит обратить внимание - это его способность читать двоичные файлы. Хотя его вывод не так симпатичен, как вывод инструментов Hexdump или hexedit, он достаточно эффективен, если vi - единственный доступный инструмент.

    vi-R suspiciousfile.bin

    Ниже приведен соответствующий вывод.

    В выводе рассматривается тот же самый файл, который анализировался в разделе, посвященном hexedit. Все содержимое в непечатаемом тексте выводится в шестнадцатеричной форме, используя формат \x##. Любой печатаемый ASCII-код можно просматривать на дисплее. Использование редактора vi для просмотра файла, который частично является текстом, а частично двоичным кодом (подобно этим ужасным отформатированным файлам DOS) очень полезно! Вот как выглядит нужная команда.

    vi-R dosfile.txt

    А вот соответствующий вывод.

    Примечание. Редактор vi, установленный по умолчанию в большинстве систем Linux, в действительности является редактором vim (улучшенный vi ). Редактор vim отображает вывод не так, как традиционный vi. Двоичный режим в редакторе vim может функционировать при использовании ключа -b.

    Frhed

    .

    Реализация

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

    После того, как был сделан дамп данных в текстовый файл, вывод можно просматривать с помощью любой стандартной утилиты, предназначенной для просмотра текстов. После того, как вы экспортировали данные в виде Hexdump, можно открыть текстовый файл в Windows Notepad (Блокнот).

    Одна из проблем просмотра файлов в шестнадцатеричных кодах заключается в понятиях Наименьшего значащего байтового кода (little endian - прямой порядок байтов) и Наибольшего значащего байтового кода (big endian - обратный порядок байтов), которые вступают в игру, когда файлы с одного типа архитектуры процессоров (например, процессоров Motorola) просматриваются на процессорах другого типа (например, процессоров Intel). Редактор Frhed может компенсировать это различие, если использовать ключи из меню, к которому можно обратиться, выбрав Options/Binary Mode (Двоичный режим). С помощью этого инструмента файлы с машин, имеющих различный порядок следования байтов, могут быть проанализированы и легко переставлены. На следующей иллюстрации показано диалоговое окно Binary Mode Setting, доступ к которому вы получаете через пункты меню Options/Binary Mode.

    Для пользователей, которым трудно использовать непростые средства просмотра шестнадцатеричных кодов и переводить шестнадцатеричный формат в двоичный, есть полезная функция, доступная через пункты меню Edit/Manipulate Bits (Манипулирование битами), открывающие диалоговое окно Manipulate Bits. В этом диалоговом окне вы можете выбирать шестнадцатеричные значения, как ряд ключей включить/выключить или в виде флажков, где отмеченный флажок означает 1, а неотмеченный - ноль.

    Возможно, одна из наиболее полезных функций инструмента Frhed, которая отсутствует во многих других редакторах, состоит в его способности открывать файл частично. Это позволяет судебному аналитику считывать для просмотра маленькие порции огромных файлов, типа образов, созданных утилитой dd (обсуждение dd см. в лекции "Некоммерческие наборы инструментов, предназначенные для судебного дублирования"), не блокируя ресурсы всего компьютера. Чтобы открыть файл частично, выберите File/Open Partially. Затем программа запрашивает у пользователя смещение начального байта и длину сегмента, которую надо считать.

    Xvi32

    Редактор xvi32 - это еще один бесплатный инструмент, предназначенный для просмотра файлов Windows в шестнадцатеричном формате. Он похож на инструмент Frhed тем, что имеет графический интерфейс пользователя (GUI). Редактор xvi32 выглядит несколько ограниченным в своих функциональных возможностях, потому что не имеет опции частичного открытия файлов, которая есть у Frhed, но в остальном он хорошо с ним конкурирует.

    Редактор .

    Реализация

    Щелкните дважды на значке xvi32 после того, как вы разархивируете дистрибутивы. Выберите File/Open, а затем выберите файл suspiciousfile.bin, чтобы открыть интерфейс xvi32 для редактирования файлов в шестнадцатеричном формате.

    Поскольку аналитик обычно только рассматривает содержимое файлов, то в этом разделе будет описана только функция поиска. Здесь эту функцию использовать намного проще, чем в редакторе Frhed, поскольку для поиска байтов в шестнадцатеричном формате не применяется никакое кодирование. Для поиска строк, заданных в ASCII и шестнадцатеричном коде, в пределах содержимого файлов, выберите Search/Find, чтобы открыть диалоговое окно Find, показанное ниже.

    Обратите внимание на опцию, помеченную как Joker Char Hex. Это шестнадцатеричное представление символа, который будет соответствовать любому символу. В данном примере, 0x2E представляет символ ".". Помещая символ "." в критерий поиска, мы сообщаем редактору xvi32, что в этом месте может стоять любой символ. Редактор xvi32 находит не только текстовые строки, но он может также находить строки, заданные в шестнадцатеричном формате.

    Чтобы в редакторе xvi32 найти строку, заданную в шестнадцатеричном формате, выберите опцию Hex String в диалоговом окне Find и заполните критерии поиска. Если найдено соответствие, то оно подсвечивается в окне просмотра.

    Quickview Plus

    Для судебного следователя ).

    Поскольку Quickview не является оригинальным редактором, в котором обычно создаются многие файлы, то опасность просмотра зараженных файлов смягчена. Например, представьте себе документ Microsoft Word, который содержит вредный макрос, обнаруженный среди данных, захваченных у подозреваемого. Если бы для просмотра этого документа использовался редактор Word, то он мог бы потенциально выполнить на судебном компьютере какие-либо не желательные для аналитика действия. С другой стороны, при просмотре этого документа редактор Quickview не выполняет макросы, как это сделал бы Word, и поэтому обеспечивает аналитику еще один уровень доверия и гарантии.

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

    Реализация

    Способность Quickview эффективно переключаться между файлами, несмотря на множество разных файлов, облегчается тем, что левая панель окна интерфейса выполнена в стиле Windows Explorer. Этот интерфейс делает возможным просмотр множества файлов с использованием только клавишей стрелок и TAB, которые помогают, когда время ограничено.

    Чтобы передвигаться в .

    (рис 24.3) Интерфейс Quickview, выполненный в стиле Windows Explorer

    После того как появится содержание каталога, можно нажимать стрелки "ВВЕРХ", "ВНИЗ", "ВПРАВО", "ВЛЕВО", для отображения и подсветки нужных файлов. На рис 24.3 рассматривается файл suspiciousfile.txt. Содержимое файла видно на правой панели.

    Функциональные возможности, встроенные в Quickview, позволяют определять различные типы файлов, исходя из заголовка и информации, находящейся в нижнем колонтитуле, а не только из имени файла. Это полезно для аналитика, потому что Quickview отобразит файл правильно даже в том случае, если он имеет неправильное расширение файла. Эта ситуация, похоже, часто случается во время реальных расследований, потому что подозреваемый пытается скрывать файлы. Так как обычное поведение операционной системы Windows при просмотре и редактировании файлов состоит в исследовании расширения файла и запуска связанной с ним программы, то Quickview является лучшим выбором для судебного аналитика, потому что на него не влияет расширение файла.

    На рис 24.4 продемонстрированы возможности Quickview на примере просмотра файла suspiciousfile.bin, реальные особенности которого показываются в виде изображения в формате GIF.

    (рис 24.4) Панель отображения файлов редактора Quickview

    С помощью редактора Quickview можно просматривать не только обычные файлы данных, обнаруженные во время расследования, но также информацию о системе и исполняемых файлах. Это помогает аналитику во время расследования, когда требуется инструмент для анализа. Следующие два экранных снимка показывают различные библиотеки динамической компоновки (DLL) и исполняемые файлы, найденные в системе Microsoft Windows. Пользователь обеспечивается важной информацией, касающейся расшифровки предназначения файла и лабораторных систем, которые требуются для продолжения его анализа.

    Важно не обесценивать инструмент и рис 24.6 представлен произвольный файл в формате GIF, найденный в кэше приложения Internet Explorer, который рассматривается в шестнадцатеричном и GIF-режимах.

    (рис 24.6) Quickview может отображать файлы в их родном формате(рис 24.5) Quickview может отображать файлы как шестнадцатеричные файлы

    Midnight Commander

    .

    Реализация

    Когда вы загружаете 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

    Обратите внимание, что левая панель в .

    Нажав клавишу F4 при просмотре файла, вы переключите средство просмотра на шестнадцатеричный режим. Этот режим генерирует вывод, подобный выводу инструментов . Повторное нажатие F4 переключает режим назад к ASCII-кодам.

    Нажатие F7 в обоих режимах просмотра позволит вам искать строки в ASCII или шестнадцатеричных кодах.

    (рис 24.9) Способность инструмента Midnight Commander просматривать файлы(рис 24.8) 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. Мы предполагаем, что общая картина вам ясна, а выбор конкретного инструмента является в данном случае результатом личного предпочтения.

    Вернуться к учебному плану