Exe packing - the hard way

EXE PACKING - The Hard Way

Упаковка екзешніков вручну - важлива процедура, яка може бути виконана цілком елементарно ..
Існує багато причин для шифрування файлів, наприклад захист програм від змін, злому і т.д. Деякі Хеккер використовують це для криптування віріев і троев, для впровадження шкідливого коду в готові .exe, коротше максимально завуалювати свої шкідливі програми, скрипти, коди.

Ще одна перевага ручного шифрування-це обхід антівірусніков або зовсім перетворення шкідливого коду в код підписаний, завірений антивірусом.

Для початку, точка входу (.text. Date. Rsrc) вимагає шифрування.
Але якщо місце розташування сигнатури вірусу відомо, потрібно зашифрувати лише шкідливу секцію коду програми, певні байти.
Невелику XOR функцію необхідно закодувати (перенести в код заражаємо програми), для того щоб її можна було шифрувати і зберегти в файл.


Після того, як файл був зашифрований, його потрібно запустити, і XOR-функція запуститься разом з файлом. Під час запуску програми, зашифровані шкідливий код дешифрується ізапускается всередині пам'яті зараженої програми. Отже, Для антивіруса запускається не два файлу (безпечний екзешник і шкідливий код), а один, безпечний файлик, ніяк не можуть бути визначені антивірусом. Що таке XOR функція?
XOR, так само відоме як Exclusive OR, це побітовий оператор двооічной математики. Оператор XOR повертає 1 коли значення першого або другого бітів дорівнює 1. Так само, оператор XOR возврощает 0, коли ниодного або обидва одночасно значення 1-го і 2-го бітів рівні 1.
Роз'яснити можна цієї діаграмою:

Оператор XOR використовується для зсуву, заміни (нулів і одиниць) в шматку незашифрованого коду для створення шифрованого тексту.
Іншими словами, якщо шматок коду прогнати через XOR двічі, то змін від исходника не буде, тобто після шифрування XOR'ом вже зашифрованого XOR'ом коду - код дешифрується до початкового стану.

Замінюємо точку входу процесом шифрування, впроваджуємо процес шифрування в стек, потім повертаємо заміщений шматок вихідної програми (точку входу зокрема), повертаємо початковий код заражаємо програми, після виконання шкідливого коду.

Шифрує код повинен запуститися одночасно з чистим кодом заражаємо проги, що б в зашифрованому вигляді зберегтися в файл (дроп).
Наступний раз заражена прога при запуску розшифрує цей код.

Тепер в кінці файлу шукайте DB 00 в стеці. Якщо ця секція не захищена від запису, то все добре, не доведеться міняти допуски до секції.

Якщо з'явилася помилка-значить ця секція захищена і доведеться модифікувати PE секцію, щоб отримати доступ до редакттірованію.

Це можна легко зробити за допомогою LordPE (змінює властивості секцій)

Відкриваємо LordPE, завантажуємо наш файл, тикаємо кнопку Section. Після цього правою кнопкою data section, вибераем властивості. Прибираємо \ ставимо голочкі-в загальному робимо файл доступним до зміни і запуску (writeable and executable). Цей файл готовий.

Наступні алгоритм використовується для XOR-шифрування секції. Фактично це банальне шифрування кожного байта з data section (@ 0040129c) з нашим ключем (0f). Цикл зупиниться в кінці data section (@ 0040E46C)

Фінальний код повинен виглядати приблизно так:

Тепер робимо break point в кінці циклу, строчка 0040e510, і виконуємо код. Як тільки виконання зупинилося, зберігаємо файл і виходимо з OllyDbg

Схожі статті