Авторская статья Современные крипторы в 2020 году - Какие они должны быть

X-Shar

RAID-массив
Пользователь
Регистрация
17.05.2020
Сообщения
88
Реакции
111
Баллы
42
Всем привет, уважаемые жители форума.

Давно наблюдаю за форумом, как гость, еще с момента когда произошла «перезагрузка» форума на новый движек и домен.

Также конечно наблюдал и за дамагой.)))

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

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

Также хочется поблагодарить здешних посетителей, это merdock и Jeffs .

Без вас-бы этой статьи не было.

И еще сразу хочу обратить внимание и извинится за качество кода, который будет приложен к этой статье, данный материал больше направлен, как концепт к изучению и обсуждения.

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

И последнее, данная статья может не удовлетворять требованиям к размещению, я не буду считать символы чтобы уложится в 5К, также как и написанное здесь, также может не удовлетворять уровню, который хочет увидеть админ.

Статья написана не для денежного вознаграждения, поэтому даже если статья не удовлетворяет требованиям, просьба не удалять её, пусть будет.

Все-же я потратил время на написание, думаю это неповредит форуму, а может кому и покажется полезным.

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

Итак хватит воды, что ждет вас в этой статье (Оглавление):

1)Введение. Теория. Что есть крипторы в 2020 году и для чего они нужны.

2)Какие они, должны-быть эти крипторы.

3)Маленький демострационный проект и описание как и что делается.

4)Супер-мега блокбастер. Вирус против антивирусов. Итоги.

1)Введение. Теория. Что есть крипторы в 2020 году и для чего они нужны.

Крипторы, их можно также назвать протекторами, а также если говорить про реалии 2020 года, их также можно назвать обфускаторами, в зависимости от типа зверька, которого мы хотим скрыть, но обо всем по порядку.

В далекие наверно уже 2000 – 2010 года, крипторы делали для скрытия уже известного в базе вируса, смысл был такой, есть вирус, который детектится сигнатурно, для его скрытия делали следующее:

Писался загрузчик (stub) – Это минимальная программа, который из оверлея, специально созданной секции, или ресурсов загружала шифрованного зверька, делала антиэмуляцию и запускала зверька в памяти.

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

Что-бы дальше было понятно, немного расскажу про виды детекта, а потом про виды крипторов уже в 2020 году и какие они должны быть.)

Итак виды детектов антивирусов:

1.Сигнатурный детект.

Тут всё и просто, и сложно. Сигнатура может-быть по определённой контрольной сумме, например антивирус считает контрольную сумму файла (CRC32, MD5 и т.д.), и в случае если такая сумма совпала в базе. То выдаётся детект.
Это называется «точечный детект» и используется часто в «облаках», что позволяет быстро выявить угрозу и нейтрализовать её.

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

Также, сигнатурный детект может-быть и на часть файла, например на какую-то функцию зверька.

2.Эмуляция кода.

По простому, антивирус исполняет ваш код в момент сканирования и если находит какие-то касяки, например «Непонравилась API» или обнаружена сигнатура вируса, или кусок такой сигнатуры, то будет детект.

Ещё пример (мы этот пример разберём ниже, чуть позже), вы можете написать протектор, который например из дата-секции будет брать шифрованный вирус, а далее расшифровывать его, например в какой-то буфер в оперативной памяти. Казалось-бы, вирус шифрованый и антивирус его не должен детектить.

А-нет, эмулятор расшифрует код и задетектит вирус. В общем-то для этого и нужен эмулятор кода.

3.Детект при запуске.

Всё-что выше, мы разбирали так-называемый «статический детект», т.е. детект, который выдаётся до запуска файла, такой детект будет если вы просканируете файл сканером, или зальёте например на вирустотал и т.д.

Но нужно ещё сказать и про динамический детект. Это детект при запуске файла. Как он формируется ?

У всех антивирусов по разному, например у касперского есть критерии по которому может-быть детект при запуске, например часть таких критериев: Создаёт-ли вирус процессы и как делает это, добавляется-ли вирус в автозапуск, как дербанит сеть вирус и т.д.

Ну тут понятно, что даже при обходе сигнатурного детекта и эмулятора, если вирус по тупому крадёт пароли, создаёт скрытые процессы, всё это пересылает по сети, делает хук на клавиатуру, да ещё и добавляет себя в автозагрузку, то думаю детект не заставит себя ждать !

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

4.Еще раз про облако и «искусственный интелект».

Ошибочно думать, что облако – Это только детект по контрольной сумме. Нет это достаточно сложная система, основанная на ИИ.

Например антивирус может отсылать полностью зверька в «виртуальноую лабораторию», где произойдет запуск зверька и ИИ определит вирус-ли это или нет, по разным критериям, будь это репутация, где распространяется зверек и т.д.

Также например, как у касперского может происходить и автоматическое помещение программы в определенную группу, например «программа для удаленного управления» и т.д., также автоматически происходит и установка «репутации программы».

