На заметку Детект в памяти, принцип и способы обхода

Тема в разделе "Крипторы и исследование защиты", создана пользователем X-Shar, 14 мар 2016.

↑ ↓
  1. X-Shar :)
    X-Shar
    Ответить в чате

    Администрация

    Регистрация:
    03.06.2012
    Сообщения:
    5.421
    Симпатии:
    49
    Пол:
    Мужской
    Репа:
    +673 / 162 / -34
    Telegram:
    Вообще, сама инфа не нова, на факкав делали ресёч езета, каким образом он детектят в памяти...

    Смысл такой, если по простому, АВ ждёт пока вирус распакуется в памяти, а далее проверяет его сигнатурным детектом, такая технология сводит на нет смысл большинства крипторов, особенно паблик крипторов...

    Но вот на VxLab - Blog о вирусных технологиях попалась интересная статья, как-же это устроенно в "вакууме", без привязки к конкретному вендору, очень интересно почитать, вот сама статья:Малварь по шагам [№3] Детекты в памяти - VxLab

    Если более серьёзно интересуетесь малварью рекомендую туда заходить, там много статей, даже по малваре на Андройд, в общем рескпет им + можно задать вопросы автору, рега не нужна там...

    Итак сама статья, сделаю перепост, но поворюсь, если возникнут вопросы можете задать автору по ссылке выше:

    Сравнительно новое явление, набирающее популярность у Av-вендоров. Я склонен рассматривать это как развитие проактивных методов. Как это работает?

    По срабатыванию некоего тригера, обычно это ядерный вызов подозрительной WINAPI на подобии открытия чужого процесса, начинается скан памяти. Таким образом, сканер проходится по коду после снятия слоя криптора. Как пишут наши коллеги, по всей видимости, используется тот же сканер что и для обычных файлов. Это можно заключить по общности детектов: файл до криптовки и после скана в памяти будет иметь одно и тоже сигнатурное название.

    Уже сейчас подобные технологии внедрили NOD32 и MSE (который, кстати, есть в составе windows под именем Windows Defender), возможно кто-то ещё. Следует ожидать, что со временем все вендоры оценят потенциал и заимеют свои аналоги.

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

    ApiCall map:
    Насколько Я помню, NOD32 зачастую использует сигнатуры по карте апи-вызовов. Я не знаю как это называется на жаргоне, но давайте здесь будем использовать термин “Карта Апи вызвов”. Принцип создания сигнатур по ApiCall описан здесь .

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

    Unique bytecode:
    Если мне не изменяет память, MSE часто использует сигнатуры по байткоду. Для эксперимента, Я взял несколько детектируемых им семплов и убрал из них шаг за шагом, всё кроме сигнатуры. Во всех случаях это была группа редко встречающихся подряд ассемблерных инструкций.

    Например, для Trojan:Win32/Swrort.A это следующий байткод по смещению 0x7BBF:
    Код:
    68 58 A4 53 E5 ;PUSH E553A458
    FF D5 ;CALL EBP
    //любое количество любых байт между
    68 A6 95 BD 9D ;PUSH 9DBD95A6
    90 ;NOP
    E9 0E 00 00 00 ;JMP NEAR
    //от нуля до 14 любых байт между
    FF D5 ;CALL EBP
    По всей видимости, сигнатуры генерирует умная автоматика, у которой есть база частоты встречи подряд тех или иных опкодов и их параметров.

    Сигнатуры по хидерам:
    Забодавший своими фолсами (!)win32:evo-gen[susp]” от AVAST, базируется на заголовках pe32. Многие вендоры начинают сканирование и решают нужно ли его углубить исходя из хидеров, что сделано в целях оптимизации.

    Во внимание принимается структура секций, их размер, порядок, имена, энтропия и характеристики (RWE\DATA\CODE), вкупе с размером стека и флагами из NtHeaders – это составляет единую сигнатуру.

    Обход сводится к порче хидеров в памяти, после которой часть WinApi, их использующих перестанут корректно работать, что надо иметь в виду. Обычно это выглядит как удаление опорных точек для сканеров, таких как “PE00” и “MZ“.

    Мойте семплы перед едой:
    Исходя из того, что для детектирования используется старый добрый файловый сканер, существует только один метод сделать файл не детектируемым в памяти – предварительно обкатать некриптованную тушку на всех сканерах существующих !
     
    • Мне нравится Мне нравится x 4
    • Информативный пост Информативный пост x 1
  2. DikiySan Уважаемый пользователь
    DikiySan
    Ответить в чате

    Форумчанин

    Регистрация:
    22.02.2014
    Сообщения:
    692
    Симпатии:
    1.351
    Пол:
    Мужской
    Репа:
    +1.366 / 6 / -17
    • Мне нравится Мне нравится x 1
  3. X-Shar :)
    X-Shar
    Ответить в чате

    Администрация

    Регистрация:
    03.06.2012
    Сообщения:
    5.421
    Симпатии:
    49
    Пол:
    Мужской
    Репа:
    +673 / 162 / -34
    Telegram:
    • Мне нравится Мне нравится x 1
    • Смешно Смешно x 1
  4. DikiySan Уважаемый пользователь
    DikiySan
    Ответить в чате

    Форумчанин

    Регистрация:
    22.02.2014
    Сообщения:
    692
    Симпатии:
    1.351
    Пол:
    Мужской
    Репа:
    +1.366 / 6 / -17
    Zorg.
    Zorg - Здрасте я вирус )
    NOD - Здрасте , а мне на вас по - ху - ю !!
    Zorg - тогда давайте знакомиться )))
     
    • Мне нравится Мне нравится x 2
    • Креативно Креативно x 1
  5. Indy Уважаемый пользователь
    Indy
    Ответить в чате

    Форумчанин

    Регистрация:
    21.01.2015
    Сообщения:
    273
    Симпатии:
    161
    Пол:
    Мужской
    Репа:
    +206 / 7 / -34
    Актуальная тема и не решённая до сих пор задача. Подхода есть два, это стандартный - удаление сигнатур, тоесть морф и системный в динамике. Второе проблемно сделать из за невозможности отличить данные от кода. Обход ядерных фильтров так же невозможен, сервисы чтения памяти не уязвимы(системные), по крайней мере я не нашёл способа скрыть блок памяти.
     
    • Мне нравится Мне нравится x 1
  6. virt Уважаемый пользователь
    virt
    Ответить в чате

    Форумчанин

    Регистрация:
    24.11.2016
    Сообщения:
    289
    Симпатии:
    74
    Пол:
    Мужской
    Репа:
    +126 / 4 / -2
    Решённая, например в протекторах типо енигма и т.д.

    Просто занимался антидетектом, фигня этот детект в памяти. :)

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

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

    Но это не означает что наработок нет, много неплохих есть работ. Кстати кое-что можно и в паблике найти, даже на гитхабе ! :)
     
  7. Indy Уважаемый пользователь
    Indy
    Ответить в чате

    Форумчанин

    Регистрация:
    21.01.2015
    Сообщения:
    273
    Симпатии:
    161
    Пол:
    Мужской
    Репа:
    +206 / 7 / -34
    > Решённая, например в протекторах типо енигма и т.д.
    > Просто занимался антидетектом, фигня этот детект в памяти. :)

    Смешно, но всё равно приведите пруф.
     
  8. virt Уважаемый пользователь
    virt
    Ответить в чате

    Форумчанин

    Регистрация:
    24.11.2016
    Сообщения:
    289
    Симпатии:
    74
    Пол:
    Мужской
    Репа:
    +126 / 4 / -2
    В личке.

    Не смешно, мало кто про это знает просто. Некоторые антивирусы в частности ! :)
     
  9. DikiySan Уважаемый пользователь
    DikiySan
    Ответить в чате

    Форумчанин

    Регистрация:
    22.02.2014
    Сообщения:
    692
    Симпатии:
    1.351
    Пол:
    Мужской
    Репа:
    +1.366 / 6 / -17
     
  10. virt Уважаемый пользователь
    virt
    Ответить в чате

    Форумчанин

    Регистрация:
    24.11.2016
    Сообщения:
    289
    Симпатии:
    74
    Пол:
    Мужской
    Репа:
    +126 / 4 / -2
    @DikiySan, скинул вам тоже пример. Так к сожалению активность маленькая, многие тут ищут просто готовые решения, к сожалению используют борд как "пришёл скачал и ушёл".

    Начнут это использовать школьники и халява кончица, ибо антивирусы тоже монеторят всё. Хотя мне особо пока-что не нужно, а вдруг нужно будет !Dmeh-Smeh-Smeh!!!

    Так-то если-бы обсуждения были, можно-бы более подробно расписать всё, интересно например почему так происходит.

    Многие боятся этот "детект в памяти". А реально не всегда он отрабатывает, в том примере, который скинул, не было такого детекта, причём на разных семплах. :)

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

    Хотя @Indy, я скинул протектор. Если проведёт исследование и напишет статью по этому вопросу, будет прикольно. Правда это будет больше полезно даже антивирусам, хотя похоже они знают про это и просто забили болт на такой детект ! :)
     
Похожие темы:
  1. X-Shar
    Ответов:
    1
    Просмотров:
    4.670
  2. X-Shar
    Ответов:
    3
    Просмотров:
    2.936
  3. X-Shar
    Ответов:
    3
    Просмотров:
    2.872
  4. virt
    Ответов:
    0
    Просмотров:
    656
  5. virt
    Ответов:
    0
    Просмотров:
    435
Загрузка...