что такое полиморфный криптор
Что такое полиморфный криптор
Фреймворк криптора/протектора с антиэмуляцией
На самом деле много людей интересуется протекторами и вирусными технологиями. Кто-то хочет заработать, кто-то хочет повысить скилл в кодинге, кому-то просто это нравится и считается, что это своего вроде исскуство.)
Тем не менее, с момента основания ресурса ru-sfera.org, люди пишут мне с вопросами, хорошо-бы если был-бы какой-то проект, так-сказать каркас, что-то взять за основу. Да, есть готовые проекты, но они либо устарели, либо имеют слишком сложную структуру, либо имеют существенные недостатки, об этом ниже.
Так-как неизвестно-кто будет этим проектом пользоваться и кто прочитает эту статью, начнем с небольшего ликбеза.)
Очень нравится, что про это дело говорил Вазонез (До ухода в реал):
Криптор (aka cryptor) — это тулза, которая предназначена для скрытия троянов, ботов и прочей нечисти от детектирования антивирусами.
Крипторы можно разделить на 2 вида: хорошие и дерьмовые:
Хорошие крипторы работают очень просто, быстро и надёжно, хоть и не безглючно. Они дописывают свой код (в контексте таких крипторов этот код называется стабом) в криптуемую программу и шифруют код самой программы.
При запуске первым стартует стаб, он восстанавливает оригинальный код и программа начинает работать. Если криптор свежий (или просто хороший, об этом ниже), то закриптованная программа не будет детектироваться антивирусами.
Чаще всего такие крипторы полиморфны — т.е. код криптора в криптуемой программе каждый раз уникален, заполнен случайными инструкциями и бессмысленными вызовами функций API. Такие крипторы достаточно долго остаются недетектируемыми в силу уникальности каждого закриптованного файла.
Другим же типом крипторов являются стабовые крипторы. Вообще только дебил будет называть это криптором, но в силу еб*** и многочисленности авторов таких творений, мы не будем отрываться от стаи.
Итак, быдлокрипторы. Суть их работы вот в чем — есть стаб. Стаб в этом случае — это отдельная программа, к которой цепляется криптуемый файл. При запуске файл извлекается, расшифровывается и запускается.
Антивирусы эволюционируют, появились новые технологие защиты (А именно детекты по поведению, детекты по репутации и т.д.), в частноти против крипторов появилась технология сканирования процессов, если вкратце, то антивирус либо сразу перед созданием процесса, либо через какое-то время сканирует процесс.
Тем самым понятно, даже если обойти эмулятор антивируса и сигнатурный детект, мы попадем под детект процесса.
Менять технологию скрытия детекта, вот следующие решения:
Шифровать и скрывать критичные функции в коде (Например шеллы и т.д.), после расшифровки и запуска такой функции, если использовать антиэмуляцию, антивирус ничего сделать несможет.)
Морфить код, если вкратце, это самомодификация кода на лету (Данный метод реализован в этом крипторе).
Честно я так и думал, до недавнего времени, но это несовсем так:
Во первых если у вас есть даже зверек без детекта, его неплохо-бы скрыть от реверсера, к тому-же почти все детектится сейчас автоматикой, в таком случае в большинстве случаев робот задетектит сам криптор, по хешу, или не по хешу, но чем сложнее будет реверсеру, тем больше вероятность, что сам троянчик будет дольше жить.
Во вторых не все антивирусы детектят код в памяти, например виндовый дефендер как-то криво с этим работает.
Некоторые антивирусы дают запустить процесс на пару секунд, а этого и может хватит кстати.)))
С лекбезом закончили, на форуме есть темы для глубокого изучения вопроса:
Теперь про конкретный проект, что он делает:
Поэтому решил я сделать проект, где-бы сам криптованный зверек размещался-бы в дата-секции, т.е. есть программа (я назвал её shell_gen), которая из бинарного файла, делает пошифрованный массив байт и в общем-то больше ничего не делает.)
Далее уже второй проект (Сам криптор), работает с этим массивом данных, т.е. расшифровывает этот массив, делает антиэмуляцию, запускает.
Для достижения метаморфизма, shell_gen генерирует заголовочный файл, со следующими дефайнами:
#define START_MORPH_CODE 5
#define END_MORPH_CODE 14
На основе этих значений при сборки, генерируется «мусорный код» (Математичесие операции и т.д.), который будет случайным, после каждого вызова shell_gen и сборки.
Тем самым код будет разный, как по коду, так и по данным.
Сам криптор (x86_pe_cryptor) имеет модульную структуру:
1)modules/lazy_importer/
Модуль скрытия API из таблицы импорта. Пример использования:
auto base = reinterpret_caststd::uintptr_t(LI_FIND(LoadLibraryA)(kernel32));
LI_GET(base, VirtualFree)(pFile, 0, MEM_RELEASE);
2)modules/murmurhash/
Реализация вычисления хеша murmurhash на ассемблере (FASM, приложен к проекту).
3)modules/trash_gen_module/
Реализация модуля, для генерация случайных инструкций, генерации случаных API винды и получение случайного числа на ассемблере (FASM, приложен к проекту), более подробное описание здесь:https://github.com/XShar/simple_trashe_gen_module
4)modules/xtea/
Реализация алгоритма шифрование xtea на ассемблере (FASM, приложен к проекту).
5)modules/run_pe/
Реализация функции запуска, расшифрованного массива PE-файла в памяти, путем создания процесса.
6)modules/antiemul/
7)modules/metamorph_code/
Функции метаморфинга. Смысл, что при сборки, генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp.
8)modules/simple_mutate_pe/
Функции мутации PE перед запуском.
Характеристики получившегося криптора:
1)Отстутствуют «опасные API» в таблице импорта (Такие-как CreateProcess и т.д.).
2)Имеет антиэмуляцию, направленную на привышение лимитов эмулятора антивирусов:
Выделение памяти 32 мегабайт, копирование туда нашего зверька, потом подсчет хеша этого куска памяти, шифровка/расшифровка этого куска памяти, в качестве ключа наш хеш.Эта-же память используется для размещения запуска зверька.
Получение ключа для расшифровки, следующим образом:
Генерируется массив случаных чисел от 0 до 9, далее генерируется хеш этих чисел, хеш генерируется на основе числа, сгенерированного при создании зашифрованного массива защищаемого файла. Далее сортируется массив от 0 до 9, т.е. в итоге у нас получается хеши от числел 0-9. Отсортированные по порядку, это и будет ключ. В момент генерации ключа, также в случайном порядке генерируется мусор из случайных инструкций и вызовов API.
3)При сборки, в main и в модулях:modules/run_pe/, modules/trash_gen_module/ генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp (На данный момент там функции арифметических операций). Тем самым достигается полиморфность не только данных, но и кода каждого образца.)))
4)Перед запуском происходит мутация запускаемого PE, что позволяет обойти детект в памяти у некоторых антивирусов.
Как работать с криптором:
Есть два проекта в Visual Studio 2017 или более новой:
Для работы необходимо сделать следующее:
1.Переименовать защищаемый файл в «data_protect.exe» и поместить его в shell_gen/Release/
2.Запустить файл shell_gen/Release/shell_gen.exe
3.Собрать проект x86_pe_cryptor в Visual Studio 2017 или более новой.
Всё, в /x86_pe_cryptor/Release/x86_pe_cryptor.exe будет сам криптор.)))
Проект будет обновляться, что планируется:
3)Что-то ещё, в зависимости от активности на форуме.)))
Криптор
Итак, Вы решили стать крутым хакером и вирусописателем, и уже даже купили себе самую нужную книгу «Как стать хакером для чайников»? Быть хакером – это конечно круто, но прочитав книгу подобного рода, максимум, кем Вы станете, это хакером чайников.
В данной статье мы постараемся объяснить некоторые аспекты программирования некоего программного обеспечения, касающегося именно хакерских сторон деятельности – как написать вирус, чтобы его не палили антивирусы, какие программы при этом использовать и где эти программы брать.
Криптор (от английского слова «Cryptor» — шифровщик) – это название одного из вида программных продуктов, которые используются программистами-вирусописателями для того, чтобы скрыть вредоносную сущность написанного ими программного обеспечения от антивирусных программ.
Криптор, используя шифрование программы, содержащей вирус, маскирует и защищает ее от антивирусных программ, которые работают методами поиска по сигнатурам.
Различают два вида крипторов: обычный и полиморфный. Обычные крипторы имеют статическую сигнатуру декриптора-расшифровщика, а у полиморфных данная сигнатура динамическая, и каждый раз при компиляции они (файлы, упакованные такими крипторами) выглядят по иному.
Как же работают крипторы? Все довольно просто: берется исходный оригинальный файл вредоносной программы, затем данная программа шифруется каким-либо криптором, при этом в начало вновь полученного файла записывается код для расшифровки программы. Чтобы было более понятно, объясним на простейшем примере: берется некая троянская программа и архивируется архиватором WinRAR, причем архивируется не просто так, а с парольной защитой. После выполнения данных действий ни одна антивирусная программа не сможет добраться до данного трояна, так как расшифровывать пароли к архивам они не умеют.
Здесь присутствует один небольшой подводный камень. Антивирусы добавляют в свои базы сигнатур коды расшифровки наиболее распространенных программ-крипторов, но если Вы создали какую-либо программу, которая совсем не является вирусом, а выполняет какие-либо только полезные действия, но при этом запаковали ее для уменьшения размера каким-либо популярным криптором, то зачастую может так случиться, что антивирус при попытке скопировать данную программу на компьютер или запустить ее начнет ругаться, что в данной программе содержится страшный вирус. Ну, от этого никуда не деться, если Вы пользуетесь общедоступными крипторами.
Вообще, по типу доступности крипторы подразделяют на Публичные (Public) и Приватные (Private).
Первый вид крипторов является общедоступным, они широко распространены на просторах Интернета и при наличии желания их может скачать любой пользователь. Основной отрицательной стороной таких крипторов является то, что по истечении совсем небольшого срока они начинают палиться практически всеми антивирусами (ведь антивирусные лаборатории тоже не дремлют и стараются отловить свежие виды крипторов, тем более как их не отлавливать, если они лежат в свободном доступе).
Со вторым же видом все не так просто. Эти крипторы доступны только избранному сообществу людей либо же их можно приобрести за вполне реальные деньги (электронные в основном). Данный тип крипторов является более устойчивым к проверке их антивирусами благодаря как постоянно совершенствующимся алгоритмам шифрования, так и постоянно обновляемому стабу. Что такое стаб, спросите Вы? Ответим. Стаб – та часть кода криптора, которая используется для расшифровки данных вредоносной программы, которая и была зашифрована данным криптором.
Часто в раделах форумов, где представлены крипторы, присутствуют аббревиатуры FUD и semiFUD. Расшифруем эти аббревиатуры, чтобы Вам было более понятно. Что же это такое.
1)FUD — Full Undetected — «полностью не определяется антивирусами»
2)semiFUD — Semi-full undetected — «почти не определяется антивирусами».
Помимо крипторов, при написании вредоносного программного обеспечения (вирусов и троянских программ), используются и некоторые другие виды программ. Вкратце перечислим их названия и расскажем, для чего они служат.
Для кражи номеров ICQ, логинов и паролей к аккаунтам электронной почты и социальным сетям используются особые тоянские программы, которые называются пинчи и ксинчи.
Для приема и обработки полученной ворованной информации используются специальные php-скрипты, которые называются гейтами.
Для соединения в один файл безопасной программы и какого-либо вируса служат джойнеры. При этом функциональность как первого (допустим, фотографии), так и второго (например, троянского вируса), остается на высшем уровне.
Вот в принципе и вся основная теоретическая информация по крипторам, которую мы хотели Вам представить.
Кстати, это тоже интересно:
Отличная статья, но мне показалось теории маловато! Можно было бы по поподробнее описать принцип работы криптора… Но все равно классная статья. Большой +
Полиморфный криптор-обфускатор JavaScript/HTML/VBS
Собственно, тот самый, последней версии, который был в призах за прохождение первого квеста.
Скриншот, из которого понятен весь функционал:
Скрипт написан на php и предоставляется в обфусцированном виде в открытом виде с 6 марта 2014 года. Скрипт был слегка доработан, поправлены мелкие косяки, теперь он без проблем запускается на последних версиях PHP.
Скачать: ZIP (пароль на архив: kaimi-ru)
Полиморфный криптор-обфускатор JavaScript/HTML/VBS: 61 комментарий
Да, крутая вещь!
Как я понял, у вас именно «Полиморфный» метод криптовки, а не сам код, полученный после криптовки.
Полиморфным получается и расшифровщик, и сам зашифрованный код. Невозможно два полностью одинаковых получить)
А что у нас с jQuery (со своим кодом, а не фреймворка)?
Надо пробовать, может, и заработает.
C Jquery не работает, было бы не плохо, если бы этот криптор можно было подключить в свои скрипты, чтобы каждый раз новый код отдавался.
Был у меня файл такой, который чисто функцию содержит для крипта, могу выложить, если надо.
Выложи, буду благодарен.
Можешь на мыло скинуть, если сюда не хочешь выкладывать.
rushter:И ты тут сцуко!
Выложу ближе к выходным. Криптор-то обновлялся, а файлик с функцией я еще не обновлял.
Если еще тут кто-то читает комменты, все еще хотелось бы одной функцией.
Коменты читают, просьбы не всегда выполняют.
dx помоги пожалуйста с квестом 15 уровень. Уже все перепробовал. Всю ночь сидел не получилось. Получился экзешник, который открывается и играется новогодняя песня и написано “Almost there”. Намекни хоть что дальше
Советую поработать с ресурсами)
Ну там же ничего нет.(
Подскажи прогу чем разобрать
Дизассемблером. А в ресурсах есть, просто не совсем открыто)
PE Explorer пойдет?
Сил нет. Хоть скажи в каком он виде?
Дизассемблер или отладчик нужен по-хорошему. Там кода-то всего ничего. OllyDbg подойдет. Хотя можно и другим, более простым софтом обойтись, но я не скажу, каким, а то прямо сразу ответ получается 🙂
Ну хоть закрой название софта маской. А то OllyDbg довольно сложен для меня, так как я немного в другой области работаю)
Да, понажимать F8 и попалить память так сложно. )
Т.е мне необходимо только окно CPU?
Или скажи где память?)
ппффф.помоги пожалуйста.сил нет уже)
Ответ как то связан с древнеримским леятелем?
Расшифровал обфускацию, смотрю там curl, file_put_contents я аж O_o
Потом понял что:
if((2229+933)>2229|| imagecopymerge($bcv,$cvv,$name44));
else
(1258-1258+1772-1772)?curl_setopt_array($name30,$zv,$wv,$name2):mt_rand(1258,3836);
Оптимизированный код, чё сказать)))))))))))))))
Вообще-то курла нет там, это специальные левые инструкции, которые добавляет обфускатор рандомно. Если бы ты подумал, то понял бы, что ничего из этого никогда не выполняется. Это значит, что знаний не хватает и обфускацию ты не расшифровал.
Ну я сказал что «Потом понял что:» (понял что они не выполняются) =)
«Обфускацию ты не расшифровал» не, я расшифровал http://zalil.ru/30861069 (пас на rar в icq скинул)
Слушай, а как им пользоваться?
Просто, залить на сервер и подключить к скриптам?
Подскажи, пожалуйста, а то я php не оч. хорошо знаю.
Залить и запустить как обычный пхп-скрипт.
ну с java скриптами ясно, а как им vbs скрипт криптануть? Сколько не тыкал ничего не выходит(
VBS не криптуется как таковой, криптуются vbscript’ы внутри хтмл-страниц
2 dx
Спасибо за разъяснения.
пацаны а он exe шники криптует или нет?
или кто знает где достать полиморфный криптор ехе шников.приватный с последующими чистками.напишите.оплачу посредника.деньги есть
моя аська 609-836-270
Автору большая благодарность за данный софт, мне он очень помог!
Но я также хотел бы спросить по поводу полиморфного криптора, у кого можно купить было бы для exe и если можно dll файлов. Автор если знаешь где купить или у тебя мб есть то отпиши на мыло пожалуйста.
Олег решил трояны криптовать =) на злом поищи, там каждый второй или продает или криптует
С новым годом вас, ребята!
аналогично нужно, dx. Не нашёл? Так бы и под заказ снова заказал
Спасибо что ответил d_x, ато твои контакты нереально достать. =). Друзья твои не дают, говорят нельзя попросту тревожить.
Буду очень признателен если в скором времени скинешь скрипт в личку.
ООООчень он нужен.
D_x дай кошелек. Я бы скинул копейку за помощь. Просто срочно нужна функция. Дай пожалуйстаФ
Срочно не получится, через неделю скорее всего выложу, пока нет возможности прост.
Спасибо! Лучше обфускатора для JS я не видел. А как ты относишься, автор, к переводу твоего PHP скрипта в скрипт JS и пакет в NPM?
Не за что, отношусь нейтрально, так как не вижу в этом особого смысла.
Ага, забыли только написать, что яндекс после этого определяет сайт, как вредоносный Troj/Iframe-DN
5 летний способ обфускации, которые за этот срок использовали все кому не лень, оказывается, стал определяться как вредоносный? Невероятно!
Что такое полиморфный криптор
Фреймворк криптора/протектора с антиэмуляцией
На самом деле много людей интересуется протекторами и вирусными технологиями. Кто-то хочет заработать, кто-то хочет повысить скилл в кодинге, кому-то просто это нравится и считается, что это своего вроде исскуство.)
Тем не менее, с момента основания ресурса ru-sfera.org, люди пишут мне с вопросами, хорошо-бы если был-бы какой-то проект, так-сказать каркас, что-то взять за основу. Да, есть готовые проекты, но они либо устарели, либо имеют слишком сложную структуру, либо имеют существенные недостатки, об этом ниже.
Так-как неизвестно-кто будет этим проектом пользоваться и кто прочитает эту статью, начнем с небольшего ликбеза.)
Очень нравится, что про это дело говорил Вазонез (До ухода в реал):
Криптор (aka cryptor) — это тулза, которая предназначена для скрытия троянов, ботов и прочей нечисти от детектирования антивирусами.
Крипторы можно разделить на 2 вида: хорошие и дерьмовые:
Хорошие крипторы работают очень просто, быстро и надёжно, хоть и не безглючно. Они дописывают свой код (в контексте таких крипторов этот код называется стабом) в криптуемую программу и шифруют код самой программы.
При запуске первым стартует стаб, он восстанавливает оригинальный код и программа начинает работать. Если криптор свежий (или просто хороший, об этом ниже), то закриптованная программа не будет детектироваться антивирусами.
Чаще всего такие крипторы полиморфны — т.е. код криптора в криптуемой программе каждый раз уникален, заполнен случайными инструкциями и бессмысленными вызовами функций API. Такие крипторы достаточно долго остаются недетектируемыми в силу уникальности каждого закриптованного файла.
Другим же типом крипторов являются стабовые крипторы. Вообще только дебил будет называть это криптором, но в силу еб*** и многочисленности авторов таких творений, мы не будем отрываться от стаи.
Итак, быдлокрипторы. Суть их работы вот в чем — есть стаб. Стаб в этом случае — это отдельная программа, к которой цепляется криптуемый файл. При запуске файл извлекается, расшифровывается и запускается.
Антивирусы эволюционируют, появились новые технологие защиты (А именно детекты по поведению, детекты по репутации и т.д.), в частноти против крипторов появилась технология сканирования процессов, если вкратце, то антивирус либо сразу перед созданием процесса, либо через какое-то время сканирует процесс.
Тем самым понятно, даже если обойти эмулятор антивируса и сигнатурный детект, мы попадем под детект процесса.
Менять технологию скрытия детекта, вот следующие решения:
Шифровать и скрывать критичные функции в коде (Например шеллы и т.д.), после расшифровки и запуска такой функции, если использовать антиэмуляцию, антивирус ничего сделать несможет.)
Морфить код, если вкратце, это самомодификация кода на лету (Данный метод реализован в этом крипторе).
Честно я так и думал, до недавнего времени, но это несовсем так:
Во первых если у вас есть даже зверек без детекта, его неплохо-бы скрыть от реверсера, к тому-же почти все детектится сейчас автоматикой, в таком случае в большинстве случаев робот задетектит сам криптор, по хешу, или не по хешу, но чем сложнее будет реверсеру, тем больше вероятность, что сам троянчик будет дольше жить.
Во вторых не все антивирусы детектят код в памяти, например виндовый дефендер как-то криво с этим работает.
Некоторые антивирусы дают запустить процесс на пару секунд, а этого и может хватит кстати.)))
С лекбезом закончили, на форуме есть темы для глубокого изучения вопроса:
Теперь про конкретный проект, что он делает:
Поэтому решил я сделать проект, где-бы сам криптованный зверек размещался-бы в дата-секции, т.е. есть программа (я назвал её shell_gen), которая из бинарного файла, делает пошифрованный массив байт и в общем-то больше ничего не делает.)
Далее уже второй проект (Сам криптор), работает с этим массивом данных, т.е. расшифровывает этот массив, делает антиэмуляцию, запускает.
Для достижения метаморфизма, shell_gen генерирует заголовочный файл, со следующими дефайнами:
#define START_MORPH_CODE 5
#define END_MORPH_CODE 14
На основе этих значений при сборки, генерируется «мусорный код» (Математичесие операции и т.д.), который будет случайным, после каждого вызова shell_gen и сборки.
Тем самым код будет разный, как по коду, так и по данным.
Сам криптор (x86_pe_cryptor) имеет модульную структуру:
1)modules/lazy_importer/
Модуль скрытия API из таблицы импорта. Пример использования:
auto base = reinterpret_caststd::uintptr_t(LI_FIND(LoadLibraryA)(kernel32));
LI_GET(base, VirtualFree)(pFile, 0, MEM_RELEASE);
2)modules/murmurhash/
Реализация вычисления хеша murmurhash на ассемблере (FASM, приложен к проекту).
3)modules/trash_gen_module/
Реализация модуля, для генерация случайных инструкций, генерации случаных API винды и получение случайного числа на ассемблере (FASM, приложен к проекту), более подробное описание здесь:https://github.com/XShar/simple_trashe_gen_module
4)modules/xtea/
Реализация алгоритма шифрование xtea на ассемблере (FASM, приложен к проекту).
5)modules/run_pe/
Реализация функции запуска, расшифрованного массива PE-файла в памяти, путем создания процесса.
6)modules/antiemul/
7)modules/metamorph_code/
Функции метаморфинга. Смысл, что при сборки, генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp.
8)modules/simple_mutate_pe/
Функции мутации PE перед запуском.
Характеристики получившегося криптора:
1)Отстутствуют «опасные API» в таблице импорта (Такие-как CreateProcess и т.д.).
2)Имеет антиэмуляцию, направленную на привышение лимитов эмулятора антивирусов:
Выделение памяти 32 мегабайт, копирование туда нашего зверька, потом подсчет хеша этого куска памяти, шифровка/расшифровка этого куска памяти, в качестве ключа наш хеш.Эта-же память используется для размещения запуска зверька.
Получение ключа для расшифровки, следующим образом:
Генерируется массив случаных чисел от 0 до 9, далее генерируется хеш этих чисел, хеш генерируется на основе числа, сгенерированного при создании зашифрованного массива защищаемого файла. Далее сортируется массив от 0 до 9, т.е. в итоге у нас получается хеши от числел 0-9. Отсортированные по порядку, это и будет ключ. В момент генерации ключа, также в случайном порядке генерируется мусор из случайных инструкций и вызовов API.
3)При сборки, в main и в модулях:modules/run_pe/, modules/trash_gen_module/ генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp (На данный момент там функции арифметических операций). Тем самым достигается полиморфность не только данных, но и кода каждого образца.)))
4)Перед запуском происходит мутация запускаемого PE, что позволяет обойти детект в памяти у некоторых антивирусов.
Как работать с криптором:
Есть два проекта в Visual Studio 2017 или более новой:
Для работы необходимо сделать следующее:
1.Переименовать защищаемый файл в «data_protect.exe» и поместить его в shell_gen/Release/
2.Запустить файл shell_gen/Release/shell_gen.exe
3.Собрать проект x86_pe_cryptor в Visual Studio 2017 или более новой.
Всё, в /x86_pe_cryptor/Release/x86_pe_cryptor.exe будет сам криптор.)))
Проект будет обновляться, что планируется:
3)Что-то ещё, в зависимости от активности на форуме.)))