ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Использование этих инструментов и методов против хостов, для которых у вас нет явного разрешения на тестирование, является незаконным. Вы несете ответственность за любые последствия, к которым может привести использование этих инструментов и методов.Антивирусные системы и Windows Defender используют сочетание сигнатурного и поведенческого обнаружения, а также современные решения на основе ИИ для выявления и блокировки вредоносного ПО или попыток подключения к C2-серверу. Как правило, сигнатурное обнаружение проще всего обойти, однако злоумышленникам сложнее преодолеть анализ, выполняемый на хосте в процессе исполнения скрипта, например, с использованием AMSI. Я обнаружил интересный инструмент под названием Villain и решил найти способ использовать его для обхода современных антивирусных решений или, как минимум, актуальной версии Windows Defender, который ориентирован на выявление угроз в реальном времени.
Villain
представляет собой C2-фреймворк, способный работать с несколькими TCP-сокетами и обратными соединениями на базе HoaxShell, а также расширять их функциональность. Этот фреймворк крайне прост в использовании: просто создайте полезную нагрузку и вставьте её на целевой системе — он даже автоматически запускает прослушиватели! Однако при включенном Windows Defender вы заметите, что стандартная мгновенно помечается как вредоносный.
Неудачная первоначальная обратная оболочка
Я решил исследовать техники обфускации и нашел следующий ресурс от того же автора: - Сборник техник, примеров и небольшое количество теоретических основ для ручной обфускации PowerShell-скриптов.
Для изменения сигнатуры я сначала проделал несколько действий:
- Вставил случайные комментарии и пробелы в скрипт
- Создал переменные с произвольными именами, закодированными в шестнадцатеричном формате
- Добавил случайные кавычки внутри iex и pwd
Ещё неудачная попытка с обратной оболочкой
Ничего из этого не сработало. Примерно 9 месяцев назад, в 2023 году, можно было просто изменить определенные части скрипта, такие как замена iex на i''e''x или изменение стандартных имен переменных, например, $data на $3e59da34d2. Но в 2024 году создание незаметного вредоносного ПО требует определенных проб и ошибок.
Затем я решил попробовать разбить аргументы команд, чтобы определить момент, когда антивирус обнаруживает их как вредоносные. Я выяснил, что разделение первой переменной, которая создает TCPClient-сокет с хостом атакующего, от остальной части скрипта не вызвало срабатываний, и я получил оболочку на Villain.
Успешная попытка
Перехват обратной оболочки через Villain
Теперь мне нужно было объединить обе части PowerShell-скрипта для Villain таким образом, чтобы они выполнялись по отдельности, но при этом запускались вместе. Я решил использовать технику Get-Command с подстановочными знаками, упомянутую в вышеуказанном ресурсе. Оператор & запускает команды в виде задач (jobs). По сути, он извлекает саму строку из указанного URI (в данном случае наши скрипты) и затем выполняет эту строку (команду) с помощью Invoke-Expression, также использующего подстановочный знак для обхода детекта. Два Get-Command выглядят необычно таким образом, чтобы уменьшить энтропию по Шеннону, которая в противном случае могла бы быть слишком высокой и привести к срабатыванию антивируса:
PowerShell-скрипт для загрузки и выполнения двух PS-скриптов с хоста атакующего
Для выполнения этого на хосте под управлением Windows из командной строки мне нужно было выполнить несколько действий:
1. Я создал два PS-скрипта под названиями stage1.ps1 и stage2.ps1, которые содержат первую и вторую части PS-скрипта Villain, соответственно (я добавил другие методы обфускации для демонстрации концепции, хотя это и не обязательно). Эти скрипты будут выполняться на целевом хосте с IP-адресом 10.0.2.5.
2. Разместить эти скрипты на веб-сервере на моем атакующем хосте с IP-адресом 10.0.2.9 (через незаблокированный порт, например, 80 или 443), чтобы передать их жертве.
Подождите — это здорово, но я хочу получить shell, заставив пользователя скачать или открыть что-то неприметное. Для этого я использовал Invoke-PS2EXE на своем Windows-хосте, чтобы преобразовать два скрипта PowerShell выше в исполняемый файл Windows, а затем использовал WinRAR, чтобы заставить его выглядеть как обычный исполняемый файл Chrome (это будет другая публикация, если вы не знаете, как это сделать).
Конвертирование .ps в EXE
Фальшивый Chrome с обратным шеллом против настоящего Chrome
Одна из вещей, которую я заметил, — это то, что когда пользователь открывал зараженный исполняемый файл Chrome, появлялось окно командной строки, которое пользователь мог легко закрыть и прекратить мою сессию shell. Чтобы обойти это, я упаковал простой скрипт VBS с вредоносным исполняемым файлом и чистым браузером Chrome (в WinRaR), который просто запускал вредоносный исполняемый файл без появления окна — не давая пользователю возможности остановить наш shell
Скрипт VBS, который запускает вредоносный исполняемый файл
Теперь остается только использовать социальную инженерию, чтобы заставить пользователя скачать этот, на первый взгляд, безвредный исполняемый файл или разместить его там самим с уже существующим доступом. На машине жертвы активирован Windows Defender.
Post automatically merged:
Продолжение следует..