Поэтому у современных АВ, аналитики выполняют либо анализ по запросу, либо если у ИИ возникает какие-то спорные моменты, то зверек перейдет аналитику уже.)))

2)Какие они, должны-быть эти крипторы.


Фу-фу, наконец-то перейдем к самим крипторам уже.

Итак вначале виды крипторов в 2020 году:

1.Натив крипторы:

Ну это крипторы, которые должны криптовать зверьков, которые написаны на нативных языках, таких-как С/С++, ассемблер, Delphi и т.д.

Также крипторы могут криптовать разные разрядности зверьков, например есть крипторы для x86, а есть x64.

Мы рассмотрим на практике именно такой вид криптора, для других крипторов, должны писаться отдельные статьи.

2.Крипторы .NET и C#:

Как видно из названия, эти крипторы криптуют только .NET и C#.

Хорошо будет, если после этой статьи появятся статьи по крипторам C# и .NET.

На самом деле на том-же C#, можно писать хорошую малварь, ничего против шарпов не имею, но я низкоуровневый программист, поэтому мало что скажу про шарпы и дот нет, максимум что там писал, это гуй…)

Может-быть в будущем в зависимости от задач, ближе познакомлюсь с шарпами, но пока-что таких задач к сожалению нет.:(

3.Крипторы скриптовых языков:

Это по сути обфускаторы, например попадались на глаза обфускаторы батников, java и т.д.

Интересно, что в таких крипторах также используют антиэмуляцию, в виде задержек sleep и т.д.)))

Много про эти виды крипторов тоже писать не буду, т.к. это дело отдельной статьи.

Итак, 2020 год, какие должны-быть крипторы, чтобы выжить:

Современные антивирусы, даже уровня виндового дефендера, имеют не хилые технологии, что-бы свести на нет распространение практически любого вируса.

Но тем не менее, если использовать крипторы правильно, это максимально усложнит детект автоматики, а соответственно увеличит время жизни зверька и уменьшит время чистки следующего билда зверька.

Итак предназначение криптора в 2020 году:

Если раньше крипторы использовались для обхода детекта, то в 2020 году, криптор нужно использовать уже для усложнения детектов автоматики, смысл сделать так что-бы автоматика не добралась до самого зверька, при этом под детект попадала минимальная часть криптора, для автоматизации и ускорения чистки самого криптора.

Как-же это сделать ?

Есть концепт использования шелл-кодов и обфускаторов кодов.

merdock – Про это обращал внимание, на экспе, когда-то давно, но что-то развитие тема не получила, хотя многие зверьки ипользуют это, про это ниже.

Jeffs – Создал здесь тему про обфускаторы си-кода, про обфускацию ниже.

Итак суть самого концепта:

Основная идея
- Это шифровка и скрытие основных частей криптора, например можно пошифровать модуль криптора, который отвечает за запуск зверька в памяти, пошифровать модуль антиэмуляции и т.д.

Эти шифрованные части можно хранить в ресурсах, дата-секции, или вообще загружать по сети.)))

Тем самым стаб будет минимален, а все остальное - это пошифрованные шелл-коды...

Шифрованные части можно прятать например в картинку и размещать на каком-то ресурсе, либо на ломанном сайте.

Пошифрованные части криптора, ну очень сложно задетектить автоматикой, также добраться непосредственно до вашего зверька автоматика не сможет.

В итоге детект будет на часть криптора, которая отвечает за запуск уже шелл-кода, а это как праило 15-30 строк Си-кода, тут уже выходит на первый план обфускаторы и генераторы мусорного Си-кода.

Если все это автоматизировать, билды зверьков будут жить долго и чистка будет происходить достаточно быстро.)))

3)Маленький демострационный проект и описание как и что делается.

Для демонстрации этого концепта, недавно написал демонстрационный проект:

Итак, что получилось:

Решение состоит из двух проектов:

1.Первый проект LoadPeToShell - Переводит в шифрованный шелл-код модуль LoadPe, по сути создаёт заголовочный файл "loadpe.h", с шифрованным шелл-кодом.

LoadPe - Это основной модуль криптора, по сути там все.)

Антиэмуляция происходит путем вызова функции close по её хешу, то-что должна возвратить функция, это код ошибки ESTALE, на основе этого формируется ключ для расшифровки и расшифровывается пейлоад и запускается...

Немного каснусь тему антиэмуляции, вообще по хорошему также написать отдельную статью про это дело.)

Итак антиэмуляция бывает, как интелектуальная с точки срения реализации, так и дерьмовая.

Дерьмовая антиэмулция по моему мнению, это то-что использует атаки на ресурсы эмулятора, да у эмулятора антивируса ограничины ресурсы и если сделать задержку например 2 секунды, или делать какие-то ресурсоемкие расчёты, для получения ключа расшифровки, то скорей-всего эмулятор антивируса пропустит эту задержку и если использовать этот прием, то будет фуд.)

