• XSS.stack #1 – первый литературный журнал от юзеров форума

Статические и динамические детекты

AMD64

HDD-drive
Пользователь
Регистрация
10.06.2022
Сообщения
23
Реакции
15
Депозит
0.085
Хотелось бы обсудить кто и что под этим понимает.
Т.к. заметил что многие путают.

Статический детект - детект бинарника по сигнатурам или эвристиком.
Динамический детект - детект по поведению во время выполнения.
Это файловые операции, операции с реестром, создание глобальных обьектов, сетевые соединения, так же порядок вызовов WinAPI.
Т.е. АВ смотрит, что делает процесс во время выполнения, и если находит в его действиях определенные паттерны, то выносит соответствующий детект.
Часто вижу такую ситуацию. Берется файл со статическими детектами, криптуется. При запуске криптор расшифровывает оригинальный файл в память, тут его в памяти сигнатурно палит АВ (т.к. он в памяти уже в plain виде).
И считают это runtime детектом. Ну типа, при статическом сканировании детекта нет, а при динамическом появился.
Мое мнение - это не рантайм детект, это проблема криптора.

У кого какие мнения на этот счет?
 
Вы лучше расскажите что криптовщик должен делать что бы оно было в памяти не в plain виде? Кодер сам должен заботится о морфинге своего plain вида, криптовщик должен заботится о красивой обертке.
 
Часто вижу такую ситуацию. Берется файл со статическими детектами, криптуется. При запуске криптор расшифровывает оригинальный файл в память, тут его в памяти сигнатурно палит АВ (т.к. он в памяти уже в plain виде).
И считают это runtime детектом. Ну типа, при статическом сканировании детекта нет, а при динамическом появился.
Мое мнение - это не рантайм детект, это проблема криптора.

У кого какие мнения на этот счет?
Это даже и не крипт. Это просто твой код обернули в оболочку, типа "во, не палится". Так малыши с лолз делают))))
 
Вы лучше расскажите что криптовщик должен делать что бы оно было в памяти не в plain виде? Кодер сам должен заботится о морфинге своего plain вида, криптовщик должен заботится о красивой обертке.
Если кодер будет заниматься морфингом plain кода, то зачем нужен криптовщик? )
Делать разные сигнатуры одному файлу?
 
Криптор - криптует, криптование подразумевает что оригинальное состояние данных будет востановлено при раскриптовке. Морфинг это уже совсем другое. Морфингом как правило занимается сам разраб, который знает где его код можно морфить а где нет, в определенном смысле сорс подгоняется под морфер. Но конечно можно поискать и специалистов которые будут сразу и морфить и криптить, почему бы и нет. Все просто если вы точно знаете какая именно услуга вам нужна то ищете подходящий сервис, а если подходящий сервис не находится то возможно вы хотите странного =)
 
И считают это runtime детектом. Ну типа, при статическом сканировании детекта нет, а при динамическом появился.
Мое мнение - это не рантайм детект, это проблема криптора.

У кого какие мнения на этот счет?
Отчасти это рантайм детект, а именно эмуляция кода. Процесс запускается в песочнице ав и трассируется некоторое время, эмулируются все циклы расшифровки, и эмулятор добирается до твоего кода в памяти, когда он уже расшифрован стабом криптора (run-time - во время работы). Обычно эмуляция идет прямо влоб, инструкция за инструкцией прямо с точки входа, но некоторые ав ставят перехваты на типичные для крипторов функции, полностью пропускают все циклы расшифровки (эвристическим методом) и продолжают анализ, когда билд уже лежит открытый в памяти, а там он и палится.
Правильно тебе Whisper написал, крипт и морф вещи совершенно разные, но использовать крипт поверх морфа - хорошая идея. Лишним не будет.
Задача криптора обычно это снятие статик детектов по сигнатурам и облом эмуляторов кода, что бы он не добрался до открытого тела в памяти, даже если оно и морфится.
 
Следует наверное пояснить что - криптор будет выполнять массу операций(например начнет плотно работать с дириком) эмулировать\трассировать которые авер не станет, точнее на определенном этапе он прекратит это делать, потому что слишком это тормознуто будет, дойдя до определенного предела ав сменит тактику. Так вот одна из задач криптора это довести ав до того этапа когда он будет вынужден прекратить пристальное разглядывание того что делает процесс. Все делаетя по очереди, слоями.
 
Следует наверное пояснить что - криптор будет выполнять массу операций(например начнет плотно работать с дириком) эмулировать\трассировать которые авер не станет, точнее на определенном этапе он прекратит это делать, потому что слишком это тормознуто будет, дойдя до определенного предела ав сменит тактику. Так вот одна из задач криптора это довести ав до того этапа когда он будет вынужден прекратить пристальное разглядывание того что делает процесс. Все делаетя по очереди, слоями.
Делал эксперименты, нагружал эмуляторы продолжительными вычислениями (1000000 итераций вычисления хеша с переносом результата в каждую итерацию), и конечный хеш использовал в качестве salt для получения нт-апишек по хешам. Пропустив и не выполнив эти вычисления (а длятся они секунд 15) эмулятор не может получить адреса используемых функций.
Тестил на нескольких ав, аваст и его подобные клоны отваливаются сразу, а вот битдеф, авира, и подобные этого тира уже нет, у них видимо продвинутый вариант эмуляции, вероятнее всего просто ставится бряк после продолжительных циклов, и эмулятор ждет пока он закончит выполняться без трассировки, которая замедляет это все в 100 раз, и потом продолжает анализ до того момнета, пока не посчитает файл безопасным.
Странно кстати софос вроде как EDR себя позиционирует, а вот такой простой фокус его тоже обламывает. Он прибивает вредоносную активность позже уже из ядра через анализ поведения на перехватах функций, но код успевает запуститься и выполнить свои задачи в течение нескольких секунд.
 
