Отключите приложение либо разрешения которые блокируют рекламу для просмотра форума.
Большинство это Adblock, AdGuard, или антивирус.
Для получения доступа ко всем разделам форума необходимо пройти
Регистрацию!

Навороченные методы обхода антивируса

Тема в разделе "Статьи по безопасности и анонимности", создана пользователем nastyxa, 27 мар 2018.

Загрузка...
  1. nastyxa
    Offline

    nastyxa новичок

    Как нам известно, целью проактивного сканирования, является предотвращение заражения системы пользователя.

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

    Основные виды проактивного сканирования:
    Эвристический анализ
    Один из методов детектирования, работает на основе сканирования приложения на малварьные паттерны.

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

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

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

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

    Первая ссылка из гугла: Github

    Алгоритм данного загрузчика заключается в создании остановленного процесса, и мэппинга имопортов из таблицы.

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

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

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

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

    С виду все достаточно неплохо, но все не так просто как вам показалось с первого взгляда, при распаковке контейнера в памяти, подключаются модули динамического сканирования, и при нахождении определенной сигнатуры – моментально прерывают эмуляцию, и возвращают код детекта.

    Некоторые антивирусы брутят первые байты контейнера, при нахождении сигнатуры 0x4D, 0X5A(MZ), детектят в лучшем случае как упаковщик.

    В большинстве случаев проблема решается помещением крипто-контейнера с первыми рандомными байтами, и заменой MZ после распаковки.

    И если с эвристическим методом - все достаточно просто, то с эмуляцией все намного веселее.

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

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

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

    На самом деле существует целый ряд методов обхода эмуляции, некоторые из них перечислю ниже:
    Замена высокоуровневых апи-вызовов на низкоуровневые системные вызовы (x64 syscall/x86 sysenter).
    Полиморфная распаковка крипто-контейнеров.
    Динамическая защита памяти на основе хардварных треков.
     

Поделиться этой страницей