Но данный прием дерьмовый по моему мнению, т.к. для некоторых зверьков критична задержка, например для запуска кейлоггера и т.д.

Да и интеллектуального тут ничего нет, если говорить про малварь, как искусство, какое-то извините говно…)

Более интелектуальный подход и самый простой, как в этом примере проверять например коды ошибок API, и на основе их уже что-то делать.

Есть и другие методы, но обсуждение антиэмуляции, лучше вынести в отдельную статью.)))

Также в LoadPeToShell шифруется пейлоад и создается заголовочный файл "payload.h".

Алгоритм шифрования RC4.

2.Второй проект. Stub – Это уже сам проект криптора.

Где происходит расшифровка шелл-кода из дата секции и запуск этого шелл-кода, пример:

- Расшифровка шелл-кода:

Код:
decRC4(key_to_dec, 4, loadpe, sizeof(loadpe)-1);
- Запуск шелл-кода:

Код:
uint32_t ret = (*(uint32_t(*)(PVOID, DWORD))v_code)(payload, size_peyload);
В сам шелл-код нужно передать буфер шифрованного зверька и размер.

Антиэмуляция, расшифровка и запуск, уже в шелл-коде.)))

Как это сделано, можно глянуть в исходнике, который выложен на гитхабе: https://github.com/XShar/shell_crypor_framework

Как пользоваться:

1)В Release положить файл, который нужно закриптовать с именем PayloadExe.exe.

2)Запустить файл "LoadPeToShell.exe".

3)Собрать проект в Visual Studio C++.

Получится файл в Release "stub.exe".

Это и есть ваш криптованный зверек.

Доработка, кто хочет использовать в комерсе:


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

2)В стабе для скрытия VirtualAlloc я использую проект lazy_importer, рекомендую отказаться от него и вообще нужно отрефакторить код, писалось на скорую руку, опять-же качество кода желает лучшего, но для демонстрации концепта подойдет.

3)Сам шелл-код, как и криптованного зверька можно прятать в картинках на сайта, или в любом другом месте, тут просто опять-же для демонстрации концепта, в дата секции.

4)Супер-мега блокбастер. Вирус против антивирусов. Итоги.

Для демонстрации, что концепт работает, на момент написание данной статьи, прилагаю скан на dyncheck.com:

1)На безобидный файл, статик детект:
1589711669233.png

2)Динамический детект, на безобидный файл:

1589711692152.png

Ссылка на скан:https://dyncheck.com/scan/id/fba0cc6c263f19b1998f8bee847c9c26

3)Динамический детект на драккомет, статик детект также фуд.)))

1589711715914.png

Ссылка на скан https://dyncheck.com/scan/id/08b78746eb632b6311f7ae25defa308f

То-что с восклицательным знаком, это битый детект, виндовый дефендер не детектит вроде…)

Надеюсь данная статья будет полезна.

Удаче всем и по возможности занимайтесь полезной разработкой, а не малварью в комерс.)))
 

sesdamw

floppy-диск
Пользователь
Регистрация
13.01.2020
Сообщения
8
Реакции
1
Баллы
3
Jeffs – Создал здесь тему про обфускаторы си-кода, про обфускацию ниже.
На форуме не нашел тему про обфускатор который создал Jeffs.Можете дать ссылку?
 

X-Shar

RAID-массив
Пользователь
Регистрация
17.05.2020
Сообщения
88
Реакции
111
Баллы
42
Jeffs – Создал здесь тему про обфускаторы си-кода, про обфускацию ниже.
На форуме не нашел тему про обфускатор который создал Jeffs.Можете дать ссылку?
Чот тоже найти не могу.)
Но вот неплохая статья в тему:https://xss.is/threads/35265/

Для текущего конкурса мы с Jeffs планируем сделать не плохой проект, который будет не только интересен локерам, хотя я неодобряю локеров, но и всем думаю.

Месяц конечно не большей срок, но думаю успеем.

Так-что ставьте лайки и подписывайтесь на канал.)))
 

trappradikal

floppy-диск
Пользователь
Регистрация
31.05.2020
Сообщения
2
Реакции
0
Баллы
2
Very nice of you to share that with your fellow brothers I’m sure people appreciate it
 

iRlov

floppy-диск
Пользователь
Регистрация
04.06.2020
Сообщения
6
Реакции
0
Баллы
2
Удачи вам ребята, ждем годного проекта!
 

sesdamw

floppy-диск
Пользователь
Регистрация
13.01.2020
Сообщения
8
Реакции
1
Баллы
3
1)Нужно создать генератор мусора для стаба и обфускатор си-кода. Можно использовать готовые движки, ну собственно если автоматизировать этот процесс, чистка будет весьма быстрой.
Пожалуйста напиши статью про чистку криптора это больной вопрос для многих?
 
Верх