Тренируемся анализировать бинарные файлы на примере libexif

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Когда я только начал вливаться в мир хакерства, мне дико не хватало информации, ее приходилось собирать по крупицам. В этом материале я постарался изложить то, чего мне тогда не доставало, — всю информацию по реверсу в сжатом и систематизированном виде. А для наглядности мы с тобой разберем боевую задачу — реверс программы libexif.

Эта статья нацелена на людей, которые постепенно вырастают из тасков на CTF категории PWN и Reverse, хотят пощупать реальные программы и понять, что такое настоящий анализ бинаря. Ресерчи, которые пишут специалисты известных компаний, хороши, но большинство новичков не знают, с чего начинать делать такое исследование, как тренироваться и как заполучить стенд. Сегодня мы с тобой это исправим.

ПРИМЕРНЫЙ ПОРЯДОК ДЕЙСТВИЙ ДЛЯ БИНАРНОГО РЕСЕРЧА​

Давай разложим по пунктам все действия, которые ресерчер может производить с анализируемым бинарным файлом.
  1. Сбор информации о таргете:
    • что за бинарь, для чего он предназначен, для какой платформы, есть ли исходный код в открытом доступе, или это «черный ящик»;
    • как собирать бинарь — есть ли setup.sh или install.sh, может, нужно просто скомпилить при помощи GCC;
    • как им пользоваться: посмотреть возможности программы, что она делает и как с ней взаимодействует пользователь.
  2. Знакомство с бинарем— применение средств первичного анализа. Вот самые ходовые тулзы:
    • file — системная утилита, которая позволяет узнать тип данных внутри файла;
    • checksec — утилита, которая проверяет первичные средства безопасности в бинаре;
    • xxd — отображает файл в виде шестнадцатеричных кодов или выполняет обратное преобразование;
    • strings — утилита, применяемая для поиска печатаемых строк в двоичных файлах;
    • VirusTotal — бесплатная служба, анализирующая подозрительные файлы и ссылки на предмет наличия вирусов, червей, троянов и всевозможных вредоносных программ;
    • DIE — утилита для определения типов файлов. Кто читал книгу «Вскрытие покажет! Практический анализ вредоносного ПО», тот должен знать утилиту.
  3. Фаззинг программы(если это требуется). Это техника поиска потенциальных уязвимостей в автоматическом или полуавтоматическом режиме. Здесь нам помогут:
    • AFL++ — собирает информацию о покрытии для каждого измененного входного значения и помогает обнаружить новые пути выполнения и потенциальные баги;
    • LibFuzzer — фреймворк для обнаружения ошибок в коде, созданный в основном для тестирования программ на C/C++, но поддерживает и другие языки;
    • самописный фаззер — этот метод используется, когда программа специфичная или использовать известные фаззеры не имеет смысла или нет возможности. Пример можешь посмотреть в посте на codeby.net;
    • ручной фаззинг — по сути, просто тыкание программы, как в тасках на CTF. Ресерчер просто подает случайные данные программе вручную.
  4. Реверс. Этот шаг важен, и думаю, что пояснения тут не нужны. Информации в интернете полно, смотри, например, подборку статей «Реверс малвари». Здесь же перечислю основные утилиты:
    • IDA Pro — это самая известная программа для дизассемблирования, в представлении она не нуждается. Как ей пользоваться, можно почитать, например, в книге Рикардо Нарвахи The IDA Pro Book (доступен любительский перевод);
    • ImmunityDBG — отладчик программ для ОС Windows. Скачать
      View hidden content is available for registered users!
 
Сверху Снизу