Sprytny sposób na wyłączenie ochrony bezpieczeństwa (i nie tylko) na Windows

kapitanhack.pl 1 rok temu

Szukanie obejść zabezpieczeń Windows (i nie tylko) to jeden z najciekawszych aspektów dziedziny cyberbezpieczeństwa, które – nie ukrywajmy – bardzo lubimy. Na Kapitanie publikujemy często tego typu artykuły, aby pokazać, iż nic nie jest doskonałe i prędzej czy później znajdzie się sposób na ominięcie ochrony.

Opisywaną w dzisiejszym artykule metodę można zaliczyć do „dinozaurów z krainy Windows”, gdyż działa na wszystkich wersjach systemów operacyjnych od Microsoft. Ostatnio jedną z nich, niczym pierścień z czeluści Mordoru, wyciągnął na światło dzienne Grzegorz Tworek.

Grzegorz pokazał, jak dzięki jednej modyfikacji w rejestrze systemowym można w interesujący sposób wyłączyć chronioną na Windows usługę Microsoft Defender.

Jednakże gdy zgłębiliśmy jeszcze bardziej temat, okazało się, iż opisywaną metodą nie tylko można wyłączyć tę usługę, ale wywołać też inne interesujące zmiany, o których piszemy poniżej.

Należy również pamiętać, iż zabawę z rejestrem systemowym można porównać do zabawy dziecka z zapałkami – przez nieuwagę można łatwo doprowadzić do tragedii. Dlatego przed każda zmianą zalecamy wykonanie backupu.

CurrentControlSet w rejestrze Windows – co to takiego?

Zanim przejdziemy do opisywania sposobów na to, jak „namieszać” w Windows i wyłączyć jakąś chronioną przez system usługę, zaczniemy od opisania interesującego klucza w rejestrze Windows, który daje nam wiele możliwości – CurrentControlSet (zestaw kontrolny).

Jest to klucz w gałęzi ustawień rejestru systemowego Windows (dokładna lokalizacja: „HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet”), który rejestruje informacje potrzebne do uruchomienia systemu oraz dotyczące urządzeń używanych do uruchamiania systemu (usługi systemu Windows). Windows przechowuje w rejestrze co najmniej dwa zestawy kontrolne:

  • HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001 i
  • HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002

Warto też w tym miejscu wspomnieć, za jakie komponenty systemowe odpowiadają ustawienia wewnątrz klucza „HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet”. Są to:

  • Control – zawiera informacje dotyczące kontrolowania uruchamiania systemu i niektórych aspektów konfiguracji urządzeń,
  • Enum – przechowuje informacje o urządzeniach, np. podpiętych wcześniej urządzeniach USB w podkluczu USBSTOR, o którym pisaliśmy tutaj,
  • Profile sprzętowe (Hardware Profiles),
  • Services – przechowuje informacje o konfiguracji usług – baza danych usług systemu Windows.

Na podstawie powyższych informacji możemy wyobrazić sobie, do jakich zmian w systemie możemy doprowadzić, modyfikując i tworząc swój własny klucz z określonymi wartościami.

Jaką sztuczkę należy wykonać, aby wyłączyć Microsoft Defender?

Jeśli wiemy, w jaki sposób działa CurrentControlSet i który klucz jest dla nas istotny w celu przeprowadzenia żądanej modyfikacji, możemy przejść do kolejnego kroku – wyłączenia usługi Microsoft Defender. Normalnie usługa Defender jest chroniona przez Windows przed wyłączeniem i modyfikacjami choćby przez administratora. W celu jej wyłączenia należy wykonać poniższe 5 kroków:

  1. Wyeksportować cały klucz „CurrentControlSet” do pliku na dysk.
  2. Przeprowadzić edycję nazwy pliku wykonywalnego Defender (ścieżki) w pliku – najlepiej w edytorze HEX.
  3. Zaimportować zmodyfikowany plik ustawień rejestru jako nowy zestaw kontrolny, np. ControlSet003.
  4. Zmienić wartości w kluczu „Select” na nowe, które odpowiadać będą cyfrze znajdującej się na końcu nazwy nowo utworzonego kluczaControlSett00x – w naszym przypadku 3.
  5. Uruchomić ponownie system Windows.

Powyższe działania zademonstrował Grzegorz na filmie poniżej:

Fancy Defender evasion? Yet another method, nearly bare hands:
1. Export CurrentControlSet to a file
2. Edit path in a file
3. Import a file as new ControlSet
4. Change "Select" values to new one
5. Reboot
6. Enjoy 😎
A side effect of my "Registry internals" session yesterday 😅 pic.twitter.com/3dLNW9SGzd

— Grzegorz Tworek (@0gtweet) July 28, 2023

Należy tutaj zwrócić uwagę na istotną kwestię. Do powyższych modyfikacji (import ustawień oraz zmian wartości w kluczu „Select”) konieczne jest posiadanie uprawnień administracyjnych na Windows.

Inne możliwości użycia CurrentControlSet – wyłączenie Sysmon

Ponieważ w CurrentControlSet przechowywane są między innymi informacje o konfiguracji usług, możemy w podobny sposób manipulować ustawieniami np. Microsoft Sysmon. W artykule na temat najnowszej wersji v15 Sysmon opisywaliśmy wprowadzoną nową funkcjonalność, zabezpieczającą przed manipulacją usługą Sysmon zainstalowaną na Windows, choćby przez administratora. Wykorzystując tę samą metodę jak dla Defender, będziemy starali się wyłączyć ją na Windows.

Parametry konfiguracyjne usługi przechowywane są w ścieżce „HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Sysmon64”.

Wyeksportujmy zatem nasze bieżące ustawienie ControlSet001 do pliku „reg1.dat”.

Następnie zaimportujmy je do utworzonej nowej wartości klucza ControlSet004.

Przejdźmy do edycji wartości klucza ImagePath i zmieńmy rozszerzenie „Sysmon64.exe” na „Sysmon64.hack”.

Ostatnią czynnością, jaką wykonamy, będzie przepięcie profilu ustawień ContolSet001 na nasz utworzony profil ControlSet004.

Po restarcie Windows usługa Sysmon nie powinna się już w ogóle uruchomić.

Od teraz możemy robić na Windows co tylko dusza zapragnie, bez monitorowania i ochrony😊.

Powyższy przykład metody zmiany w rejestrze systemowym, choć wymaga uprawnień administracyjnych do systemu (na Kapitanie pokazywaliśmy wielokrotnie sposoby, jak je zdobyć), z pewnością jest interesujący pod względem scenariuszy, do jakich może zostać użyty.

Istotne z punktu bezpieczeństwa jest monitorowanie zmian w ścieżce klucza rejestru „HKEY_LOCAL_MACHINE\SYSTEM\Select” oraz tworzenia nowych profili ustawień, tak jak zostało to zademonstrowane przez Grzegorza.

Idź do oryginalnego materiału