Следим за жертвой при помощи её антивируса

Дисклеймер сообщает, что пост публикуется в развлекательных целях и содержит моё субъективное мнение, которое ни в коей мере не отражает позицию компании, в которой я работаю. Всё это мой личный, спонтанно возникнувший интерес. Ни на какую глубину исследования не претендую. Такие дела.

Часть 1. Мы просто хотели сфоткаться

Итак, в этот раз начнём немного издалека. Обратим взор на этот опрос на blog.kaspersky.ru. Смотрим предмет опроса и его результаты:

67.94% людей не понимают, зачем им нужно заклеивать веб-камеру. Давайте им объясним.

В эксперименте участвуют два компьютера, которые на самом деле — виртуальные машины в одной локальной сети, подключенной к Интернету:

  • Kali Linux 2017.1, полностью обновлённая на 30.06.2017;
  • Windows 10 Pro, полностью обновлённая на 30.06.2017. Для защиты Windows устанавливаем Kaspersky Total Security, обновляем базы, обеспечиваем ему соединение с Интернетом, подключаемся к KSN, не выключаем и не правим ничего в настройках.

Задача в том, чтобы находясь на linux-машине получить изображение с веб-камеры windows-машины (protip: windows-машина может теоретически принадлежать жертве, а linux-машина — атакующему).

Итак, у нас полностью обновлённая винда и топовый антивирус в максимальной комплектации. Теперь мы решили сфоткаться на вебку. Настоящие пентестеры должны фоткаться только при помощи meterpreter, поэтому запускаем msfvenom на Kali и генерируем себе примитивный пейлод:

Вполне естественно, что антивирус даже не даёт нам его запустить, а ведь просто хотелось сфоткаться. Файл исчезает, едва появившись на жёстком диске, а при попытке скачать его через веб не даётся:

С Kaspersky Total Security солидарны все топовые антивирусы. Если залить этот файл на VirusTotal,  то большая часть из них тут же признает файл вредоносным. Видимо, потому что meterpreter это не совсем софт для фотографирования на веб-камеру, а пейлод, предназначенный для постэксплуатации скомпрометированных машин, способный жить в оперативной памяти, не записывая файлы на жёсткий диск, внедрять DLL, мигрировать из процесса в процесс, очищать системные журналы, скрывая следы присутствия — да и в целом вести себя как очень продвинутый вредонос. Фотографировать беспечного пользователя на вебку — только одна из его функций. Антивирусы его боятся — и вовсе не зря.

Ладно, прогоним несколько итераций полиморфного XOR кодирования при помощи обожаемого индусами энкодера — x86/shikata_ga_nai (им, наверное, просто нравится это произносить).

Но и он спалится. На самом деле, бытует мнение, что старенький msfvenom уже давным-давно не способен сгенерировать пейлод, который бы пережил сканирование и запуск на машине с хорошим, современным антивирусом.  Есть же Veil, ну или те же пейлоды msfvenom’а нужно «дорабатывать напильником», мол, стандартный exe-шник venom’а не узнаёт по PE-заголовкам разве что самый ленивый антивирус и их желательно модифицировать. Но это не наш метод. Продолжаем экспериментировать со стоковым msfvenom. Часть наших файлов будет удаляться сразу, часть — палиться и удаляться уже при запуске.

Через некоторое время получаем то, что нужно. Проверяем файл антивирусом, пропускаем его через репутационную систему KSN — по всем параметрам он устраивает наш Kaspersky Total Security — решение для максимальной защиты. Для тех, кто понимает: пейлод сгенерирован на основе стандартного exe-шника (-f exe > shell.exe), ничего в файле после этого не модифицировалось и не обфусцировалось дополнительно.

Поднимаем хэндлер на Kali и ожидаем соединения с жертвой, тем временем на Windows (беспрепятственно) запускаем наш волшебный файл и вот она сессия.

Инструментом, о котором ещё в 2011-м году писали, что он генерирует слишком узнаваемые для антивирусов исполняемые файлы, был сгенерирован исполняемый файл, успешно прошедший все проверки. Это всё, что следует знать о сигнатурном анализе антивирусов в 2017-м.

Антивирус не подаёт никаких признаков беспокойства. Более того, когда мне потребовалось провести ряд тестов в изолированной сети, то в отсутствие Интернета при запуске файла я увидел следующее:

Выходит, что штатный Windows Defender перед запуском тоже прогоняет наш файл по своим репутационным системам и его также всё устраивает. Имеем дело сразу с двумя защитными программными продуктами (protip: запускайте незнакомые файлы только если Интернет подключен, так ваши антивирусы выкинут меньше предупреждающих окошек и не смогут помешать заражению машины).

Дело за малым — выполняем команду webcam_snap. По идее, meterpreter на заражённой машине сделает снимок с вебки и отправит импровизированному атакующему, но не тут-то было!

Оказывается, что наш шелл — недоверенный процесс! Проверяем, убеждаемся — действительно, недоверенный.

Эх, жаль, процесс-то запущен от имени пользователя и обладает его правами. Повышение привилегий прямо под носом у работающего антивируса ради одной фотки на вебку мы рассматривать не будем. Вот бы был запущен в системе такой процесс, который работал бы с правами пользователя, позволял внедрять в себя вредоносный код и при этом был бы в списке доверенных у Kaspersky Total Security. Да не, звучит невероятно.

Хотя, подождите-ка…

Часть 2. Слишком доверчивый защитник

Отмотаем немного назад. В то место, где Kaspersky Total Security устанавливается на компьютер. Во-первых, впаривать при установке коммерческого продукта Яндекс.Спам? В 2017-м году, серьёзно?

Ну ладно, от него можно отказаться, по крайней мере, на момент написания статьи (сочувствую вам, потомки). Но вот ещё кое-что:

Речь здесь идёт о продукте Лаборатории Касперского — Kaspersky Secure Connection. KSC являет собой ни что иное как обыкновенный коммерческий VPN-сервис с красивым узнаваемым шильдиком на капоте. Он устанавливается совместно с Kaspersky Internet Security и Kasperksy Total Security — топовыми продуктами компании, видимо, как дополнительный элемент решения для максимальной защиты, позволяющий обходить блокировки Роскомнадзора шифровать весь свой трафик. При установке говорится, что его можно будет позже удалить, но ведь мы-то понимаем, что большинство домохозяек этого делать не станут, а часть нет-нет да и привыкнут к простому и понятному OpenVPN-клиенту в симпатичной обёртке. А раз привыкнут — будут платить за подписку. Если мы обратимся к этой теме на forum.kaspersky,com, то увидим, что об этом думают продвинутые пользователи (некоторые даже являются добровольными бета-тестерами новых версий продуктов лаборатории):

— «А зачем вообще мне подсунули и установили какой то Kaspersky Secure Connection, за который оказывается нужно доплачивать чтобы он работал?»

— «Во время теста 2017 версии пользователи предлагали такой вариант [имеется в виду добавить в инсталляторе галку, позволяющую отказаться от установки KSC],но видимо в итоге в ЛК решили иначе,маркетинг.»

— «В 2017 много приходится отключать, по сравнению с 2016. В 2018 будет ещё больше ненужного.»

Хоть я и согласен с тем, что так дела не делаются, но маркетологов, в принципе, тоже можно понять. Нужно расширяться и продавать сопутствующие антивирусу продукты Лаборатории. Но чего я не понимаю, так это когда маркетинг затмевает здравый смысл. В российском IT-секторе за примерами не надо даже заворачивать за угол. И, похоже, в этот раз мы имеем дело именно с таким случаем.

Вернёмся к списку запущенных на машине процессов и увидим там ksdeui.exe. Это графическая оболочка KSC и она отвечает всем требованиям, выдвинутым мной в конце первой части этого поста:

  • Запущена с правами текущего пользователя;
  • Позволяет внедрение вредоносного кода в свой процесс;
  • Находится в списке доверенных у Kaspersky Total Security.

Попытаемся продемонстрировать это наглядно. Отдаём meterpreter’у команду на миграцию в процесс ksdeui.exe. Поскольку этот продукт не является непосредственно частью решения для максимальной защиты Kaspersky Total Security, то его безопасности не уделяется, похоже, вообще никакого внимания. Наш шелл легко внедряет свой код в данный процесс и теперь мы можем действовать от его имени.

Программа для создания VPN-туннелей мило общается с хостом в локальной сети. Мелкими периодическими пакетами. Ничего подозрительного, ведь она доверенная. Сделаем, наконец, снимок с вебки (на скриншоте Kaspersky Internet Security, впоследствии все проверки были воспроизведены с Kaspersky Total Security на борту):

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

Если бы Вы, сидя за своим домашним компьютером, вдруг увидели, что за Вами через веб-камеру наблюдает Kaspersky Secure Connection, какова бы была Ваша первая мысль? Хитро закодированный, живущий в системной памяти шелл-код притворился частью комплекта поставки антивируса? Или Вы бы, скорее, подумали, что Лаборатория просто собирает Ваши личные данные, пользуясь высокими привилегиями на Вашем компьютере? Одно только это способно нанести вред репутации компании, но мы пойдём дальше.

Предположим, Вы сидите за компьютером и словно из ниоткуда появляется окно с таким вот содержанием:

Какая-то левая программа. Без обозначений. Предлагает куда-то перейти и прикидывается, будто она имеет отношение к Kaspersky Lab, так?

Окей, слегка изменим контекст ситуации. А что Вы скажете теперь?

Более убедительно выглядит это окошко, когда оно запущено от имени легитимного процесса и словно говорит голосом продукта Лаборатории? Так-то (protip: из вложений — 13 евро в год на домен). И да, мне лень было возиться с иконкой в углу окошка.

