
Создание анти-копировального DRM-вредоносного ПО
В этом репозитории используется техника модификации таблицы адресов импорта (IAT) программы путём замены имён импортируемых функций на соответствующие им порядковые номера, в результате чего получается бинарный файл, который импортирует функции исключительно по порядковым номерам.
Эта техника снижает шансы на успешный анализ бинарного файла системами-песочницами из-за несоответствия значений порядковых номеров в различных системах. Такое несоответствие приводит к тому, что загрузчик Windows либо не может найти корректный адрес функции, либо получает не ту функцию, из-за чего бинарный файл перестаёт работать в среде песочницы. Наконец, эта техника усложняет реверс-инжиниринг бинарного файла.
Этот репозиторий включает два проекта:
Читает PE-файл с диска и заменяет функции, импортируемые по именам, на их порядковые номера. Сгенерированная программа будет работать только в той системе, где импортируемые функции имеют те же порядковые номера, что и в системе, создавшей её.
TechTestBuilder.exe для создания mimikatzDRM.exe — это mimikatz.exe, но с функциями, импортируемыми по порядковым номерам.

mimikatzDRM.exe в системе, отличной от той, что использовалась для его создания, приведёт к следующей ошибке.

Этот проект применяет саму DRM-технику при первом запуске. Это означает, что данный бинарный файл не так просто запустить на других машинах. OrdinalDRMBin.exe выполняет следующие шаги:
Проверяет, есть ли в локальной программе функции, импортируемые по именам; если нет, пропускает применение патча IAT.
Читает себя с диска и преобразует все функции, импортируемые по именам, в импортируемые по порядковым номерам.
Удаляет себя с диска.
Записывает новый образ, в котором все функции импортируются по порядковым номерам.
OrdinalDRMBin.exe без запуска. Обратите внимание, что функции импортируются по именам.

OrdinalDRMBin.exe после запуска. Обратите внимание, что теперь функции импортируются по своим порядковым номерам.

Как уже упоминалось, системы с точными значениями порядковых номеров для всех импортируемых функций созданной реализации смогут запустить защищённый бинарный файл. Однако вероятность этого можно снизить, импортируя функции из разных DLL. Для этой цели можно использовать тот же подход, что и в модуле IAT Camouflage.