Деактивация защитных приложений без авторизации

Деактивация защитных приложений без авторизации

Как обойти парольную аутентификацию, используемую для выгрузки приложения Kaspersky Endpoint Security 10 и других подобных продуктов в ОС  Windows, от имени пользователя с ограниченными правами.

Авторы: Matthias Deeg, Sven Freund
Как обойти парольную аутентификацию, используемую для выгрузки приложения Kaspersky Endpoint Security 10 и других подобных продуктов в ОС  Windows, от имени пользователя с ограниченными правами.
Введение
В основном, защитное программное обеспечение используется как одно из средств для повышения устойчивости IT-систем (как клиентов, так серверных систем) к различным угрозам. Типичные функции подобных приложений могут включать в себя антивирус, детектирование неизвестных вредоносов, механизмы управления устройствами и программами и/или фаервол.

Рисунок 1: Защита паролем в приложении Kaspersky Endpoint Security 10
Обычно подобное программное обеспечение защищено паролем в целях ограничения доступа к панели управления, которая предназначена для изменения настроек или деактивации защитных функций, только определенным пользователям. Эта защита уменьшает риск несанкционированных или непреднамеренных изменений в части функционала. Кроме того, ограничение административного доступа – в целом хорошая идея. Особенно когда дело касается безопасности (принцип наименьших привилегий).  
Для того чтобы получить доступ для управления настройками безопасности, обычно требуется пароль (если быть более точным, то аутентификация при помощи пароля). В некоторых ситуациях подобная аутентификация может быть полезна для сотрудников IT-поддержки. Но если парольная аутентификация реализована неправильно, злоумышленник или вредонос, используя учетную запись с низкими привилегиями, сможет поменять настройки безопасности или деактивировать защиту полностью без знания пароля.
В 2012 году компания SySS GmbH уже публиковала пример уязвимости, связанной с обходом аутентификации в приложении Trend Micro OfficeScan [1] (см. раздел Ссылки). Однако этот тип уязвимостей до сих пор присутствует в приложениях, предназначенных для защиты рабочих станций. Мы ставили перед собой задачу – повторно привлечь внимание к этой проблеме.
В данной статье будет показано, как нарушение принципов безопасности может привести к уязвимостям, связанным с обходом аутентификации, которые были найдены в 2015 году в свежих версиях программных продуктов, предназначенных для защиты рабочих станций, от различных компаний. Обо всех упоминаемых брешах было сообщено компаниям-разработчикам согласно нашей политике распространения секретной информации [2]. Кроме того, данные уязвимости описывались в публичных бюллетенях [3-19] и обсуждались на конференции DeepSec в ноябре 2015 года [20].
Анализ уровня безопасности
Во время оценки уровня безопасности специалисты компании SySS GmbH проанализировали систему на базе ОС Windows под защитой при помощи приложения Kaspersky Endpoint Security 10, в котором предусмотрен пароль для доступа к панели управления (см. Рисунок 1).
Если парольная защита в KES 10 активирована, все защищенные операции могут быть выполнены либо через интерфейс, либо через командную строку при помощи утилиты avp.exe, если корректный пароль известен.
При использовании утилиты avp.exe и не указании требуемого пароля в качестве аргумента, появляется сообщение о вводе пароля.

Рисунок 2: Сообщение о вводе пароля в командной строке утилиты avp.exe
Анализируя парольную аутентификацию для выгрузки KES 10 (команда EXIT), специалисты компании SySS GmbH выяснили, что сравнение паролей происходит внутри процесса avp.exe, который запускается или может быть запущен в контексте текущего пользователя даже с ограниченными правами. Сей факт способствует дальнейшему анализу и, кроме того, манипуляции с проверкой пароля во время работы приложения в контексте с ограниченными правами, поскольку каждый пользователь способен отлаживать и манипулировать процессами, запущенными под своим именем.
На Рисунках 3 и 4 (см. ниже) в отладчике OllyDbg [21] показан код, отвечающий за сравнение хеша MD5 для введенного пароля с хешем MD5 для корректного пароля.

