Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3481 / 786 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 22:

Наборы инструментов, помогающие при судебном анализе

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                  Этот ключ активизирует подробный вывод.
22.7.

Чтобы выполнить 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"
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Гб.

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 и так далее. Коды суммированы в следующем списке.

Код Цвет в 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 Зеленоватый Сжатые файлы.
! Черный Аудио файлы.

В выводе HTML-код заглавной буквы представляет начало файла, а буквы нижнего регистра представляют дополнительные блоки, которые составляют восстановленный файл. Щелкая на одном из этих кодов, мы получаем данные из восстановленного файла.

Примечание. Инструмент TCT был выполнен на том же жестком диске, который мы анализировали в процессе "живого ответа" в лекции "Создание и использование комплекта инструментов "живого ответа" для Unix" . Это тот же самый фрагмент данных, который мы видели в файле /etc/motd, и который редактировался взломщиком.

Важно отметить, что lazarus может также обрабатывать устройства, не подвергнутые предварительной обработке (например, копии жесткого диска жертвы), также как и вывод утилиты unrm. Различие будет только во времени, которое займет обработка, потому что надо будет исследовать большее количество блоков данных.