Вскрытие покажет: анализируем драйвер Windows x64, защищенный VMProtect
Анализ вредоносных программ, защищающих себя от анализа, — это всегда дополнительные трудности для вирусного аналитика. Программа может быть обфусцирована, чтобы избежать детектирования сигнатурными и эвристическими анализаторами антивирусов или затруднить специалисту ее статический анализ. Можно, конечно, запустить программу в виртуальной среде, но и от такого исследования ВПО могут иметь средства защиты. В общем, это постоянная борьба. Злоумышленники придумывают и дорабатывают свои методы обфускации, могут использовать их на этапе разработки программы или обрабатывать уже готовые, скомпилированные модули. Никто не мешает им воспользоваться готовыми продвинутыми решениями, которые созданы специально для защиты легитимного программного обеспечения от анализа и взлома.
Одним из таких популярных решений уже давно является протектор VMProtect. После того как вирусописатели стали активно использовать для своих программ подобные взломанные протекторы, антивирусные компании создали «черные» и «серые списки» таких решений и начали детектировать образцы по самому коду протекторов. Сейчас наблюдается очередная волна активного использования VMProtect злоумышленниками для защиты вредоносного ПО от детектирования и анализа. Но и исследователи не стоят на месте: есть замечательные решения по деобфускации и девиртуализации VMProtect. Основное из них — VTIL Project исследователя Can Bölük. Но и оно, к сожалению, не является панацеей.
Текущая волна использования VMProtect характеризуется активным применением протектора китайскими вирусописателями для защиты своих вредоносных драйверов Windows x64. Известно, что анализ подобных драйверов — головная боль вирусных аналитиков. Получив очередной такой драйвер на анализ, Андрей Жданов, специалист по проактивному поиску киберугроз Group-IB, решил поделиться достаточно простыми подходами, которые облегчат анализ этих вредоносных программ.
1. The Interactive Disassembler (IDA) 7.0 и выше
2. Виртуальная среда — гостевая ОС Windows 7 x64 или выше
4. Volatility (я использовал Volatility 3)
Этап 1: получение дампа драйвера
Загружаем драйвер в виртуальной среде. Для этого можно воспользоваться штатной утилитой sc.exe:
sc create binpath= type= kernel start= demand
Или загрузить драйвер с помощью утилиты DriverLoader, которая использует функцию NtLoadDriver:
Если при загрузке возникли проблемы, связанные с цифровой подписью драйвера, — можно воспользоваться утилитой dseo013b.exe (Driver Signature Enforcement Overrider).
После успешной загрузки снимаем полный дамп памяти. Если виртуальная машина (например, VMware) при снимке создает корректный дамп памяти, то можно обойтись и снимком памяти.
Используем Volatility для извлечения всех модулей ядра из дампа:
Проверяем, что среди них есть и наш драйвер, а остальные модули пока оставляем — они пригодятся нам позже.
Мы получили дамп исследуемого драйвера. Это не исходный файл до обработки с помощью VMProtect — начальные значения данных утеряны — но его уже можно открыть в IDA и пытаться анализировать, хоть и не в полной мере.
Этап 2. Получение списка вызовов импортируемых функций
FF 15 08 2A 00 00 call cs:LoadLibraryA
VMProtect заменяет его на следующий вызов:
E8 08 72 03 00call vmp_LoadLibraryA
Функция vmp_LoadLibraryA в процессе работы получает фактический адрес функции LoadLibraryA и передает ей управление. Но, как мы видим, после вызова такой обфусцированной функции может оставаться байт, что надо учитывать при анализе в IDA. Возврат из обфусцированной функции в этом случае осуществляется правильно, на следующий после этого байта адрес.
В итоге получаем список RVA (Relative Virtual Address) таких функций в текстовом файле:
Этап 3. Получение оригинальных адресов импортируемых функций
Чтобы получить адреса оригинальных импортируемых функций, воспользуемся кодом самих обфусцированных функций VMProtect. Для этого загрузим полученный дамп драйвера как shellcode в отладчике x64dbg в виртуальной среде. Для запуска в качестве shellcode можно воспользоваться готовой утилитой или разработать свою, которая просто выделяет память (VirtualAlloc), копирует туда shellcode и передает ему управление. Однако здесь следует сделать замечание: это справедливо для дампа, где RVA и позиции в файле совпадают. В противном случае необходимо загружать дамп как PE-файл, по секциям.
Передавать управление на заголовок MZ драйвера мы, конечно, не будем, а поместим на это место код вызова каждой обфусцированной функции. Будем пошагово отлаживать ее код и в конечном итоге извлекать оригинальный адрес импортируемой функции. С помощью x64dbgpy и скрипта на Python можно полностью автоматизировать этот процесс: сначала скрипт считывает из текстового файла список RVA обфусцированных функций, а по окончании сохраняет уже в другой текстовый файл список RVA и соответствующих им оригинальных адресов импортируемых функций:
VMProtect — Защита Windows приложений. Часть 1.
Этот цикл статей посвящен VMProtect — одному из самых популярных
инструментов по защите программного обеспечения от анализа и взлома.
Введение
Идеального способа защиты программного обеспечения от несанкционированного использования и распространения не существует. Ни одна существующая система не обеспечит абсолютную защиту и не лишит потенциального взломщика самой возможности ее нейтрализации. Однако использование качественной и эффективной защиты может максимально усложнить процесс взлома программного продукта, более того, сделать взлом нецелесообразным с точки зрения потраченного на это времени и усилий. При создании защиты программного продукта могут преследоваться различные цели и решаться разнообразные задачи, однако основа любой схемы защиты — защита приложения от изучения, так как именно устойчивость к обратной инженерии определяет эффективность защиты в целом.
Изучение, взлом и защита программного обеспечения
Изучение программного продукта может осуществляться методом статического и/или динамического анализа. При статическом анализе разработка алгоритма взлома защиты производится на основе анализа результатов дизассемблирования или декомпиляции взламываемой программы. Динамический анализ чаще всего применяют при взломе программных продуктов, исполняемый код которых зашифрован или динамически изменяется, так как статический анализ подобных программ сопряжен с определенными трудностями.
Для динамического анализа взламываемую программу запускают в среде отладчика, при этом становится возможным контроль всех изменений, возникающих в процессе функционирования приложения. В процессе динамического анализа, используя режим отладки, производят пошаговое прохождение «защитных» алгоритмов программы, в частности алгоритмов проверки и генерации корректного регистрационного кода. Еще одним средством, применяемым при динамическом анализе, являются мониторы активности, отслеживающие обращение взламываемой программы к файлам, системным сервисам, портам и внешним устройствам.
Основным инструментом, применяемым для защиты приложений от взлома, являются программы-протекторы. Защита, реализуемая большинством протекторов, заключается в том, что они упаковывают и/или шифруют исходный исполняемый файл, уделяя основное внимание защите процедуры распаковки/расшифровки файла.
Подобный алгоритм работы протекторов очень часто оказывается причиной недостаточной степени защиты обеспечиваемой большинством из них. В случае если приложение защищено с использованием упаковки, по окончании работы распаковщика в распоряжении злоумышленника может оказаться исходный файл, который может быть получен при дампе определенной области памяти. Более того, для борьбы с самыми распространенными протекторами взломщики разработали множество программных инструментов, позволяющих взламывать защиту в автоматическом режиме. Аналогичный подход применяется при борьбе с шифрованием: после получения лицензионного ключа, который в том числе может быть легально приобретен, взломщик сможет расшифровать защищенные участки кода.
Ряд программ-протекторов применяют различные антиотладочные приемы. Однако применение антиотладки значительно снижает быстродействие программы. Также следует помнить, что антиотладочные приемы действенны лишь против динамического анализа и совершенно не эффективны против статического. Более того, все антиотладочные приемы, применяемые в современных протекторах, уже давно изучены, а взломщиками написано множество утилит, которые их полностью нейтрализуют. На эффективность использования мониторов активности встроенные в приложение средства защиты от отладки не влияют.
Более эффективными методами защиты приложения являются обфускация и виртуализация, усложняющие анализ кода защищаемого приложения. В общем случае эффективность данных методов достигается за счет использования особенностей человеческого фактора — чем сложнее исходный код, чем больше ресурсов использует приложение, тем человеку его анализирующему тяжелее понять логику работы программы, а следовательно, и взломать примененные средства защиты.
При обфускации производится запутывание кода приложения за счет введения дополнительных инструкций. При виртуализации исходный код преобразуется в байт-код, выполнение которого осуществляется на специальном интерпретаторе, имитирующем виртуальную машину со специфической системой команд. Следовательно, применение виртуализации приводит к высокой и неснижаемой степени запутанности результирующего кода, а при определенном подходе к реализации этого метода защищенный код не содержит методов восстановления оригинального кода в явном виде. Таким образом, важнейшим преимуществом виртуализации является то, что в момент выполнения виртуализированного участка кода не происходит его обратного преобразования в машинные коды процессора, а это исключает возможность получения взломщиком оригинального кода приложения.
Задача обратного инжиниринга виртуализированных фрагментов сводится к изучению архитектуры виртуальной машины, созданию дизассемблера, соответствующего архитектуре имитируемого виртуальной машиной процессора, и анализу дизассемблированного кода. При определенном подходе к реализации виртуальной машины задача создания дизассемблера виртуализированного кода становится достаточно трудоемкой. Единственным недостатком виртуализации является сравнительно низкая скорость работы, поэтому этот метод следует применять только для защиты участков кода, некритичных к скорости исполнения.
В подавляющем большинстве современных протекторов методы обфускации и виртуализации играют второстепенную роль, а уровень их реализации недостаточен, что позволяет взломщикам выполнять снятие подобной защиты в автоматизированном или ручном режиме. Еще одним слабым местом многих современных протекторов является использование недокументированных функций Windows, что создает ограничения для использования приложения в новых версиях операционной системы или при включенном режиме DEP.
Что такое VMProtect?
Программа VMProtect относится к новому поколению средств защиты программного обеспечения. VMProtect поддерживает компиляторы Delphi, Borland C Builder, Visual C/C++, Visual Basic (native), Virtual Pascal, при этом VMProtect содержит встроенный дизассемблер, позволяющий работать с файлами форматов EXE, DLL, BPL, OCX, SYS и подключать MAP-файл, создаваемый компилятором, для быстрого выбора участков кода, которые следует защитить. Для автоматизации операций по защите приложения в VMProtect реализован встроенный скриптовый язык. Программа VMProtect обладает полной поддержкой всех 32/64-разрядных операционных систем семейства Windows: Windows 95/98/ME, Windows NT, Windows 2000, Windows XP, Windows 2003, Windows Vista.
Базовым принципом, на основе которого построен VMProtect, является обеспечение эффективной защиты кода приложения от изучения, так как именно максимальное усложнение понимания логики работы внутренних механизмов защиты приложения создает максимальные трудности при взломе программы. Основными методами защиты программного кода, применяемыми VMProtect, являются виртуализация, мутация и смешанный метод защиты, сочетающий мутацию кода приложения с его последующей виртуализацией.
Одним из достоинств реализации метода виртуализации в программе VMProtect является то, что виртуальная машина, на которой выполняются виртуализированные фрагменты кода, встраивается в результирующий код защищаемого приложения. Следовательно, для функционирования приложения, защищенного с помощью VMProtect, нет необходимости использовать какие-либо дополнительные библиотеки или модули. VMProtect позволяет использовать несколько отличных друг от друга виртуальных машин для защиты разных участков кода одного приложения, что еще больше усложняет процесс взлома защиты, так как взломщику будет необходимо анализировать архитектуру уже нескольких виртуальных машин.
Метод мутации кода приложения, реализованный в VMProtect, основан на обфускации, в процессе которой в код приложения добавляются «мусорные» команды, «мертвый» код, случайные условные переходы, выполняется мутация оригинальных команд, а также выполнение ряда операций переносится в стек.
Ключевым отличием программы VMProtect от других протекторов является то, что с ее помощью можно защитить различные участки кода разными методами: часть кода виртуализировать, часть обфусцировать, а для самых критичных участков применить смешанный метод защиты.
Еще одной уникальной возможностью программы VMProtect является включение в код приложения водяных знаков, позволяющих однозначно идентифицировать официального владельца взломанного экземпляра программы, а следовательно, принять к нему соответствующие меры.
cleo crypter decrypted что это
Суть программы проста: добавляете в неё файл, она сканирует его на наличие стиллеров и вирусов. Присутствует возможность массовой проверки файлов.
Особенности и возможности:
– Огромная база стиллеров, которая ведется с 2014 года;
– Сканирование файлов с расширениями asi, dll, cleo, sf, cs и многих других;
– Высокая скорость работы утилиты даже при массовой проверке файлов;
– Вывод доступной информации о найденном стиллере в окно программы (создатель, название, тип стиллера);
– Проверка CLEO-скриптов на наличие стиллера (не всех, только с известными программе крипторами). Декриптованный скрипт появится в папке temp, в корневой папке программы под именем decrypt.cs;
– Декрипт FuncCrypt от SR_Team и многих других;
– Постоянная поддержка программы.
Стоит отметить, что программа и её разработчики не дает никаких гарантий по поводу нахождения стиллера. Она делает всё возможное и доступное, но не обеспечивает 100%-ю безопасность файла в случае, если вирусов в нём не найдено.
Пояснение о найденных вирусах:
InetLoader – обнаружен скрипт, который может устанавливать интернет соединение. Но это может быть и автообновление скрипта.
CLEO_Stealer[DECRYPTED] – обнаружен CLEO стиллер, файл был распакован, и вы сможете взглянуть на исходник.
CLEO_Crypter[DECRYPTED] – сканер попытался распаковать скрипт, возможно это не получилось или не найден вредоносный код. Смотрите исходник в папке temp.
CLEO_Stealer – обнаружен CLEO стиллер в открытом виде.
Downloader_stealer – обнаружен файл, который выкачивает вредоносную программу на ваш компьютер.
Stealers_ru – обнаружен стиллер от небезызвестного проекта.
Danger_VMProtect – обнаружена защита, файл может представлять угрозу.
AVPGameProtect | Антивирус для Игр
AVPGameProtect — это программа, помогающая в поиске вредоносных файлов в игровых модификациях. Главная особенность программы перед другими анти-стиллерами — возможность массовой проверки, т.е Вы можете просканировать абсолютно любые файлы и в любом их количестве, достаточно перенести нужные файлы или папку с файлами в окно программы и дождаться результатов сканирования.
Особенности программы:
— Большая база стиллеров, которая ведется с 2014 года.
— Сканирование asi, dll, cleo, sf, cs и других потенциально опасных файлов.
— Высокая скорость работы при проверке большого количества файлов.
— Вывод информации о стиллере в окне программы (тип стиллера или ник разработчика).
— Встроенный просмотр найденных файлов в текстовом и hex режимах.
— Поиск троянских программ в ASI файлах GTA SA и GTA 5.
— Поиск функционала для взаимодействия с интернетом, или скачивания файлов.
— Проверка CLEO-скриптов на наличие стиллера (не всех, только с известными программе крипторами). Декриптованный скрипт появится в папке temp, в корневой папке программы под именем decrypt.cs
— Декрипт FuncCrypt от SR_Team и многих других.
— Постоянная поддержка программы.
Сканер не предназначен для проверки установщиков и игровых сборок, а также для полного сканирования ПК. Для сканирования необходимо извлечь папку или файлы из архива и перетащить их в программу.
Также стоит отметить, что программа не защищает пользователей на все 100%. Как и любой другой анти-стиллер, она предназначена лишь для выявления известных ей стиллеров, а дальнейшее решение об использовании того или иного мода лежит непосредственно на Вас и автор не несёт ответственности за ВАШИ решения. Программа будет постоянно обновляться.
Некоторые условные обозначения программы:
InetLoader — Внимание! Обнаружен файл, который может устанавливать интернет соединение, следует подумать прежде чем качать. Но это может быть и автообновление скрипта.
CLEO_Stealer[DECRYPTED] — Найден CLEO стиллер, файл был распакован и вы сможете взглянуть на исходник.
CLEO_Crypter[DECRYPTED] — Сканер попытался распаковать скрипт, возможно это не получилось, или не найден вредоносный код. Смотрите исходник в папке temp.
CLEO_Stealer — Найден CLEO стиллер в открытом виде.
Downloader_stealer — Найден файл, который выкачивает вредоносную программу на ваш компьютер
Stealers_ru — Найден стиллер от небезызвестного проекта
Danger_VMProtect — Найдена защита, файл может представлять угрозу
Оставлять комментарии могут только зарегистрированные пользователи.
Клео криптер? Хм приколюха, проверь на вирустотале.
Если вас не устраивает ответ или его нет, то попробуйте воспользоваться поиском на сайте и найти другие ответы в категории Программирование
AVPGameProtect (User Build 1.04) для GTA San Andreas
AVPGameProtect (User Build 1.04)
Рейтинг файла
Описание файла
Особенности программы:
— Большая база стиллеров, которая ведется с 2014 года.
— Сканирование asi, dll, cleo, sf, cs и других потенциально опасных файлов.
— Высокая скорость работы при проверке большого количества файлов.
— Вывод информации о стиллере в окне программы (тип стиллера или ник разработчика).
— Встроенный просмотр найденных файлов в текстовом и hex режимах.
— Поиск функционала для взаимодействия с интернетом, или скачивания файлов.
— Проверка CLEO-скриптов на наличие стиллера (не всех, только с известными программе крипторами). Декриптованный скрипт появится в папке temp, в корневой папке программы под именем decrypt.cs
— Декрипт FuncCrypt от SR_Team и многих других.
— Постоянная поддержка программы.
Сканер не предназначен для проверки установщиков и игровых сборок, а также для полного сканирования ПК. Для сканирования необходимо извлечь папку или файлы из архива и перетащить их в программу.
Также стоит отметить, что программа не защищает пользователей на все 100%. Как и любой другой анти-стиллер, она предназначена лишь для выявления известных ей стиллеров, а дальнейшее решение об использовании того или иного мода лежит непосредственно на Вас и автор не несёт ответственности за ВАШИ решения. Программа будет постоянно обновляться.
Danger vmprotect что это
Использование VMProtect SE позволит защитить приложение от копирования в кратчайшие сроки без специальных знаний в области защиты программного обеспечения, при этом мы гарантируем высочайший уровень надежности.
В отличие от большинства уже существующих протекторов, которые лишь упаковывают и/или шифруют код программы при помощи электронного ключа, VMProtect SE преобразует защищаемый код в команды (байткод) используемой им виртуальной машины (ВМ). При этом во время выполнения байткода максимально используются возможности электронного ключа SenseLock, а обмен данными с ним осуществляется через плавающий протокол, основанный на асимметричном шифровании, что исключает создание эмулятора.
Запуск каждого защищенного исполняемого файла может дополнительно контролироваться системой лицензирования, позволяющей ограничивать количество запусков программы и время использования.
Совместное использование VMProtect и электронных ключей SenseLock позволяет получить максимально возможную степень защиты исполняемых файлов, на порядки превосходящую обычные протекторы и конверты, работающие с электронными ключами других производителей. При этом, сохраняются все преимущества использования SenseLock, такие как возможность работы без установки драйверов в режиме HID-устройства и высокая аппаратная надежность.
Работа виртуальной машины
Виртуальная машина, используемая в VMProtect SE, является виртуальным процессором, система команд которого сильно отличается от используемого в х86 компьютерах. Например, в нем нет команд, отвечающих за сравнение двух операндов, нет условных и безусловных переходов.
Во время защиты исполняемого файла, VMProtect SE преобразует код программы в байткод своей ВМ и записывает его вместо обычного, не защищенного кода. Он может по-разному обрабатывать защищаемый код в зависимости от выбранного типа компиляции. Рассмотрим подробнее что из себя представляет каждый тип компиляции:
Поэтому для восстановления и понимания логики работы программы взломщику будет необходимо разработать ряд специфических инструментов для анализа и декомпиляции байткода, что займет очень много времени и ресурсов.
Пример использования
В качестве примера работы VMProtect SE, мы защитим приложение NOTEPAD.EXE, входящее в стандартную поставку операционной системы Microsoft Windows. Запустите программу в режиме «Эксперт» и загрузите NOTEPAD.EXE. В опциях проекта укажите правильные данные для доступа к электронным ключам и настройки лицензирования.
Далее, нам необходимо добавить процедуры, которые мы хотим защитить в NOTEPAD.EXE. Для этого переходим в закладку «Процедуры для защиты» и выбираем функцию «Добавить процедуру. «
В появившемся окне мы настраиваем параметры защиты и привязки к электронному ключу. В том случае, если вы хотите отключить использование ключа и осуществлять только проверку его наличия (что делать не рекомендуется), то уберите галочку с параметра «Привязать к ключу».
После этого необходимо выбрать имена функций, которые мы хотим защитить. Их можно выбрать или из списка на вкладке «Все процедуры», или используя поиск.
На этом настройка заканчивается и остается только скомпилировать проект, чтобы получить защищенный файл.
После компиляции будет создан файл NOTEPAD.VMP.EXE, защищенный конвертом VMProtect SE. Теперь, если попробовать запустить защищенное приложение без электронного ключа, то будет выдаваться соответствующий код ошибки.
Как видите, процесс защиты достаточно прост, при этом сохраняется высокая надежность защиты программного обеспечения!
Технические параметры
Поддерживаемые компиляторы:
Поддерживаемые форматы (32 и 64 битные):
Поддерживаемые операционные системы:
Приобретение
Посмотреть стоимость VMProtect SenseLock Edition и заказать его вы можете на нашем сайте, в разделе «Купить«.











