21.08.2013

В помощь пентестеру: простые и полезные трюки для анализа бинарных файлов. Часть вторая

image

Эта статья – вторая часть трилогии, посвященной простым и полезным техникам при анализе бинарных файлов.

Автор: Йори Квичко (Yori Kvitchko) (Counter Hack)

Примечание редактора: в предыдущей статье Йори рассказывал о методах анализа бинарных файлов, сделав основной упор на поиске коммуникационных потоков. В этой статье Йори уделяет внимание файлам данных, очень важному источнику информации, где могут находиться пароли, хеши или любые другие конфиденциальные данные, используемые автономным приложением. Техники, описываемые Йори, - важная часть арсенала пентестера, применяемого при анализе приложений.

Эта статья – вторая часть трилогии, посвященной простым и полезным техникам при анализе бинарных файлов. В первой статье я рассказывал о том, как пентестер или любой другой сотрудник аналитической службы может найти изолированный коммуникационный канал, используемый бинарным файлом. В этот раз мы поговорим о получение информации из файлов, которые создаются автономными приложениями во время работы. Опять же, основное внимание будет уделено ОС Windows, поскольку именно в этой среде нам попадаются самые лакомые и жирные куски, включая клиентское программное обеспечение и утилиты для внутреннего пользования.

В Windows файлы данных, используемые приложениями, обычно хранятся в папке AppData. Эта папка, отдельная для каждого пользователя, может быть золотым прииском при анализе информации об установленных приложениях. AppData (или Application Data если речь идет о Windows XP) находится в домашней директории каждого пользователя и доступ к ней можно получить при помощи переменной среды %AppData% и команды «dir /a %AppData%» (я указал параметр /а после команды dir для того, чтобы отобразились папки с любой комбинацией атрибутов; у некоторых элементов внутри директории AppData есть скрытый атрибут, и команда dir с параметром /a выводит и их тоже).

Вот некоторые полезные файлы, на которые следует обратить внимание:
  • История, кеш и временные файлы – в основном все то, что относится к браузеру. Многие приложения используют Internet Explorer для отображения информации. Таким образом, по кешу IE и временным файлам можно понять, чем занимался пользователь или получить другую конфиденциальную информацию.
  • Конфигурационные файлы – все, начиная от IP-адресов и заканчивая паролями, может находиться в таких файлах.
  • Сохраненные файлы данных – если исследуемое приложение сохраняет файлы с данными, там может содержаться как полезная информация, так и метаданные.
Для анализа, как вышеупомянутых типов файлов, так и вообще любых файлов, которые можно найти в директории приложения, мы можем использовать несколько различных техник. В первую очередь можно использовать старую добрую утилиту strings, которая помогает анализировать не только бинарные файлы, но и файлы данных. К примеру, можно искать те же самые типы данных, которые мы искали в первой статьи (в особенности это касается URL’ов и IP-адресов). Также следует отметить, что strings по умолчанию ищет строки в формате ASCII и Unicode, возвращая последовательности длинной от трех и более символов.

Как только мы получили несколько файлов и сделали беглый анализ при помощи утилиты strings, вполне вероятно мы захотим определить тип файла. Тут возможны два варианта: либо файл будет в текстовом формате (ASCII или XML, встречающийся наиболее часто), либо в бинарном формате. В случае с бинарными файлами тип можно установить по расширению или при помощи Linux-команды file. Для Windows существует аналог команды file: GnuWin32. Пример использования команды:

$ file data.ext
data.ext; gzip compressed data, from Unix, last modified: Mon Mar 11 14:35:58 2013

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

zip/tar/gzip – распаковывается любым zip-архиватором на ваш выбор. Внутри архивов обычно хранятся другие файлы данных. Многие форматы данных обычно являются замаскированными zip-архивами. Для проверки этой гипотезы попробуйте поменять расширение у файла на «.zip», а затем воспользуйтесь архиватором.

plist - файлы с параметрами приложений для Mac OS X и iOS. Эти файлы особенно полезны при анализе мобильных приложений. Для просмотра содержимого файлов вы можете, к примеру, использовать утилиту plist Editor.
sqlite – разновидность базы данных, которой пользуются некоторые приложения для хранения локальных данных (например, Firefox и многие мобильные приложения). Для анализа информации, хранящейся в формате sqlite, используйте SQLiteSpy или sqlite3 (утилита для Linux).

swf – строго говоря, этот формат не является форматом для хранения данных, однако инструмент swftools может извлекать картинки, музыку, видео и даже исходный текст из файлов SWF Flash.

Универсальные метаданные (General Metadata)- для универсальных метаданных не предусмотрен какой-то конкретный тип файлов. Используйте ExifTool для просмотра метаданных, прикрепленных к файлу. Изображения и документы – особенно хорошие источники, где хранятся ценные метаданные.

Образы файловых систем (File System Images) – строго говоря, образы файловых систем также не являются файлами данных, создаваемые приложениями, однако нам, специалистам по безопасности, часто требуется работать с образами файловых систем, поскольку некоторые разработчики временами могут прибегать ко всяким хитроумным трюкам. Попробуйте утилиту FTK Imager от компании AccessData для подключения всевозможных файловых систем.
Если ваш файл не соответствует ни одному из вышеперечисленных форматов, Google – прекрасный инструмент для поиска утилит для анализа специфических форматов файлов. Если же и Google не помогает, тогда, возможно, следует использовать то приложение, которое создало этот файл. Прекрасный тому пример – копирование профиля Firefox на ваш компьютер и просмотр cookies и истории посещения веб-страниц.

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

или введите имя

CAPTCHA