Антивирус тащит за собой при установке кучу мусора,  части из которого он безукоснительно доверяет, тем самым подвергая угрозе конечного пользователя и рискуя собственной репутацией ради денег. Это всё, что следует знать о заботе антивирусных вендоров по отношению к своим клиентам в 2017-м.

Особо внимательные могли заметить, что в списке процессов имеется ещё и avpui.exe, который, с виду тоже похож на подходящий. Но нет, этот процесс отвечает за графическую оболочку самого антивируса и его память качественно защищается от внедрения постороннего кода. Попытка миграции проваливается. Так почему бы не уделять такое же пристальное внимание безопасности всего, что устанавливается на компьютер пользователя и не позволяет отказаться от себя на этапе установки? Похоже, здесь действительно победил маркетинг, но по мне — цена великовата.

Итак, просуммируем всё, что мы сегодня узнали. Устанавливая наиболее продвинутые решения Лаборатории Касперского для персональных компьютеров Вы получаете в нагрузку программное обеспечение, от которого на этапе инсталляции отказаться нельзя, а потом — лень. При этом данный программный продукт не защищён должным образом и открывает уникальные векторы атаки на пользователей антивирусов Лаборатории, позволяя скрываться под видом доверенного процесса и даже совершать правдоподобный фишинг. Если антивирус пропустит пейлод, сгенерированный инструментом семилетней давности (а он пропустит), то злоумышленник без труда прикинется доверенным процессом и получит возможность творить локальные бесчинства.

Часть 3. Реабилитация

Я решил проверить, что нужно такого сделать, чтобы Kaspersky Total Security вдруг осознал, что доверенный процесс заражён. Итак, чтобы вы понимали, список действий, которые я успел совершить, прежде чем спалиться:

  • Миграция в ksdeui.exe. Теперь я доверенный процесс;
  • Многочисленные попытки миграции в процессы самого антивируса, такие как avp.exe и avpui.exe. Попытки миграции неуспешны, но подозрительными, видимо, не являются;
  • Запуск клавиатурного перехватчика. После этого я переключился на заражённую машину и пощёлкал по клавишам, находясь в различных контекстах (браузер, блокнот и т.п.). Остановка клавиатурного перехватчика;
  • Несколько попыток повышения привилегий при помощи getsystem. Привилегии не повышены, но и присутствие не обнаружено;
  • Запуск потоковой трансляции с вебкамеры на машину атакующего. Процесс для создания VPN-туннелей гонит трафик на хост в локальной сети. Странно? Нет, нисколько;
  • Извлечение impersonation token’а, выполнено по отношению к процессам антивируса. Завершилось успешно с avpui.exe;
  • Несколько попыток запуска killav, который попытался убить процесс avp.exe. Конечно же, не удалось, но и странным никому не показалось;
  • Миграция в процесс explorer.exe, сразу после этого миграция обратно в ksdeui.exe;
  • Попытки удалить несколько веток реестра;
  • Задание привилегий SeChangeNotifyPrivilege, SeIncreaseWorkingSetPrivilege, SeShutdownPrivilege, SeTimeZonePrivilege и SeUndockPrivilege текущему процессу;
  • Ещё несколько попыток убить avp.exe и другие процессы антивируса вручную;
  • Повторный запуск трансляции с вебкамеры;

Наконец, он что-то начал подозревать.

Антивирус позволяет процессу, которому он из коробки доверяет, беспрепятсвенно носиться по операционной системе, как по посудной лавке. Это всё, что следует знать об эвристическом анализе антивирусов в 2017-м.

Окей, выбираем лечение с перезагрузкой. После перезагрузки нас приглашают в мастер восстановления после заражений.

Соглашаемся на поиск повреждений, нанесённых вероломной атакой. Список повреждений впечатляет. Больше похоже на устранение очевидных косяков, которые завалялись в системе после установки. Ничего из этого не релевантно случившемуся.

Наконец, можно выдохнуть. Система снова в полной безопасности.

Подождите-ка…

И да, у статьи появилось продолжение.

Следим за жертвой при помощи её антивируса: 5 комментариев

    1. Не нашёл в тексте ничего, что приписывало бы название индусам. Я всего лишь имел в виду, что в своих гайдах на ютубе они всегда энкодят пейлод таким образом, хотя он уже явно не настолько хорош. По всей видимости, им просто нравится, как это произносится.

    1. Когда это импровизированное исследование началось, я тоже так считал. Оказалось, что я переоценивал современные антивирусы.

      Более того, на одном из пентестов пейлод, собранный при помощи Veil 3.0, был схвачен антивирусом BitDefender. После этого я взял пейлод, сгенерированный msfvenom для исследования, описанного в этой статье, и BitDefender радостно его пропустил.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *