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

AV Bypass [для новичков]

AngelStar

RAM
Пользователь
Регистрация
04.02.2022
Сообщения
112
Реакции
94
Предисловие

ВСЁ, ЧТО НАПИСАНЫ НИЖЕ - БОЛЬНАЯ ФАНТАЗИЯ АВТОРА И НЕ ПРАВДА. АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ИСПОЛЬЗОВАНИЕ ИНФОРМАЦИИ В НЕЗАКОННЫХ ЦЕЛЯХ. ВСЕ СОВПАДЕНИЯ И Т.Д. - СЛУЧАЙНОСТЬ.


Итак, сегодня аверы немного поумнели и теперь протекторы, крипторы и т.д. уже не так спасают, как это было раньше)
Они выполняют скорее функцию защиты от реверсера, и то, всё зависит от его скилов
ПОЧЕМУ всё так происходит? - потому что у авера, помимо сигнатур, есть еще эвристика и поведенческий анализ

Начнем с отличия (кто считает, что всё работает по другому - считайте. О терминах не спорят, а договариваются)

Эвристика - исследование исполняемого файла в эмуляторе АВ. Эмулятор - штука, которая просто возвращает какое-то значение каждой функции, чтобы перейти к следующей, проходя таким образом все пути выполнения проги. НЕДОСТАТОК: ограничение по времени и эмуляция возвращаемых значений (как бы не было это странно - но фишку эту можно неплохо использовать)

Поведенческий анализ - исследование процесса в памяти. Тут АВ начинает хучить ваши функции и проверять их, путь проги и т.д. Также он чекает ФС, реестр и много другое - но это не сегодня)


Ну и немного о статике: поксорить код и всё. не думаю, что надо вдаваться в подробности, но для особо ленивых вот код
Код:
for (int i = 0; i < sizeof(shellcode); i++)
        shellcode[i] ^= key;




Теперь перейдем к обходу эвристики:

Как бы это странно не звучало - но функция Sleep вас не спасет, ибо АВ сэмулирует изменение времени и всё)
Можно играть на использовании особенности эмулятора: запросить хендлер несуществующего процесса и посмотреть дали его или нет
Что касается времени - цикл с вычислением числа пи с точностью 1000000000000 - вполне подойдет


Поведение - тут полько обфускация, полиморфный код и т.д.


ЧТО ЕЩЕ МОЖНО СДЕЛАТЬ?

- Обфусфировать точку входа
- Объединить данные и код в одной секции (кода естественно))
Код:
#pragma code_seg(push, ".text")
#pragma code_seg(pop)
unsigned char __declspec(allocate(".text")) hiddencode[]={ ... };

# а еще писать строки в таком виде, чтобы они при компиляции заменялись на movы и оставались в коде
char str[] = { 'H', 'E', 'L', 'L', 'O' };
- !!!!НЕ РАСШИРЯТЬ СЕКЦИИ!!! (кроме кода))

- Неявно вызывать winapi (Найти kernel32, ntdll можно в PEBe, оттуда искать нужные функции через хеш)
- Делать анхуки (снять хуки авера)
Код:
    BYTE* A = (BYTE*)GET_API(SendMessageA); // Любая функция, на которую Avast ставит ловушку
    if (A[0] == 0xe9) // Если первая команда - JMP
    {
        // В песочнице Avast ставит ловушки с переходом на адрес, по которому записана последовательность байтов FF25 00000000 (еще один JMP)
        // т.е. характерным признаком эмулятора Аваст является два последовательных JMP, E9 и FF 25 в прологе вашей функции
        // В нормальном режиме Аваст также ставит хуки, но их меньше, и они ведут на адреса насильно внедренной в процесс aswhook.dll
        SIZE_T W = (SIZE_T)(A + 5) + (SIZE_T)(*(INT32*)(A + 1));
        if (*(WORD*)W == 0x25FF && *(DWORD*)(W + 2) == 0)
        {
            debug_printfA(ORANGE, "Avast CyberCapture (sandbox) detected\n");
            GET_API(ExitProcess)(-1);
        }
    }
- ВСЕГДА ШИФРОВАТЬ ПЕЙЛОАД!!!!



САМОЕ ГЛАВНОЕ!!!
НИКОГДА НЕ ТЕСТИРУЙТЕ БОЕВОЙ ЭКЗЕМПЛЯР В VIRUSTOTAL и на аверах, подключенных к инету
Думаю очевидно, что все семплы отправляются на анализ и там уже выйдет сигна, которая даст вам под хвост)
Если хотите нормально тестить - скачайте YARA правила и прогоните по ним
Вот самые простые: https://github.com/Neo23x0/signature-base/
Или используйте авер, но без доступа в инет
Конечно, он не таким жестким будет, но что-то да может увидеть)




ПО ИНЖЕКТАМ, ИЗМЕНЕНИЯМ В ПЕБАХ И Т.Д.:
Специально не стал тут всё писать, потому что считаю, что надо отделять мух от котлет
Всё таки сам код инжекта - уже не очень хороший, а значит для него надо сделать всё вышеописанное)


НА ПОСЛЕДОК:

Всё, что описано выше - не универсальность, да и просто теория для тех, кто ничего в теме не знает, но ему это очень интересно)
Конечно, ВСЁ ЗАВИСИТ ОТ СИТУАЦИИ!!! Разные аверы работают по разному, разные версии есть и т.д.

Я посторался просто описать тот минимум, который достаточен для входа в тему
 
антивирусы имеют свойство неадекватно реагировать на объединение PE-секций
В этом и суть! Они реагируют на неадекватный размер всех секций, кроме .text) Поэтому туда можно засунуть что угодно
 
НИКОГДА НЕ ТЕСТИРУЙТЕ БОЕВОЙ ЭКЗЕМПЛЯР В VIRUSTOTAL и на аверах, подключенных к инету
сейчас дефендер везде и он по дефолту с облаком своим работает, нет ?
 
сейчас дефендер везде и он по дефолту с облаком своим работает, нет ?
Ну дефендер сейчас как бы и не везде (потому что при установки другого авера он отключается)

По поводу облака - любой АВ его юзает если есть доступ к интернету
Поэтому используем ВМ без доступа в сеть)
 


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