Делал эксперименты, нагружал эмуляторы продолжительными вычислениями (1000000 итераций вычисления хеша с переносом результата в каждую итерацию), и конечный хеш использовал в качестве salt для получения нт-апишек по хешам. Пропустив и не выполнив эти вычисления (а длятся они секунд 15) эмулятор не может получить адреса используемых функций.
Тестил на нескольких ав, аваст и его подобные клоны отваливаются сразу, а вот битдеф, авира, и подобные этого тира уже нет, у них видимо продвинутый вариант эмуляции, вероятнее всего просто ставится бряк после продолжительных циклов, и эмулятор ждет пока он закончит выполняться без трассировки, которая замедляет это все в 100 раз, и потом продолжает анализ до того момнета, пока не посчитает файл безопасным.
Странно кстати софос вроде как EDR себя позиционирует, а вот такой простой фокус его тоже обламывает. Он прибивает вредоносную активность позже уже из ядра через анализ поведения на перехватах функций, но код успевает запуститься и выполнить свои задачи в течение нескольких секунд.
Может учитыватся не просто время а статистика юзер и кернел время, ио, ну и суть действий.
 
1000000 итераций вычисления хеша с переносом результата в каждую итерацию
Интересно было бы посмотреть, что будет, если соразмерную по времени нагрузку реализовать в виде легитимного взаимодействия с ядром, вернее с api или что-то в это роде. Надеюсь правильно передал мысль. Все таки вычисление хешей это простая арефметическая операция, которая плчти не оставляет никаких артефактов за пределами условного стека программы, следовательно АВ должен тратить меньше системных ресурсов на их проверку и не так охотно уходить в сон.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
тут его в памяти сигнатурно палит АВ (т.к. он в памяти уже в plain виде).
Да оно все так, но как криптор должен спрятать пейлоад от авера? Он все равно должен его распаковать в памяти. Разные технологии, типа индеклавов, в рассчет не берем, ибо их никто так и не реализовал на практике.
Только как писал выше Whisper - антиэмуляция и подобное, чтобы авер не дошел к расшифрованному телу малварки.
 
Да оно все так, но как криптор должен спрятать пейлоад от авера? Он все равно должен его распаковать в памяти. Разные технологии, типа индеклавов, в рассчет не берем, ибо их никто так и не реализовал на практике.
Только как писал выше Whisper - антиэмуляция и подобное, чтобы авер не дошел к расшифрованному телу малварки.
Антиэмуляция, распаковка частями... пока то, что на ум приходит. А, некоторые еще делают билд 600 Мб, АВ такие не сканируют ))
 
распаковка частями
Если ты подразумеваешь под этим распаковку отдельно каждой секции, или даже дробление секций на части и распаковка каждой части отдельно, с задержками между каждым действием - все это равносильно распаковке всего тела за раз. Точно так же все проэмулируется, перехватится и дойдет до того момента где все тело будет раскрыто в памяти полностью.
Если мы говорим про шифрование отдельно каждой функции, и ее расшифровка непосредственно перед выполнением, и шифрование обратно после выполнения, то такой механизм должен закладываться в сам софт, криптор не сможет реализовать это по одной простой причине - невозможно со 100% вероятностью точно дизассемблировать код и выделить все границы функций в бинаре.
Особенно если мы говорим про универсальность, когда алгоритм может разобрать любой бинарь, а не какой-то конкретный.
Даже ida иногда ошибается, и приходится исправлять дизасм вручную, а это к слову коммерческий продукт развивающийся годами и лидирующий в своей нише.
Никто из существующих кипторов не смог реализовать это, ни паблик ни приват. Задача теоретически решаема, но сложность очень высокая. Поэтому все реализуют шифрование функций времени выполнения на уровне софта, а не крипта.

Только как писал выше Whisper - антиэмуляция и подобное, чтобы авер не дошел к расшифрованному телу малварки.
Большая часть ав продолжает сканировать память процесса даже после окончания работы эмулятора, memory detect. Такая технология впервые появилась у ESET, чуть позже ее подхватили почти все ав.
 
Антиэмуляция, распаковка частями... пока то, что на ум приходит. А, некоторые еще делают билд 600 Мб, АВ такие не сканируют ))
А как можно его доставить юзеру ?
Чтоб не заставлять качать 600мб зип. А то раньше можно было пампленный файл сделать и в архив, весил 1-5мб. Теперь памп = детект.
Только лоадером/дропером ?
 
А как можно его доставить юзеру ?
Чтоб не заставлять качать 600мб зип.
Только лоадером ?
Раздувай файл нулями, либо однотипными последовательностями, тогда при сжатии архиватором эти 600 мб превратятся в несколько байт.
 
Раздувай файл нулями, либо однотипными последовательностями, тогда при сжатии архиватором эти 600 мб превратятся в несколько байт.
Мощный обход.
 
А как можно его доставить юзеру ?
Чтоб не заставлять качать 600мб зип. А то раньше можно было пампленный файл сделать и в архив, весил 1-5мб. Теперь памп = детект.
Только лоадером/дропером ?
уязвы в ОС, лоадеры, макросы, сплоиты, СИ
банальные методы доставки
 
Да оно все так, но как криптор должен спрятать пейлоад от авера? Он все равно должен его распаковать в памяти. Разные технологии, типа индеклавов, в рассчет не берем, ибо их никто так и не реализовал на практике.
а как же полиморфное шифрование, обфускация, руткиты ?
 
а как же полиморфное шифрование, обфускация, руткиты ?
Устаревшие техники. Раздувай файл нулями до 1гб(про 600мб аверы уже спалили и добавили детект) и не парься.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх