понедельник, 25 ноября 2019 г.

Обход Kaspersky Endpoint и его песочницы (практический случай тестирования на проникновение).


Введение.

Kaspersky один из лидеров анти-вирусного ПО, более 400 миллионов пользователей используют данных продукт, но вредоносные атаки все еще существуют и могут обходит технологии данного ПО. В этой статье я продемонстрирую как я обошел корпоративную версию антивируса Касперского вместе с их облачной песочницей, пока я проводил тестирование на проникновении компании.

Стратегия антивируса.

Большинство антивирусных продуктов используют хэши сигнатур как первичный признак детектирования известных зловредов после чего они начинают проводить статический анализ подозреваемого файла, на этой фазе антивирус ищет (но не ограничивается) следующим:
  1. Любые подозрительные секции в заголовках PE (exe, dll, sys). Под подозрительным я имею ввиду секцию с большим виртуальным размером, но при этом нулевым размером на жестком диске указывающий на то, что в памяти происходит процесс распаковки. Так же если секция имеет разрешение на чтение и исполнение.
  2. Любые подозрительные импорты: такие как динамическая загрузка, импорт модулей регистрации ключей, импорт модулей шифрования, импорт функций анти-дебагинга и т.п.
  3. Подозрительные ресурсы: если исполняемый файл использует вредоносные ресурсы.
  4. Обнаружение шифрованных действий внутри исполняемого файла используемого для внесения энтропии для каждой секции.
  5. Обнаружении известных действий внутри исполняемого файла и известных вредоносных техник бэкдоров.
Следует иметь ввиду, что даже если антивирус обнаружил один из этих индикаторов, это не значит, что файл действительно вредоносный. Антивирус собирает индикаторы и добавляет их в виде точек, пока не достигнет предельного порога, после чего он может сообщить, что это вредоносный файл. Вот почему оценки файла по простому статическому анализу недостаточен, вот здесь и начинают свою работу динамический анализ и песочница.
Динамический анализ может быть выполнен аналитиками по безопасности вредоносного ПО или автоматизирован с использованием песочниц, чтобы углубиться и понять признаки, отличающие поведение и взаимодействие вредоносного ПО. Во время динамического анализа вредоносные программы начинают раскрывать своё назначение и распаковывают или дешифруют сохраненную внутри зашифрованную нагрузку, что облегчает анализ, чем анализ упакованного кода. Как правило на этом этапе собирают следующую информацию:
  1. Доступ к файлам, модификации и создание новых файлов.
  2. Доступ к реестру, модификация и создание новых ключей.
  3. Сетевая активность, доступ в интернет или создание новых сервисов, ожидающих входящие соединения.
  4. Выгрузка памяти для поиска процесса внедрения известных вредоносных программ после распаковки.
  5. Запросы доменных имен во время выполнения.
  6. Запуск легитимных программ, таких как cmd.exe или powershell.

Обход Kaspersky endpoint и онлайн песочницы.

После того как мы поняли как работает антивирус и песочница мы должны обойти процесс обнаружения, выполняя наименее подозрительные действия, чтобы минимизировать вероятность достижения порога обнаружения. Ниже будет описание того, как я это сделал, используя инструменты с открытым исходным кодом и немного программирования.
Тестируя сайт заказчика я обнаружил уязвимость позволяющую через форму загрузки фотографий профиля загрузить любой файл на сервер (Windows server 2012r2), но АВ Касперского удалял asp скрипты которые я пытался загрузить, но забавно то, что я обошел обнаружение удалив некоторые строки из сценария и это сработало, вы можете посмотреть на данную версию веб-шелла здесь: https://github.com/ahmedkhlief/Scripts/blob/master/shell.aspx
Затем я через загруженный шелл выполнил команду с правами пользователя:
https://shells.systems/wp-content/uploads/2019/04/webshell.png
Я загрузил инструменты для пост-эксплуатации, которые обычно используются сетевыми администраторами, поэтому они не помечены как вредоносные, такие как: nc.exe, nmap, 7zip.
Я использовал netcat для второго шага к получению административных прав:
nc -lvp 9898 #На сервере хостинга сайта AWS, чтобы получить доступ со своего сервера.
https://shells.systems/wp-content/uploads/2019/04/netcat.png
Проведя анализ системы я обнаружил, что операционная система обновлена до последних исправлений, поэтому я не могу использовать локальные эксплойты повышения привилегий, что не дает мне выбора как запустить meterpreter. Я попытался загрузить payload meterpreter используя известные упаковщики такие как: Veil-evasion , vm-protect и shellter, все они были обнаружены АВ Касперского, поэтому я решил разработать собственную методику обхода описанную ниже (я не использовал никакие дополнительные методы):
  1. Создал сервер управления на AWS, установив Metasploit и настроив взаимодействие с удаленной консолью meterpreter (используйте HTTPS для обхода возможной проверки пакетов).
  2. Создал чистый payload windows/meterpreter/reverse_https
Первой попыткой было:
  1. Закодировать payload с помощью XOR одним байтом, используя скрипт python
  2. Сохранить закодированный файл в программе на С, которая декодирует payload, чтобы статический анализ не обнаружил payload
Результат был непредсказуем, так как я получил соединение с правами администратора, я был очень счастлив, но не долго, я понял, что нахожусь в песочнице windows 7 от АВ Касперского.
https://shells.systems/wp-content/uploads/2019/04/Screenshot-from-2018-11-01-12-28-46.png
Второй попыткой было:
  1. ­Закодировать payload с помощью XOR одним байтом, используя скрипт python
  2. Сохранить закодированный файл в программе на С, которая декодирует payload, чтобы статический анализ не обнаружил payload
  3. Внедрить вредоносный код в легитимный исполняемый файл firefox
  4. Загрузить данную версию firefox
  5. Создать новый процесс для запуска firefox
  6. После запуска firefox встроенный код декодирует payload и запустит его
  7. Это запутает песочницу, так как в Firefox доверенная программа с большим количеством легитимных индикаторов, а соединения и всё, что с ним уже сделано так же уже занесено в белый список, поэтому песочница пометит весь загрузчик вредоносной программы как нормальный
Здесь представлен код позволяющий объединить вредонос с firefox: https://github.com/ahmedkhlief/Scripts/blob/master/embded.cpp

https://shells.systems/wp-content/uploads/2019/04/meterpreter.png

Теперь, после того как я получил доступ meterpreter с пользовательскими правами я использовал технику инкогнито, чтобы получить доступ к системе. Методика объясняется здесь: https://www.offensive-security.com/metasploit-unleashed/fun-incognito/
https://shells.systems/wp-content/uploads/2019/04/list-tokens.png
Используя системный доступ я добавил нового пользователя с административными привилегиями, вошел с помощью удаленного рабочего стола и отключи АВ Касперского:
https://shells.systems/wp-content/uploads/2019/04/Screenshot-from-2018-11-12-12-29-31.png

Оригинал: https://shells.systems/bypassing-kaspersky-endpoint-and-cloud-sandbox-real-world-pentest-case/

Комментариев нет:

Отправить комментарий