Рисунок 3: Сравнение паролей внутри процесса avp.exe
Для того чтобы обойти парольную аутентификацию, злоумышленнику нужно изменить проверку так, чтобы всегда по результатам всегда возвращалось значение true. Подобное можно реализовать посредством сравнения корректного пароля с самим собой или посредством модификации алгоритма проверки.
Причина присутствия данной уязвимости – нарушение базовых принципов безопасности. Сравнение паролей происходит внутри процесса, запущенного от имени пользователя с низкими привилегиями, вместо более достоверной и высоко привилегированной среды внутри служебного процесса, который недоступен из контекста пользователя с ограниченными правами. Рисунок 5 иллюстрирует проблему в системе безопасности.
В случае с KES 10 хеши MD5 являются несолеными с использованием пароля, закодированного в UTF-16LE и без завершающего пустого байта. В Листинге 1 (см. ниже) приведен пример для пароля syss.

Рисунок 4: Участок кода, где происходит сравнение паролей в KES 10
Как показано на Рисунке 6, также возможно извлечение хеша MD5 у корректного пароля из памяти процесса avp.exe, запущенного в контексте пользователя с ограниченными правами.
Использование односторонней хеш-функции MD5 без соления позволяет злоумышленнику, получившему доступ к хешу, выполнить высокоэффективную атаку при помощи заранее сформированных словарей (например, радужных таблиц) для того, чтобы вычислить пароль.
$ echo -en "s\x00y\x00s\x00s\x00" | md5sum
cfb37e7c04bea837d23005199b1cd62b –

Листинг 1: Несоленый MD5 хеш

Рисунок 5: Причина уязвимостей, связанных с обходом аутентификации

Другой способ получения доступа к хешу MD5 корректного пароля под пользователем с ограниченными правами – просто считать следующий ключ из реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\KasperskyLab\ protected\KSES10\settings\OPEP
По умолчанию этот ключ доступен для чтения каждому пользователю. Таким образом, существует два способа получения к плохо защищенному хешу из контекста пользователя с ограниченными правами.

Рисунок 6: Хеши MD5, используемые во время аутентификации

Рисунок 7: Ключ, содержащий хеш MD5 корректного пароля
Другие программные комплексы, содержащие уязвимости
Помимо приложения Kaspersky Endpoint Security 10 под ОС Windows специалисты компании SySS GmbH проанализировали другие аналогичные продукты на примет присутствия брешей, связанных с обходом аутентификации.
В Таблице 1 показаны все приложения, предназначенные для защиты рабочих станций, которые также уязвимы к атакам, связанным с обходом аутентификации, и защищают информацию о пароле неудовлетворительным образом.


Продукт

Протестированная версия

BullGuard Antivirus

15.0.297

BullGuard Premium Protection

15.0.297

BullGuard Internet Security

15.0.297

Kaspersky Anti-Virus (KAV)

6.0.4.1611, 15.0.1.415

Kaspersky Endpoint Security for Windows (KES)

8.1.0.1042, 10.2.1.23, 10.2.2.10535

Kaspersky Internet Security (KIS)

15.0.2.361

Kaspersky Small Office Security (KSOS)

13.0.4.233

Kaspersky Total Security (KTS)

15.0.1.415

Panda Antivirus Pro 2015

15.1.0

Panda Global Protection 2015

15.1.0

Panda Gold Protection 2015

15.1.0

Panda Internet Security 2015

15.0.1

Таблица 1: Программные комплексы, предназначенные для защиты рабочих станций
Практическая реализация
Специалисты компании SySS GmbH разработали несколько экспериментальных утилит для деактивации защитных программных комплексов без авторизации.
Один из примеров – утилита UnloadKES. Данное приложение представляет собой простой загрузчик с функционалом, позволяющим патчить исполняемые файлы. Алгоритм работы следующий:

  • Находим исполняемый файл avp.exe.
  • Создаем новый экземпляр процесса avp.exe с аргументом в командной строке, инициирующий запуск функции EXIT.
  • Изменяем логику алгоритма, связанного с парольной аутентификацией, в созданной копии процесса avp.exe так, чтобы все пароли были корректны.
  • Останавливаем отладку процесса и продолжаем его выполнение.

