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

Статья Гайд: Отключаем CRT и Оптимизируем программу

Шеллкод на С/С++ ты с CRT/STL не сделаешь. Если у тебя модульная малварь, а не всратый стиллак на 7мб, то можно не морочиться со всякими там TLS'ами, которую ты не используешь, но вынужден будешь настраивать при использлвании CRT при загрузке модулей в виртуальную память. CRT фиксированный код, его сложно интегрировать с какими-то обфускаторами и полиморфами. С одной стороны его и не нужно морфить, так как он стандартный и попадает один и тот же условно во все бинари, которые код используют, но это далеко не означает, что какой-то сраный авер не поставит на него комплексную сигнатуру. История с языком Nim вообще в этом плане достаточно показательна.
А кто сказал что я буду шелл писать на сишке с црт ? я выше как раз таки и уточнил, что для написания шелла можно, и даже нужно будет отключить все лишнее, что бы потом не бегать в отладчике со вкладки на вкладку, что бы дойти до нормального мейна и вычесать оттуда шелл, к тому же там 100 процентов будет в самом мейне где шелл лишний код от этой же црт
По поводу настройки TLS и всяких других вещей, если мы говорим сейчас о крипте, то любой уважаемый криптор поддерживает все эти настройки, к тому же весь необходимый код для полноценной загрузки модуля в память практически на уровне системного загрузчика уже описан и есть в паблике
Даже крипторы сейчас в основном модульные и завязаны на проекте VS, либо просто на исходниках сишных, в котором часть кода написана на ассемблере и заморфлена и лежит в виде объектников, которые линкуются к основному коду, сам мейн (подготовщик загрузчика, сам загрузчик в виде шелла) тоже может быть реализован на ассемблере, заморфлен, а в проект подключаться внешне, по итогу у тебя точка входа будет на црт код, сгенерированный MS компилем, что уже дает + в карму, затем црт кидает тебя уже на твой мейн, который ты можешь морфить хоть на уровне исходников, заменяя обьектники, хоть на уровне байткода сразу. На црт детект не навесят с огромной вероятностью, так как он есть почти в каждой легит проге.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
По поводу настройки TLS и всяких других вещей, если мы говорим сейчас о крипте
Мы говорим о модульной архитектуры самой малвари, о загрузке модулей и работе и ними.

На црт детект не навесят с огромной вероятностью, так как он есть почти в каждой легит проге.
Скажи это авторам языка программирования Nim. И потом фрагменты црт могут быть включены в комплексную сигнатуру или участвовать в рейтинговых алгоритмах машинного обучения. Как в том же Касперском наличие той или иной функции или строки по хешу составляет битовую маску, которая потом скармливается алгоритмам ML. Если все функции в бинарники будут условно разные (отморфлены), то это может как убавить, так и добавить детектов в зависимости от авера.

ADD:
Как в том же Касперском наличие той или иной функции или строки по хешу составляет битовую маску, которая потом скармливается алгоритмам ML
Наверное, за эту херню стоит немного пояснить, если вдруг кому интересно. В Касперском и в подобных задачах, когда нужно отобразить большое множество элементов в какую-то "миниатюрную" структуру (например, битовую маску), часто используют Фильтр Блума. В максимальном упрощении, мы имеем такую штуку. Изначально битовая маска равна нулю, то есть в ней отсутствуют следы наличия каких-либо элементов. Потом опкоды функций и/или блоки данных (типа строк) хешируются некой хеш-функцией, которая отображает данные на битовую маску, устанавливая определенные биты в единицу. Таким образом, чтобы потом проверить, есть ли следы определенной бинарщины в исполняемом файле или нет, достаточно взять хеш и сравнить биты с битовой маской. Если хотя бы один из единичных битов в маске нулевой, то искомой бинащины во множестве не было. Не знаю точно, почему его модно брать для машинного обучения (я слышал, что Фильтр Блума используется не только в Касперском), наверное потому, что он не дает ложноотрицательных срабатываний (хотя дает ложноположительные) и является в этом плане хорошей оптимизацией для ML. Но смысл в том, что даже какие-то уникальные наборы функций из стандартной библиотеки, в комбинации с какими-то другими уникальными последовательностями байт могут приводить к детекту. Не нужно считать, что они не участвуют в вердикте антивируса.
 
Последнее редактирование:
Мы говорим о модульной архитектуры самой малвари, о загрузке модулей и работе и ними.


Скажи это авторам языка программирования Nim. И потом фрагменты црт могут быть включены в комплексную сигнатуру или участвовать в рейтинговых алгоритмах машинного обучения. Как в том же Касперском наличие той или иной функции или строки по хешу составляет битовую маску, которая потом скармливается алгоритмам ML. Если все функции в бинарники будут условно разные (отморфлены), то это может как убавить, так и добавить детектов в зависимости от авера.

ADD:

Наверное, за эту херню стоит немного пояснить, если вдруг кому интересно. В Касперском и в подобных задачах, когда нужно отобразить большое множество элементов в какую-то "миниатюрную" структуру (например, битовую маску), часто используют Фильтр Блума. В максимальном упрощении, мы имеем такую штуку. Изначально битовая маска равна нулю, то есть в ней отсутствуют следы наличия каких-либо элементов. Потом опкоды функций и/или блоки данных (типа строк) хешируются некой хеш-функцией, которая отображает данные на битовую маску, устанавливая определенные биты в единицу. Таким образом, чтобы потом проверить, есть ли следы определенной бинарщины в исполняемом файле или нет, достаточно взять хеш и сравнить биты с битовой маской. Если хотя бы один из единичных битов в маске нулевой, то искомой бинащины во множестве не было. Не знаю точно, почему его модно брать для машинного обучения (я слышал, что Фильтр Блума используется не только в Касперском), наверное потому, что он не дает ложноотрицательных срабатываний (хотя дает ложноположительные) и является в этом плане хорошей оптимизацией для ML. Но смысл в том, что даже какие-то уникальные наборы функций из стандартной библиотеки, в комбинации с какими-то другими уникальными последовательностями байт могут приводить к детекту. Не нужно считать, что они не участвуют в вердикте антивируса.
На самом деле что бы уверено знать, что принимает участие в детекте, а что нет, надо обладать исходными кодами АВ, либо заморочиться реверсить его, все АВ в мире не отреверсишь, времени не хватит, благо у нас есть такое прекрасное слово как генерация, ты можешь локально генерировать множество различных вариантов и сканировать их, смотреть на реакцию, атака на черный ящик, можно так сказать, и выводить общие правила, затем методом исключения сужать круг.
 


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