Чистка PE32 (часть 2)

Сегодня наша утилита из первой части  сильно поумнеет! Она научится корректно обрабатывать формат pe32, получит новые режимы сканирования, для нахождения сигнатуры в 4-5 простых шага.

Для понимания процесса необходимо хорошо знать формат pe32-файлов.

Алгоритм чистки

Чистка сигнатур – кропотливый процесс, но довольно простой для понимания.
Сначала мы, как опытные врачи, отсекаем все возможные диагнозы, после чего находим точное место дислокации сигнатур.
По моему опыту, все сигнатуры можно разделить на несколько категорий:

  • сигнатуры эмулятора
  • сигнатуры на pe32-хидеры
    • на таблицу секций
    • на отдельные поля OptionalHeader и DosHeader
  • сигнатуры на таблицу импорта
  • “жёсткие” сигнатуры внутри секций

Для начала чистки необходимо определить в какой категории находится “заболевание”.

Для этого в нашем сканере есть режим “fast“, создающий пачку семплов:

  • заменяя код на точке входа, прекращая работу эмулятора – файл “EMUL.clean”
  • перезатирая весь импорт – файл “IMPORT.clean”
  • перезатирая секции в следующих комбинациях
    • все секции сразу – файл “ALL_SECTION.clean”
    • по одной секции за раз – файл “SECTION[0].text.clean”
    • все кроме одной за раз – файл “ALL_SECTION_NOT[0].text.clean”
Если сканирование этих файлов показало детект во всех семплах, значит сигнатура расположена в заголовках pe32, для неё предназначен режим “head“, создающий вот такую прелесть:

head

Каждое поле OptionalHeader и DosHeader заслуживает внимания

Чистка хидеров не должна вызывать больших трудностей, чего нельзя сказать про чистку секций. Для неё существует специальный режим “sect”, который делит любую выбранную нами секцию на 100 частей и по очереди их перезатирает.
sect

После сканирования этих файлов, антивирус не удалит те, на которых была сигнатура.

И последним инструментом является режим сканирования “man“, которые позволяет вручную выбрать смещение и размер блока, который будет поделен на 10 частей. С помощью неё можно обнаружить точное место расположения сигнатуры.

Код утилиты

Для начала нужно установить модуль pefile, скачайте его и выполните из командной строки:

Я размещу только новый код.

Заключение

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

Баги и предложения, как всегда приветствуются!

Если мне не будет лень, если я буду в силах, я напишу третью часть с подробным разбором на живом пони!

2 thoughts on “Чистка PE32 (часть 2)

Добавить комментарий