Результаты работы утилиты UnloadKES, показаны в Листинге 2 (см. ниже), свидетельствуют о том, что деактивация комплекса Kaspersky Endpoint Security для ОС Windows прошла успешно. В случае с приложениями Panda Security и BullGuard Ltd. соответствующие утилиты (UnloadPanda и UnloadBullguard) позволяют не только деактивировать защиту без авторизации, но и извлечь корректный пароль в чистом виде (см. ниже Листинг 3 и 4).
Выводы и рекомендации
Наше исследование показывает, что в 2015 году продукты, предназначенные для защиты рабочих станций, все еще можно деактивировать без авторизации из контекста пользователя или вредоноса с ограниченными правами при помощи уязвимостей, связанных с обходом аутентификации. Причина заключается в том, что задачи, имеющие отношение к безопасности (например, аутентификация) вместо того, чтобы выполняться в надежной среде, которая не доступна обычным пользователям, выполняются в контексте с ограниченными правами, что дает возможности для манипуляций с нежелательными последствиями.
Проблемами в безопасности, наподобие уязвимостей, связанных с обходом аутентификации, касающиеся локальных атак на несетевые программные функции, и неудовлетворительной защитой учетных записей, не следует пренебрегать, поскольку в некоторых случаях, данные функции могут превратиться из средств защиты в средства успешного компрометирования системы.
Чтобы предотвратить подобные проблемы, компания SySS GmbH рекомендует следующее:

  • Обращайте особое внимание на достоверность в контексте IT-безопасности:
    • Достоверные области (домены).
    • Достоверные границы.
    • Достоверные взаимоотношения.
  • Выполняйте задачи, связанные с безопасностью, в более достоверных средах.
  • Не делайте слишком много допущений.
  • Правильно защищайте информацию о паролях:
    • Разрешайте доступ к парольной информации только для определенных пользователей.
    • Используйте криптографически безопасные алгоритмы с правильными настройками (например, PBKDF2).
  • Придерживайтесь принципа наименьших привилегий.

>UnloadKES.exe
____________________________________________________________
/ _____ _____ _____ \
/ / ___| / ___/ ___| \
| \ `--. _ _\ `--.\ `--. |
| `--. \ | | |`--. \`--. \ |
| /\__/ / |_| /\__/ /\__/ / |
\ \____/ \__, \____/\____/ ... unloads KES! /
\ __/ | /
/ |___/ _________________________________________/
/ _________________/
(__) /_/
(oo)
/------\/
/ |____||
* || ||
^^ ^^
SySS Unload KES v1.0 by Sven Freund & Matthias Deeg - SySS GmbH (c) 2015
[+] Found location of the executable file avp.exe
[+] Created new instance of the Kaspersky Endpoint Security process avp.exe
[+] The Kaspersky Endpoint Security process was patched successfully.
Kaspersky Endpoint Security will now exit without a password.
Листинг 2: Успешная деактивация KES 10 при помощи утилиты UnloadKES
Ссылки
[1] Deeg, Matthias/Schreiber, Sebastian: Case Study: Deactivating Endpoint Protection Software in an
Unauthorized Manner, https://www.syss.de/fileadmin/dokumente/Publikationen/2012/S
ySS_2012_Deeg_Case_Study_-_Deactivating_Endpoint_Protection_Software_in_an
_Unauthorized_Manner.pdf

[2] SySS Responsible Disclosure Policy, https://www.syss.de/fileadmin/dokumente/Publikat
ionen/2016/SySS_Responsible_Disclosure_Policy.pdf

[3] Freund, Sven/Deeg, Matthias: SySS Security Advisory SYSS-2015-001, https://www.syss.de/file
admin/dokumente/Publikationen/Advisories/SYSS-2015-001.txt

[4] Freund, Sven/Deeg, Matthias: SySS Security Advisory SYSS-2015-002, https://www.syss.de/file
admin/dokumente/Publikationen/Advisories/SYSS-2015-002.txt

[5] Deeg, Matthias/Freund, Sven: SySS Security Advisory SYSS-2015-003, https://www.syss.de/file
admin/dokumente/Publikationen/Advisories/SYSS-2015-003.txt

[6] Deeg, Matthias/Freund, Sven: SySS Security Advisory SYSS-2015-004, https://www.syss.de/file
admin/dokumente/Publikationen/Advisories/SYSS-2015-004.txt

[7] Deeg, Matthias/Freund, Sven: SySS Security Advisory SYSS-2015-005, https://www.syss.de/file
admin/dokumente/Publikationen/Advisories/SYSS-2015-005.txt

>UnloadPanda.exe
____________________________________________________________
/ _____ _____ _____ \
/ / ___| / ___/ ___| \
| \ `--. _ _\ `--.\ `--. |
| `--. \ | | |`--. \`--. \ |
| /\__/ / |_| /\__/ /\__/ / |
\ \____/ \__, \____/\____/ ... unloads Panda! /
\ __/ | /
/ |___/ _________________________________________/
/ _________________/
(__) /_/
(oo)
/------\/
/ |____||
* || ||
^^ ^^
SySS Unload Panda Protection v1.0 by Matthias Deeg - SySS GmbH (c) 2015
[+] The Panda process was patched successfully.
Now you can unload the Panda protection with an arbitrary password.
After entering an arbitrary password, the correct one will be shown.
[+] The correct password is: s3cret1!

Листинг 3: Успешная деактивация приложения Panda и извлечения пароля в чистом виде при помощи утилиты UnloadPanda

[8] Deeg, Matthias/Freund, Sven: SySS Security Advisory SYSS-2015-006, https://www.syss.de/file
admin/dokumente/Publikationen/Advisories/SYSS-2015-006.txt

[9] Deeg, Matthias/Freund, Sven: SySS Security Advisory SYSS-2015-007, https://www.syss.de/file
admin/dokumente/Publikationen/Advisories/SYSS-2015-007.txt

[10] Deeg, Matthias/Freund, Sven: SySS Security Advisory SYSS-2015-008, https://www.syss.de/fi
leadmin/dokumente/Publikationen/Advisories/SYSS-2015-008.txt

[11] Deeg, Matthias/Freund, Sven: SySS Security Advisory SYSS-2015-009, https://www.syss.de/fi
leadmin/dokumente/Publikationen/Advisories/SYSS-2015-009.txt

[12] Deeg, Matthias/Freund, Sven: SySS Security Advisory SYSS-2015-010, https://www.syss.de/fi
leadmin/dokumente/Publikationen/Advisories/SYSS-2015-010.txt

[13] Deeg, Matthias: SySS Security Advisory SYSS-2015-012, https://www.syss.de/fileadmin/do
kumente/Publikationen/Advisories/SYSS-2015-012.txt

[14] Deeg, Matthias: SySS Security Advisory SYSS-2015-013, https://www.syss.de/fileadmin/do
kumente/Publikationen/Advisories/SYSS-2015-013.txt

[15] Deeg, Matthias: SySS Security Advisory SYSS-2015-014, https://www.syss.de/fileadmin/do
kumente/Publikationen/Advisories/SYSS-2015-014.txt

>UnloadBullguard.exe
____________________________________________________________
/ _____ _____ _____ \
/ / ___| / ___/ ___| \
| \ `--. _ _\ `--.\ `--. |
| `--. \ | | |`--. \`--. \ |
| /\__/ / |_| /\__/ /\__/ / |
\ \____/ \__, \____/\____/ ... unloads BullGuard! /
\ __/ | /
/ |___/ _________________________________________/
/ _________________/
(__) /_/
(oo)
/------\/
/ |____||
* || ||
^^ ^^
SySS Unload BullGuard v1.0 by Matthias Deeg - SySS GmbH (c) 2015
[+] Found location of the executable file BullGuard.exe
[+] Created new instance of the process BullGuard.exe
[+] The BullGuard process was patched successfully.
Now you can unload the BullGuard protection with an arbitrary password.
After entering an arbitrary password, the correct one will be shown.
[+] The correct password is: S3cret1!

Листинг 4: Успешная деактивация приложения BullGuard и извлечение пароля в чистом виде при помощи утилиты UnloadBullguard
[16] Deeg, Matthias: SySS Security Advisory SYSS-2015-015, https://www.syss.de/fileadmin/do
kumente/Publikationen/Advisories/SYSS-2015-015.txt

[17] Deeg, Matthias: SySS Security Advisory SYSS-2015-017, https://www.syss.de/fileadmin/do
kumente/Publikationen/Advisories/SYSS-2015-017.txt

[18] Deeg, Matthias: SySS Security Advisory SYSS-2015-017, https://www.syss.de/fileadmin/do
kumente/Publikationen/Advisories/SYSS-2015-018.txt

[19] Deeg, Matthias: SySS Security Advisory SYSS-2015-017, https://www.syss.de/fileadmin/do
kumente/Publikationen/Advisories/SYSS-2015-019.txt

[20] Deeg, Matthias: Deactivating Endpoint Protection Software in an Unauthorized Manner, DeepSec
2015, https://www.syss.de/fileadmin/dokumente/Publikationen/2015/Deactivatin
g_Endpoint_Protection_Software_in_an_Unauthorized_Manner_-_DeepSec_2015.pdf,
https://vimeo.com/152394408

[21] OllyDbg, http://www.ollydbg.de/

Ваш провайдер знает о вас больше, чем ваша девушка?

Присоединяйтесь и узнайте, как это остановить!