От комментария на Хабре к уязвимости в антивирусе Dr. Web

в 8:10, , рубрики: eop, LPE, антивирус, Блог компании Перспективный мониторинг, информационная безопасность, уязвимость

Относительно недавно на хабре появилась статья «Стилер паролей в антивирусном ПО Avira Free Antivirus» от пользователя Veliant. Автор обнаружил, что в стандартной поставке упомянутого антивируса присутствует компонент, который позволяет простым образом извлечь пароли из хранилища браузера Chrome.

В комментариях произошла дискуссия, можно ли считать это уязвимостью. Но меня зацепил один комментарий автора:

нельзя ли это было реализовать например в виде DLL, которая при вызове её API проверяла бы цифровую подпись вызывающей программы?

Дело в том, что буквально перед этим я исследовал несколько программ, которые точно так же полагались на проверку цифровой подписи. И такую проверку было очень легко обойти.

От комментария на Хабре к уязвимости в антивирусе Dr. Web - 1
Цифровая подпись файла соответствует только самому исполняемому файлу, но работающая программа это не только исполняемый файл. Существует несколько способов повлиять на работу программы, не меняя исполняемый файл: можно подменить библиотеки, которые загружаются или сделать инъекцию кода прямо в памяти.

Я посмотрел на профиль автора: «Работает в: Доктор Веб». А что если посмотреть, не используется ли в продуктах этой компании проверка, о которой говорит автор? Я решил посмотреть и, спойлер, нашел уязвимость, которая позволяет повысить свои привилегии до системных пользователю Dr.Web Security Space для Windows.

Разведка

Я не разбираюсь в продуктах Доктор Веб, поэтому взял первое попавшееся, что можно было скачать на сайте — это был Dr.Web Security Space 12 для Windows. При настройках по-умолчанию данный продукт проводит проверку обновлений каждые полчаса. И в механизме обновления была обнаружена уязвимость.

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

Видео эксплуатации

Демонстрация проходит на ОС Windows 10 x64 от пользователя без прав администратора.
0:00-0:12 через консоль Windows показываю, что текущий пользователь не является администратором
0:12-0:24 показываю установленную версию Dr.Web Security Space
0:24-0:29 в папке на рабочем столе находится файл drweb_eop_upd_dll.dll (исходные коды и файл приложены к тикету)
0:29-0:34 показываю, что в папке C:ProgramDataDoctor WebUpdateretc находится 3 файла
0:34-0:47 копирую библиотеку drweb_eop_upd_dll.dll в папке на рабочем столе и один экземпляр называю version.dll, другой — cryptui.dll
0:47-0:56 копирую файл C:Program FilesCommon FilesDoctor WebUpdaterdrwupsrv.exe в папку на рабочем столе, рядом с dll.
0:56-1:00 запускаю скопированный файл

Запускаемый файл drwupsrv.exe из папки на рабочем столе загружает расположенную рядом version.dll. Данная библиотека создает файл C:ProgramDataDoctor WebUpdateretcdrwupsrv.xml.new. На папку C:ProgramData и вглубь у пользователя есть права на создание файлов, поэтому это легальная операция. Если попробовать создать такой файл вручную, то, вероятно, защитные механизмы Dr.Web предотвращают такую операцию. Но в эксплуатации создание файла проходит от имени drwupsrv.exe, что вероятно обходит внутренние проверки и файл создается. Фактически, это обход той самой проверки подписи о которой и идет речь в начале статьи.

1:00-1:22 демонстрирую созданный файл и его содержимое. В общем смысле файл совпадает по содержимому с файлом C:ProgramDataDoctor WebUpdateretcdrwupsrv.xml, но все пути указывают папку на рабочем столе (C:UsersUserDesktopdwtest)
1:22-2:00 ничего не происходит (на этом этапе я ожидаю процесса обновления ПО, который по-умолчанию происходит раз в полчаса и ожидаемое время можно найти в логах)
2:00-2:14 судя по всему, взяв созданный файл конфигурации, обновлятор видит, что в папке C:UsersUserDesktopdwtest нет файлов ПО Dr.Web, начинает туда файлы ПО копировать.

Среди копируемых файлов есть файл dwservice.exe, который запускается в момент обновления от имени пользователя NT AUTHORITYSYSTEM. Данный файл загружает в себя библиотеку cryptui.dll, которая была в папке C:UsersUserDesktopdwtest. Код библиотеки просто запускает интерактивную консоль, которую и видно на экране. Командой whoami убеждаюсь, что получены права системы.

Итог

Отчет об уязвимости был отправлен в Доктор Веб и, вроде бы, разработчики все поправили.

Таймлайн:

15.05.2020 — Обращение в техподдержку с просьбой предоставить security-контакт.
20.05.2020 — Получаю ответ, что можно передать отчет в данном обращении
20.05.2020 — Передаю отчет
14.06.2020 — Получаю ответ, что для 12 версии уязвимость исправлена. Ожидают портирование для версии 11.
07.07.2020 — Разработчики подтверждают, что исправления выпущены.

This article in english.

Автор: Кравец Василий

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js