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

Каким образом скрывать payload для LoadPE?

secflag

RAID-массив
Пользователь
Регистрация
29.01.2020
Сообщения
51
Реакции
10
Есть LoadPE и ехешник , который подгружается в памяти. С энтропией проблем нет, метод шифрования RC4. При размещении payload'a в секции .data ( unsigned char rawData[1] = {...} ) размер секции слишком большой, что некоторые АВ орут на это. Видел метод, который составлял дерево байтов, нужен был только seed, но эту реализацию немного не понял.

Также была идея разделить выходной payload на несколько частей, прописывать их в секциях билда и распаковывать поочередно. Но вес тоже довольно большой будет.
 
Если располагаешь данные внутри секции - коси под строки, разбивай на куски и кодируй в base64 либо своим кастомным энкодером, что бы на выходе получались строки из читаемых символов
Если лепишь оверлеем - там не важно как выглядят данные, но можно сделать закос под какой то сертификат и в теле хранить данные
Не стоит забывать про ресурсы, генерируй битмап с правильным хедером, но вместо данных пикселей располагай тело payload, если хочешь заморочиться - стеганография тебе в помощь

По поводу генерации данных кодом вот тебе пример как это делается, отладчик в помощь, там нет ничего сложного концепция должна быть понятна
Скрытый контент для пользователей: .
 
Если располагаешь данные внутри секции - коси под строки, разбивай на куски и кодируй в base64 либо своим кастомным энкодером, что бы на выходе получались строки из читаемых символов
Если лепишь оверлеем - там не важно как выглядят данные, но можно сделать закос под какой то сертификат и в теле хранить данные
Не стоит забывать про ресурсы, генерируй битмап с правильным хедером, но вместо данных пикселей располагай тело payload, если хочешь заморочиться - стеганография тебе в помощь

По поводу генерации данных кодом вот тебе пример как это делается, отладчик в помощь, там нет ничего сложного концепция должна быть понятна
Скрытое содержимое
Ответ Hello, MossadX удивил)
Я так понимаю, разобрав этот код, можно будет составлять свои дерева, и само собой все это автоматизировать?
 
Ответ Hello, MossadX удивил)
Я так понимаю, разобрав этот код, можно будет составлять свои дерева, и само собой все это автоматизировать?
Все верно, в отладке потыкай, пойми как это работает, каждая функция передает следующей результат своей работы, т.е является сидом, и так по цепочке идет генерация.
P.S небольшой секрет, в каждой функции операции абсолютно случайные, и только последние 1-2 подгоняют результат к нужному байту.
 
Самое оптимальное - несколько битмап-ресурсов, оверлей - палево. вшивать в секции (даже в виде строк) - тоже палево из-за размера секций.
Почему? Если в .text засунешь - аверам впринципе пох
 
Почему? Если в .text засунешь - аверам впринципе пох
текст размером в полметра, напичканный строками - подозрительно, потенциально плевно даже если какой-то авер сейчас это не палит. А вот битмапы - это непалевно, потому что похоже на реальный кейс.
 
Совать все в секцию кода или инициализированных данных - это эмпирически в каждом случае, т.к. зависит от пропорций секций. Base64 - энтропию понижает это хорошо, но увеличивает размер - это в нынешнее время пох. По антиэмуляции: шифровать рандомным ключом - потом перебором из известного диапазона извлекать пейлоад, в котором заранее зафиксить баги или брекпойнты. При запуске victimPE - запускать его как отлаживаемый процесс и на ходу отлаживать как делал прот Armadillo.
 
Совать все в секцию кода или инициализированных данных - это эмпирически в каждом случае, т.к. зависит от пропорций секций. Base64 - энтропию понижает это хорошо, но увеличивает размер - это в нынешнее время пох. По антиэмуляции: шифровать рандомным ключом - потом перебором из известного диапазона извлекать пейлоад, в котором заранее зафиксить баги или брекпойнты. При запуске victimPE - запускать его как отлаживаемый процесс и на ходу отлаживать как делал прот Armadillo.
Я реализовал генерацию массива через seed, спасибо за идею arsarsov
 
arsarsov поделись техникой с простым народом :)
Скрытый контент для пользователей: awaken1337.

Это генератор на основе графов, сначала генерируется граф операций, потом он рассчитывается рекурсивно проходя по графу, на выходе получаем просто набор функций, которые получают на вход определенный SEED, а каждуя следующая функция принимает на вход как SEED результат работы предыдущей функции. И так байт-за-байтом данные генерируются кодом. Операции каждый раз случайные. Не обращай внимание на порядок нумерации функций, обьявления идут в случайном порядке, потому что генератор многопоточный, какой поток быстрее отработал - тот и пишет первый.
 
Последнее редактирование:
какие именно ав орут ? зачем усложнять ? палится что-то другое.
способ с обычным размещением пейлоада в дате под ксором - работает отлично и без детектов.
могу показать "упакованый" putty, который грузится пейлоадом и 0 детектов по авчеку.
 
какие именно ав орут ? зачем усложнять ? палится что-то другое.
способ с обычным размещением пейлоада в дате под ксором - работает отлично и без детектов.
могу показать "упакованый" putty, который грузится пейлоадом и 0 детектов по авчеку.
Это исключено. Я писал стаб, и чекал разницу на ВТ (да-да, там точнее детекты)
И по итогу сам стаб без payload'a был 0/71, а после добавления данных в секцию .data детекты возросли до четырех
 
Не бывает конкретной одной причины. Это практически всегда совокупность факторов.
Что такое эвристик? Это набор правил, каждое из которых последовательно применяется к семплу и
строится итоговая карта вероятностей. Без пейлоада возможно карта вероятностей недотягивает до алерта.
Изучайте под микроскопом эталонные бинарные файлы, например системные и стремитесь становиться максимально похожими на них.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Скрытое содержимое
Это генератор на основе графов, сначала генерируется граф операций, потом он рассчитывается рекурсивно проходя по графу, на выходе получаем просто набор функций, которые получают на вход определенный SEED, а каждуя следующая функция принимает на вход как SEED результат работы предыдущей функции. И так байт-за-байтом данные генерируются кодом. Операции каждый раз случайные. Не обращай внимание на порядок нумерации функций, обьявления идут в случайном порядке, потому что генератор многопоточный, какой поток быстрее отработал - тот и пишет первый.
А можно и мне тоже
 
А можно и мне тоже
Скрытый контент для пользователей: .
 
arsarsov, я тоже буду благодарен, по описанию не совсем понятно, хотелось бы "руками потрогать".
 


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