Klucze typu NULL
"Błąd uniemożliwia otwarcie klucza" / "Błąd przy usuwaniu klucza"
Wyjaśnienie zagadnienia "null":
Znaki zerowe NULL "\0" to metoda pozwalająca na ukrywanie w rejestrze wpisów w taki sposób, by nie można się było do nich dostać. Ogólnie mamy kwestie dwóch modeli nazewniczych:
Czyli jeśli NULL miał być częścią faktycznej nazwy, następuje zafałszowanie jej wyglądu w takich narzędziach które korzystają z Win32 API. Możecie sami potestować jak to wygląda w praktyce. Sysinternals udostępnia próbkę:
Po uruchomieniu (Vista / Windows 7 w trybie Uruchom jako Administrator) zostanie utworzony w rejestrze klucz null (po zamknięciu narzędzia samoczynnie ulegnie kasacji ta "prezentacja"):
Nazwa nie jest właściwie przeczytana, a w konsekwencji nie jest możliwe otworzenie ani usunięcie takiego klucza, co jest oznajmiane takim typem błędu:
Klucze tego rodzaju mogą zostać wykryte / podglądnięte via programy specjalizowane w wyszukiwaniu rootkitów. Przykład z programu GMER w jaki sposób jest widziana ta próbka:
Technika wstawiania znaków null jest wykorzystywana przez różne zjawiska, zarówno trojany / rootkity, jak i nieszkodliwe oprogramowanie blokujące w ten sposób jakieś określone informacje.
I teraz jest pytaniem jak skasować takie klucze w warunkach rzeczywistych:
Narzędzia do usuwania kluczy "null":
Aplikacja Microsoftu, wspominana również w bazie wiedzy: KB2021860. Narzędzie jest typem konsolowym, tzn. obsługiwanym z linii komend. Dla ułatwienia obsługi należy je umieścić w którejś ze ścieżek uwzględnianych w Zmiennych środowiskowych np. w folderze C:\WINDOWS. Narzędzie wykonuje detekcję wszystkich kluczy null, które umie rozpoznać, a to oznacza iż w dialogu interakcyjnym z użytkownikiem mogą zostać zadane pytania o skasowanie kluczy, które są częścią systemu i nie powinny być usuwane, dlatego też należy zareagować przez "n". Przykład:
Alternatywa na wbudowany w system konsolowy wariant edytora rejestru REG.EXE. Narzędzie posiada dodatkowe polecenie SWReg NULL, umożliwiające usuwanie oraz dodawanie kluczy typu NULL:
SWReg NULL supports a few subcommands for dealing with NULL embedded strings
in the Registry. One thing to note that the embedded nulls are only supported
in the keyname. All possible actions have been augmented with a parameter
that signifies the NULL character, by default this is \0.
Nietypowy edytor rejestru, który operuje w natywnym API, co oznacza iż jest zdolny zobaczyć takie klucze, a także wykonywać na nich operacje typu usuwanie lub tworzenie tak jakby to się działo na regedit wbudowanym w system. Ciekawy projekt, ale wysoce eksperymentalny i zabugowany. Niestety także nie aktualizowany, choć da się uruchomić na Windows Vista/7.
Klucze bez uprawnień
"Odmowa dostępu" / "Błąd przy usuwaniu klucza"
Metoda przez zmianę uprawnień kasowanych kluczy:
Windows XP/2003
Start > Uruchom > regedit
Z prawokliku na dany klucz wybierz Permissions / Uprawnienia:
Kliknij Add / Dodaj:
Wpisz dokładną nazwę swojego konta i potwierdź:
Podświetl swoje konto na liście a na dole zaznacz Full Control / Pełna kontrola i potwierdź:
Teraz z prawokliku ten klucz możesz kasować. Jeżeli nadal będzie błąd usuwania klucza: Uprawnienia >>> Zaawansowane >>> w pierwszej zakładce na dole zaptaszyć Zamień wpisy uprawnień na wszystkich obiektach podrzędnych.
Windows 7 / Vista
Jest drobna różnica w operacji. Po pierwsze regedit ma być zastartowane w trybie uprawnień administracyjnych. Po drugie przed przyznaniem Uprawnień w sposób wyżej opisany, należy dodatkowo przejąć klucz na własność stając się jego Właścicielem:
1. W Start wpisujemy na szukanie słowo regedit, na wyniku z prawokliku Uruchom jako administrator:
2. Przechodzimy do klucza, który chcemy skasować, i z prawokliku nań wybieramy Permissions / Uprawnienia:
3. Otworzy się główne okno z listą użytkowników. Wybieramy button Advanced / Zaawansowane:
4. Przechodzimy do zakładki Owner / Właściciel, zaznaczamy nasze konto, na dole ptaszkujemy opcję Zamień właściciela dla podkontenerów i obiektów i zatwierdzamy wszystko:
5. Powrót na listę >>> button Dodaj >>> wpisać nazwę naszego konta i zatwierdzić >>> zaznaczyć je na liście i zaptaszyć dla niego Pełna kontrola >>> zatwierdzić:
Po zmianie właściciela i dograniu praw dostępowych klucz bez trudu się usuwa wraz z całą zawartością.
Metoda przez zastartowanie regedit z uprawnieniami konta SYSTEM:
Alternatywna metoda usuwania kluczy rejestru, do których nie ma uprawnień, to wywołanie edytora rejestru w innym kontekście zabezpieczeń, czyli z poziomu konta SYSTEM. Tak uruchomiony edytor udostępni klucze jako gotowe do kasacji i nie trzeba przyznawać im praw, albo też proces przyznawania uprawnień zostanie skrócony. Znakiem na systemie XP, że edytor rejestru regedit jest uruchomiony z tak wysokimi uprawnieniami, jest widoczność m.in. podkluczy klucza SAM, które w standardowo uruchomionym regedit są niewidoczne. Na systemach Vista i Windows 7 metoda ta ma mniejsze znaczenie niż na XP. Na tych platformach nastąpiło przewartościowanie i kluczowym kontem jest TrustedInstaller. Niemniej startowanie regedit jako SYSTEM również może się okazać przydatne.
Takie specjalne uruchomienie edytora rejestru można wykonać przy udziale jednego z darmowych narzędzi:
Z menu Hacker należy wybrać opcję Run As i wypełnić dialog jak na poniższym obrazku:
Pobierz z linka pakunek PsTools zawierający m.in. narzędzie PsExec. Rozpakuj ściągnięty zip i skopiuj pliki psexec.exe i pdh.dll do folderu system32. Biblioteka pdh.dll może już być obecna w systemie i w takim przypadku należy ominąć kopiowanie tego pliku.
Windows 7 / Vista:
W Start w polu szukania wpisz cmd. Na wynikach szukania z prawokliku wybierz opcję Uruchom jako Administrator.
W linii komend wpisz polecenie psexec -s -i -d regedit
Jeśli ta komenda zwróci błąd "nie znaleziono", wpiszcie z pełnymi ścieżkami dostępu: C:\WINDOWS\system32\psexec.exe -s -i -d C:\WINDOWS\regedit.exe
Do działania aplikacji jest potrzebna zainstalowana paczka Microsoft Visual C++ 2005 Service Pack 1 Redistributable.
Automatyczne narzędzia:
Do kompletu mała aplikacja portable (nie wymagająca instalacji a ważąca tylko 68KB) umożliwiająca kasowanie z rejestru kluczy do których nie ma uprawnień. Program ma opcję resetowania uprawnień i rekursywnego kasowania całego klucza wraz z jego zawartością. Wystarczy program uruchomić, wkleić w pasek adresów ofensywny klucz, pozostawiając ptaszki na Reset permissions i Delete registry key and all subkeys, i kliknąć w button Delete.