Загрузка...

Методы обхода антивируса простым языком.

Тема в разделе Безопасность создана пользователем Gr0m0z3k4 26 мар 2018. 1149 просмотров

  1. Gr0m0z3k4
    Gr0m0z3k4 Автор темы 26 мар 2018 3 22 мар 2018
    [IMG]
    Как известно, целью проактивного сканирования, является предотвращение заражения системы пользователя.

    Об этом я сегодня и поговорю.

    Основные виды проактивного сканирования:

    Эвристический анализ.

    Один из методов детектирования, работает на основе сканирования приложения на малварные паттерны.

    Эмуляция.

    Простыми словами, эмуляция представляет из себя хуки апи-функций, при эмуляции, антивирус доставляет в процесс свою dll - которая при загрузке перехватывает интересующие WinApi функции, и анализирует их вызовы. Основная ошибка паблик-антиэмуляций заключается в создании среды, суть которой уход в глубину трансляции сегмента, в следствии с большой вероятностью возникает остановка сканирования по таймауту с неопределенным обнаружением.

    Антиэмуляционные приемы ожидающие вызовов системных событий по типу “нажми на кнопку”, не работают, точно так же как и sleep’ы в циклах.

    Немного о загрузчиках:

    В основном под вышеописанные задачи используется алгоритм RunPE, который как видно из названия, запускает приложение в памяти, ничего особенного в нем нет, данный метод загрузки устарел, является неэффективным. Первая ссылка из гугла: https://github.com/Zer0Mem0ry/RunPE. Алгоритм данного загрузчика заключается в создании остановленного процесса, и мэппинга импортов из таблицы.

    LoadPE- метод загрузки, который подразумевает выполнение приложения в своей памяти, используется упаковщиками.

    Данный метод загрузки сложнее в реализации, но в разы эффективнее предыдущего, работает по следующему алгоритму:

    мэппит структуры PE в свое пространство (импорты, релокации, тлс), дополнительных процессов не создается.

    Немного о крипто-контейнерах:

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

    С виду все достаточно неплохо, но все не так просто как вам показалось с первого взгляда, при распаковке контейнера в памяти, подключаются модули динамического сканирования, и при нахождении определенной сигнатуры – моментально прерывают эмуляцию, и возвращают код детекта. Некоторые антивирусы ****ят первые байты контейнера, при нахождении сигнатуры 0x4D, 0X5A(MZ), детектят в лучшем случае как упаковщик. В большинстве случаев проблема решается помещением крипто-контейнера с первыми рандомными байтами, и заменой MZ после распаковки. И если с эвристическим методом - все достаточно просто, то с эмуляцией все намного веселее.

    Рассмотрю как её обойти:

    1. не вызывать хукнутые функции, не вызываем подозрений, не вызвав ни 1-й, а реализовав эту функцию у себя в коде.

    2. вызывать функции напрямую, без мэппинга в таблицу импортов.

    3. использовать системные вызовы

    На самом деле существует целый ряд методов обхода эмуляции, некоторые из них перечислю:

    • Замена высокоуровневых апи-вызовов на низкоуровневые системные вызовы (x64 syscall/x86 sysenter).

    • Полиморфная распаковка крипто-контейнеров.

    • Динамическая защита памяти на основе хардварных треков.

    Если будет много заинтересованных в этой теме, то можно будет сделать несколько статей по этим методам.
     
  2. STAR1XZ
    STAR1XZ 9 апр 2018 Заблокирован(а) 163 20 янв 2018
    FTa1ty, жду ссылку где написано об этом на лолзе и я удаляю тему
     
Загрузка...
Top