Уязвимость Защитника Windows, связанная с повышением привилегий
Ну, во-первых, почему?
Причина, по которой Microsoft прекратила свою дерьмовую программу вознаграждения за ошибки для ошибок Windows eop, поэтому мне не интересно сообщать о них поставщику
В последнее десятилетие я искал ошибки защитника Windows, но просто тратил время, я думал, что MS просто сделал идеальный av, пока я не увидел
Однако это описание от Microsoft:
Признанный парень обычно раскрывает свои ошибки, поэтому я ждал его на этот раз, чтобы посмотреть, смогу ли я обойти исправление безопасности.
а затем он опубликовал свою поэтому, когда я прочитал его статью, мне казалось, что это невозможно.
Давайте рассмотрим ошибку, в конфигурации по умолчанию есть файл в c:\windows\temp\mpcmdrun.log в этом файле, который используется для регистрации событий, происходящих в mpcmdrun.log процессе, который выполняется в контексте локальной системы (наивысшие привилегии, существующие в Windows), как it4mn сказано, когда файл журнала должен достичь 16 777 216 байт (16 МБ) , чтобы вызвать ошибку, вы можете скачать ее
Хорошо, давайте попробуем воспроизвести ошибку.
Давайте посмотрим, что происходит с procmon.
Как вы можете видеть, патч, похоже, работает так, как должен, вы можете видеть MpCmdRun.exe обработку соединения с GENERIC_ALL доступом, а затем он выполняет контрольный код, FSCTL_GET_REPARSE_POINT и FSCTL_DELETE_REPARSE_POINT оба результата приводят к успеху , элемент управления получить точку повторной обработки просто проверяет, является ли каталог точкой повторной обработки, но точка повторной обработки при удалении управляющего кода попытается преобразовать соединение mpcmdrun.log.bak в каталог, после чего она перейдет к его удалению. Вроде прошился правильно! но с патчем все еще что-то не так, что, если бы мы создали соединение внутри mpcmdrun.log.bak пример: mpcmdrun.log.bak \ test.
Это сработало, теперь у нас есть проблема с произвольным удалением файлов в защитнике Windows.
Хорошо, давайте нанесем еще немного вреда, давайте перейдем к системной оболочке
ПРИМЕЧАНИЕ: этот метод будет работать только в Windows 10.
Давайте посмотрим, какие привилегии даны, и MpCmdRun.exe мы можем проверить их в проводнике процессов.
Похоже, mpcmdrun это дочерний процесс, от MsMpEng.exe ,который на самом деле является AV.
Давайте проверим AV:
Он работал в контексте, NT AUTHORITY\SYSTEM но как насчет других привилегий в токене?
SeRestorePrivilege Кажется, это произошло из - за токена MsMpEng.exe
Это , кажется конец, эта привилегия позволит его владельцу удалить любой файл , даже если он не имеет права делать это в ACL.
В этом случае у нас будет возможность захватить службу, которая будет нацелена на сетевую службу проигрывателя Windows Media, которая по умолчанию расположена в C:\Program Files\Windows Media Player\wmpnetwk.exe этом файле, этот файл защищен NT SERVICE\TRUSTEDINSTALLER этим средством защиты, такие папки защищены от удаления из привилегированного процесса (например, administratorsили SYSTEM), а затем вот список наличия SeRestorePrivilegeEnabled, это позволит нам обойти это , чтобы мы могли очистить весь каталог C:\Program Files\Windows Media Player Однако сетевая служба проигрывателя Windows Media запускает службу по требованию в Windows 10, и ее ACL позволяют интерактивной группе запускать ее, мы можем проверить детали таких служб в Proces hacker.
Это хорошая новость, поэтому, если у нас есть возможность воссоздать C:\Program Files\Windows Media Player каталог, мы можем захватить службу с помощью вредоноса, к счастью и большое спасибо jonasLyk за предоставление метода, позволяющего создавать произвольные каталоги из произвольного удаления файлов, вы можете увидеть статью
Техника проста, если мы удалим весь C:\ProgramData\Microsoft\Windows\WER каталог, инструмент отчетов об ошибках Windows воссоздает его для нас, а затем создаст, C:\ProgramData\Microsoft\Windows\WER\Temp позволяя аутентифицированным пользователям иметь доступ на запись и удаление как в WER, так и в каталогах Temp,
что в свою очередь позволит пользователю абузить создание папки Temp, создавая точки повторной обработки от C:\ProgramData\Microsoft\Windows\WER до , \RPC CONTROL\ а затем создать символическую ссылку из \RPC CONTROL\Temp-> C:\Program Files\Windows Media Playerтак , как только мы повторно запустить запланированное задание папка будет создана с новыми правами позволяя проверку подлинности пользователя , чтобы писать на нем так что мы можем написать полезную нагрузку , а затем запустить службу единственная проблема будет иметь полученные привилегии \Microsoft\Windows\Windows Error Reporting\QueueReportingC:\Program Files\Windows Media Player
Как вы можете видеть здесь, мы не работаем, поскольку NT AUTHORITY\SYSTEM вместо этого работает служба, поскольку NT AUTHORITY\Network Service эта учетная запись службы не имеет полного контроля над системой, и это проблема, которую мы можем легко решить.
Вы можете найти PoC это цепочка, поэтому она должна создать системную оболочку.
(Копипаст с транслитированием гугла)
Ну, во-первых, почему?
Причина, по которой Microsoft прекратила свою дерьмовую программу вознаграждения за ошибки для ошибок Windows eop, поэтому мне не интересно сообщать о них поставщику
В последнее десятилетие я искал ошибки защитника Windows, но просто тратил время, я думал, что MS просто сделал идеальный av, пока я не увидел
Однако это описание от Microsoft:
![14009a93a9f8fe62bef735a5c3756238e617d895.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2F1%2F14009a93a9f8fe62bef735a5c3756238e617d895.png&hash=e324069d26797c5a24b2c07ebbe41cee)
Признанный парень обычно раскрывает свои ошибки, поэтому я ждал его на этот раз, чтобы посмотреть, смогу ли я обойти исправление безопасности.
а затем он опубликовал свою поэтому, когда я прочитал его статью, мне казалось, что это невозможно.
Давайте рассмотрим ошибку, в конфигурации по умолчанию есть файл в c:\windows\temp\mpcmdrun.log в этом файле, который используется для регистрации событий, происходящих в mpcmdrun.log процессе, который выполняется в контексте локальной системы (наивысшие привилегии, существующие в Windows), как it4mn сказано, когда файл журнала должен достичь 16 777 216 байт (16 МБ) , чтобы вызвать ошибку, вы можете скачать ее
Хорошо, давайте попробуем воспроизвести ошибку.
![0c735d6ea757736c8f863b8d3d0372e7247a4a90.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2F0%2F0c735d6ea757736c8f863b8d3d0372e7247a4a90.png&hash=b7da99f5e66e8b052903aacd2982d851)
Давайте посмотрим, что происходит с procmon.
![c7bbdbe20518d7d437ea5a7abde92ac40444bf82.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2Fc%2Fc7bbdbe20518d7d437ea5a7abde92ac40444bf82.png&hash=c4dfe1651de63cd8263421489f761a8b)
Как вы можете видеть, патч, похоже, работает так, как должен, вы можете видеть MpCmdRun.exe обработку соединения с GENERIC_ALL доступом, а затем он выполняет контрольный код, FSCTL_GET_REPARSE_POINT и FSCTL_DELETE_REPARSE_POINT оба результата приводят к успеху , элемент управления получить точку повторной обработки просто проверяет, является ли каталог точкой повторной обработки, но точка повторной обработки при удалении управляющего кода попытается преобразовать соединение mpcmdrun.log.bak в каталог, после чего она перейдет к его удалению. Вроде прошился правильно! но с патчем все еще что-то не так, что, если бы мы создали соединение внутри mpcmdrun.log.bak пример: mpcmdrun.log.bak \ test.
![b5d00aca4f3f283035debc853cb6a684395bf589.jpeg](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2Fb%2Fb5d00aca4f3f283035debc853cb6a684395bf589.jpeg&hash=fb13be54acad5d545f5f917c64a63f63)
Это сработало, теперь у нас есть проблема с произвольным удалением файлов в защитнике Windows.
Хорошо, давайте нанесем еще немного вреда, давайте перейдем к системной оболочке
ПРИМЕЧАНИЕ: этот метод будет работать только в Windows 10.
Давайте посмотрим, какие привилегии даны, и MpCmdRun.exe мы можем проверить их в проводнике процессов.
![1b5f45c4725366527302d6365fb0587b37668603.jpeg](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2F1%2F1b5f45c4725366527302d6365fb0587b37668603.jpeg&hash=17e1d5f2c7e3895d5d8f06e289d8318d)
Похоже, mpcmdrun это дочерний процесс, от MsMpEng.exe ,который на самом деле является AV.
Давайте проверим AV:
![e26634e01e1b51aafb22d357474cbc2a49e90565.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2Fe%2Fe26634e01e1b51aafb22d357474cbc2a49e90565.png&hash=f6ab87c6737f8dc17d5fc6fa6cf651d0)
Он работал в контексте, NT AUTHORITY\SYSTEM но как насчет других привилегий в токене?
![c370a2594619aa24f275d2eec7ca3ac7b8de0c8a.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2Fc%2Fc370a2594619aa24f275d2eec7ca3ac7b8de0c8a.png&hash=82217a2156651bca6c3449aba3f60062)
SeRestorePrivilege Кажется, это произошло из - за токена MsMpEng.exe
Это , кажется конец, эта привилегия позволит его владельцу удалить любой файл , даже если он не имеет права делать это в ACL.
![94e01fef4acfa53e834407c894dde3fc0bc7277d.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2F9%2F94e01fef4acfa53e834407c894dde3fc0bc7277d.png&hash=9b0953cacacc0bd29c83f46840e2b1e9)
В этом случае у нас будет возможность захватить службу, которая будет нацелена на сетевую службу проигрывателя Windows Media, которая по умолчанию расположена в C:\Program Files\Windows Media Player\wmpnetwk.exe этом файле, этот файл защищен NT SERVICE\TRUSTEDINSTALLER этим средством защиты, такие папки защищены от удаления из привилегированного процесса (например, administratorsили SYSTEM), а затем вот список наличия SeRestorePrivilegeEnabled, это позволит нам обойти это , чтобы мы могли очистить весь каталог C:\Program Files\Windows Media Player Однако сетевая служба проигрывателя Windows Media запускает службу по требованию в Windows 10, и ее ACL позволяют интерактивной группе запускать ее, мы можем проверить детали таких служб в Proces hacker.
![6e6801236bca76a66922fd6e486f99012a7eb45f.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2F6%2F6e6801236bca76a66922fd6e486f99012a7eb45f.png&hash=1eab7f373422a4c51ca7cdab2439c8a9)
![747a0dde74a1c21e1e261e919bd8ee4d71a2fccc.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2F7%2F747a0dde74a1c21e1e261e919bd8ee4d71a2fccc.png&hash=c994cae5605e7799e5c196cc4796ff46)
Это хорошая новость, поэтому, если у нас есть возможность воссоздать C:\Program Files\Windows Media Player каталог, мы можем захватить службу с помощью вредоноса, к счастью и большое спасибо jonasLyk за предоставление метода, позволяющего создавать произвольные каталоги из произвольного удаления файлов, вы можете увидеть статью
Техника проста, если мы удалим весь C:\ProgramData\Microsoft\Windows\WER каталог, инструмент отчетов об ошибках Windows воссоздает его для нас, а затем создаст, C:\ProgramData\Microsoft\Windows\WER\Temp позволяя аутентифицированным пользователям иметь доступ на запись и удаление как в WER, так и в каталогах Temp,
![b1eab480c73fbbb0d2dfbdc0b868f668a5ab7b0d.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2Fb%2Fb1eab480c73fbbb0d2dfbdc0b868f668a5ab7b0d.png&hash=50f03d3c9702d2baa81c1a8da4e3052c)
что в свою очередь позволит пользователю абузить создание папки Temp, создавая точки повторной обработки от C:\ProgramData\Microsoft\Windows\WER до , \RPC CONTROL\ а затем создать символическую ссылку из \RPC CONTROL\Temp-> C:\Program Files\Windows Media Playerтак , как только мы повторно запустить запланированное задание папка будет создана с новыми правами позволяя проверку подлинности пользователя , чтобы писать на нем так что мы можем написать полезную нагрузку , а затем запустить службу единственная проблема будет иметь полученные привилегии \Microsoft\Windows\Windows Error Reporting\QueueReportingC:\Program Files\Windows Media Player
![6e6801236bca76a66922fd6e486f99012a7eb45f.png](/proxy.php?image=https%3A%2F%2F0x00sec.s3.amazonaws.com%2Foriginal%2F2X%2F6%2F6e6801236bca76a66922fd6e486f99012a7eb45f.png&hash=1eab7f373422a4c51ca7cdab2439c8a9)
Как вы можете видеть здесь, мы не работаем, поскольку NT AUTHORITY\SYSTEM вместо этого работает служба, поскольку NT AUTHORITY\Network Service эта учетная запись службы не имеет полного контроля над системой, и это проблема, которую мы можем легко решить.
Вы можете найти PoC это цепочка, поэтому она должна создать системную оболочку.
(Копипаст с транслитированием гугла)