Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
CVE-2020-0668: eskalacja uprawnień do Admina – wszystkie Windowsy od XP do 10-tki
Dzisiejszy odcinek vulnz poświęcamy ~prostej eskalacji uprawnień do Administratora w systemach Windows.
Zacznijmy od mechanizmu Service Tracing – jak sama nazwa wskazuje umożliwia to pewne debugowanie usług (i dla pewnych usług może być zrealizowane jako nieuprawniony użytkownik Windows). Aby całość skonfigurować po prostu ustawiamy pewne klucze wartości w rejestrze (ścieżka: HKLM\SOFTWARE\Microsoft\Tracing). Poniżej usługi, które dają możliwość debugowania zwykłym użytkownikom (zauważmy uprawnienia RW jeśli chodzi o możliwość pisania do rejestru):
Dalej, dla wybranej usługi ustawiamy do jakiego katalogu mają być pisane logi (np. C:\LOGS). Tworzony plik jest zgodny z nazwą usługi, np. C:\LOGS\RASTAPI.LOG
Na razie nie widać podatności, ale jedźmy dalej – jeśli plik logów przekroczy wielkość ustaloną przez użytkownika (np. 32 kilobajty), jest on przenoszony do pliku z rozszerzeniem .OLD (np. RESTAPI.OLD) a następnie tworzony jest nowy RESTAPI.LOG. I tutaj uwaga: operacja przenoszenia realizowana jest przez Windows z uprawnieniami NT AUTHORITY\SYSTEM. Jeszcze jeden dość skomplikowany krok i jesteśmy w domu: chcemy mieć możliwość nadpisania dowolnej systemowej dll-ki.
Gotową procedurę na takie „zabawy” mamy opisaną np. na stronie 9 prezentacji: Abusing privileged file operations:
W pewnym skrócie całość sprowadza się do utworzenia linków na filesystemie, powodujących że plik C:\LOGS\RESTAPI.OLD prowadził będzie np. do C:\Windows\System32\WindowsCoreDeviceInfo.dll.
Z drugiej strony chcemy utworzyć link C:\LOGS\RESTAPI.LOG -> C:\EXPLOIT\FakeDll.dll
Zobaczmy co się teraz dzieje:
- Tworzymy zainfekowaną DLL-kę (tj. dającą nam admina): C:\EXPLOIT\FakeDll.dll
- Tworzymy linki opisane wyżej
- Opalamy debugowanie i ustawiamy maksymalną wielkość pliku logów na niewielką (mniejszą niż nasz FakeDll.dll).
- Windows w takim razie przenosi plik RESTAPI.LOG do RESTAPI.OLD (robi to z uprawnieniami SYSTEM). Pamiętajmy jednak, że RESTAPI.LOG wskazuje (za pomocą linku) na FakeDll.dll, a RESTAPI.OLD wskazuje na C:\Windows\System32\WindowsCoreDeviceInfo.dll. Zatem:
- Windows napisuje oryginalną systemową dll-kę, naszą fejkową. End of Story :-)
Podatność została załatana niedawno, a osoby chcące dokładniej doczytać jak działają wspomniane w tekście linki NTFS (możemy użyć tylko takich, które nie wymagają prawa Admina!) – mogą zerknąć tutaj.
–ms
Cała zabawa z eskalacją uprawnień do Admina zaczyna się od zapisu do HKLM\SOFTWARE\… co wymaga – uwaga – uprawnień Admina
Chyba nie doczytałeś ;) „Poniżej usługi, które dają możliwość debugowania zwykłym użytkownikom”. Zwykłym :-)