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

Добро пожаловать в пилотный выпуск серии EasyHack! Сегодня мы напишем простую утилиту для чистки pe32 от сигнатур антивируса.

Как было сказано в анонсе, мы будем писать на Python.

Почему Python?

Кроссплатформенность – один и тот же код будет работать везде, исключая некоторые модули
Поставка исходного кода – легко проверить наличие бекдоров и внести изменения в чужой код
Лёгкость чтения кода – существует даже специальный термин Pythonic 
Легкость написания – существуют готовые модули почти подо все задачи
Большое сообщество – много документации, любой вопрос уже освещён в гугле

Полагаю, что со временем, в силу риска склейки, pe32-утилиты канут в небытие, уступив место python‘у.

Установка Python

Я использую версию 2.7, скачать её можно здесь.

py_install

Отмечаем “Add python to %PATH%”

Чистка Exe

В качестве первой жертвы был выбран широко известный SignDetect, помогающий находить сигнатуры в коде.

Принцип его работы прост до безобразия:

  • берется исполняемый файл
  • внутри него выбирается смещение и его размер
  • выбираем размер криптографического окна (о нём далее)
  • производится замена всех вариантов “окон”
  • весь массив полученных файлов сканируется локальным антивирусом
  • в тех файлах, которые остались не тронуты – “окно” повредило сигнатуру (или формат pe32 )
  • если она была на данных, которые безболезнено можно удалить – вам повезло
  • если нет – чистка проводится в исходниках или хотпатчем (рассмотрим в след части)

В нашем случае, “окно” – это участок фиксированного размера внутри файла. Мы проходим по файлу с “шагом” равным размеру “окна”.

Представим что у нас есть файл с такими данными:

Возьмём размер “окна” – 2 байта
Диапазон – от начала до конца файла
Замена – на FF

Все варианты замены будут выглядеть так:

Окей, перейдём к кодингу.

SignFinder

Я долго думал как подать код чтобы он был понятен, но не переписывая учебник по python. В итоге было решено дать код утилиты с обильными комментариями.

Что умеет текущая версия?

Для запуска, откройте командную строку CMD и введите:

Где параметры:

Скрипт создаёт рядом с целевым exe папку и помещает в неё все варианты замены “окон” под именами в формате:

Кстати, не советую делать размер “окна” больше чем 1% от размера файла.

Что будет дальше?

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

Если вы хотите видеть больше подобных статей – поделитесь ссылкой на эту статью на тематических форумах

На сегодня всё, увидимся в следующем выпуске!

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