Содержание статьи
info
Эта статья — продолжение цикла публикаций, посвященных постэксплуатации. В предыдущих сериях:
Наверняка тебе знакома ситуация, когда доступ к атакуемой сети получен и до цели остался один шаг. Но антивирус не дает выполнить нужное действие, запустить ту или иную программу. В моей практике были случаи, когда имелась лишь одна попытка, которая проваливалась из‑за поднятой антивирусом тревоги. Антивирусы иногда могут удалить и совсем безобидные файлы, причем не только исполняемые. Поэтому скрыть настоящую угрозу — крайне непростая задача.
warning
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный с использованием информации из данной статьи.
Вообще, задача обхода антивируса может возникнуть в двух случаях:
- при атаке. Тут полезную нагрузку запускает либо уязвимое приложение, либо, что чаще, пользователь (социальная инженерия). Главным образом это будет некое средство закрепления и обеспечения постоянного присутствия. Самое важное — не спалиться;
- при постэксплуатации. В этом случае мы сами запускаем программу на скомпрометированной системе. Это может быть сниффер, средство повышения привилегий или просто какой‑то хакерский софт, используемый для продвижения по сети. И при этом для нас важнее запустить программу, даже если это получилось не с первой попытки и антивирус выкинул несколько алертов.
В первом случае достаточно лишь применить известную технику — полиморфизм. Изменяем код, не меняя его функциональность. Хорошая тактика — написать код самому. Например, с помощью двадцати строк кода на VBS можно реализовать простой reverse shell и успешно обойти любой антивирус. Нас же больше будет интересовать второй случай, и именно это и будет темой данной статьи.
Многие полезные инструменты для обхода антивируса можно сделать с помощью того же Meterpreter, но для начала его следует как минимум запустить. В каждом рассматриваемом способе именно запуск Meterpreter и будет для нас конечной целью. Ведь данное средство обладает всеми необходимыми возможностями, а при желании может использоваться и для запуска другого специализированного ПО прямо в оперативной памяти. А все, что происходит в оперативной памяти, почти недостижимо для средств защиты, поскольку детальный и постоянный анализ памяти влечет за собой колоссальные накладные расходы, на которые антивирусы пойти не могут.
Для того чтобы эффективно обойти антивирус, нам потребуется мыслить как антивирус, пытаться предугадать его логику. Антивирус для нас, безусловно, будет черным ящиком. Мы не знаем в подробностях, как он устроен, но, опираясь на его поведение в разных ситуациях, можем заключить, что он тщательно отслеживает источник загрузки исполняемого файла, а также следит, запускался ли он до этого, и если запускался, то сколько раз. Повторные запуски будут происходить уже под меньшим «надзором».
По большому счету мы имеем дело с двумя механизмами защиты:
- сигнатурным;
- эвристическим (поведенческим).
При сигнатурном анализе антивирус учитывает множество факторов, в частности большое влияние на результат оказывает компилятор. Вот достаточно забавные результаты VirusTotal для безобидного helloworld-приложения, написанного на С:
- i686-w64-mingw32-gcc — 11/68 детектов;
- msvc — 2/64 детекта;
- win-gcc — 0 детектов.
Что же касается анализа поведения программы, тут нужно понимать, что, даже если тебе удалось обойти сигнатуры, ты все еще можешь спалиться, поскольку всякий migrate PID или sekurlsa::
может быть перехвачен по причине использования характерных сочетаний WinAPI-функций, которые антивирусы очень внимательно мониторят.
Я предлагаю сосредоточиться именно на сигнатурном движке, обхода которого для большинства случаев достаточно. В статье не будет прямых упоминаний конкретных названий антивирусов, чтобы не создавать никому рекламы или антирекламы. В то же время мы не станем «затачиваться» под конкретный антивирус. Результаты будем проверять именно на работающем антивирусе, при этом попробуем использовать некий универсальный способ, чтобы каждый раз не придумывать все новые методы обхода. В каждом случае целью будет тайком протащить на скомпрометированную машину Meterpreter, который позволит нам исполнить в памяти что угодно, запустить весь имеющийся в нашем распоряжении хакерский арсенал.
Legal
Лучший бой — это тот, которого удалось избежать. Поэтому в борьбе с антивирусами часто используются легальные средства. Да, они не могут предоставить многие «продвинутые штуки», но необходимый минимум в виде reverse shell при persistence и lateral movement, а также встроенный прокси‑сервер и гибкую систему редиректа трафика при pivoting они реализовать могут. И это замечательные, всем известные утилиты — nc.exe, ncat.exe, socat.exe, plink.exe. Примеры их использования были описаны в моих прошлых статьях. Блеки же и вовсе порою используют обычные средства облачного удаленного администрирования вроде RMS.
Если же в скомпрометированной системе требуется развернуть целый «плацдарм» в виде Metasploit и аналогичных хакерских тулз, то можно укрыться за виртуализацией. Пошаговый гайд описан еще в одной моей статье.
Shellcode injecting
Техника встраивания кода в уже запущенные, а значит, прошедшие проверку процессы широко известна. Идея состоит в том, что мы имеем отдельную программу shellcode_inject.
и сам shellcode в разных файлах. Антивирусу сложнее распознать угрозу, если она раскидана по нескольким файлам, тем более по отдельности эти файлы не представляют угрозы.
В свою очередь, наш shellcode выглядит еще более безобидно, если мы преобразуем его в печатные символы.
Глядя на содержимое meter.
, я бы скорее решил, что это строка в Base64, чем шелл‑код.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»