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

15 lutego 2020, 13:32 | W biegu | komentarze 2
Tagi: ,

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:

  1. Tworzymy zainfekowaną DLL-kę (tj. dającą nam admina): C:\EXPLOIT\FakeDll.dll
  2. Tworzymy linki opisane wyżej
  3. Opalamy debugowanie i ustawiamy maksymalną wielkość pliku logów na niewielką (mniejszą niż nasz FakeDll.dll).
  4. 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:
  5. 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

 

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Krzysiek

    Cała zabawa z eskalacją uprawnień do Admina zaczyna się od zapisu do HKLM\SOFTWARE\… co wymaga – uwaga – uprawnień Admina

    Odpowiedz
    • Chyba nie doczytałeś ;) „Poniżej usługi, które dają możliwość debugowania zwykłym użytkownikom”. Zwykłym :-)

      Odpowiedz

Odpowiedz