W tym artykule pokażemy jedną z ciekawszych metod uruchamiania złośliwego kodu na systemie Windows polegającą na jego ukryciu w rozszerzeniach Panelu Sterowania Windows. Opiszemy, jak stworzyć własny komponent panelu sterowania i podpiąć go do „fabrycznych” komponentów, używając jedynie zwykłego konta użytkownika. Na końcu będziemy mogli uruchomić dowolną komendę w systemie.


Zaszycie się hakera w systemie


Metod na ukrycie i automatyczne uruchamianie złośliwego kodu w Windows jest kilka. Zazwyczaj hakerzy, aby trwałe mogli „zaszyć” się w systemie operacyjnym ofiary używają różnych sposobów pozwalających na ponownie uruchomienie złośliwego kodu w sytuacji, kiedy np. użytkownik zrestartuje swój komputer. Wśród tych metod możemy wymienić te, które zapisują ustawienia w rejestrze systemowym Windows takie jak np. Run, RunOnce lub NotificationPackages , tworzą zadania (taski) w menadżerze zadań (Task Scheduler) oraz uruchamiają nowe usługi lub podpinają się pod bieżące i działające usługi w Windows.

Opisywana przez nas metoda należy do tych pierwszych, ale jest związana z konkretnym narzędziem Windows – Panelem Sterowania. Pozwala też na ominięcie blokad związanych z funkcją AppLocker w Windows.


Panel Sterowania


O panelu sterowania nie musimy zbytnio się rozpisywać, ponieważ każdy kto używa Windows doskonale wie, do czego służy. Istotne dla nas jest to, że w momencie, gdy użytkownik otwiera panel sterowania w systemie Windows, ładowanych jest kilka plików „CPL.” Lista tych plików CPL jest pobierana z rejestru.

Poniższe dwie lokalizacji rejestru Windows zawierają wpisy, które uruchamiają CPL:

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Control Panel\CPLs
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\CPLs


Domyślnie po „suchej” instalacji Windows 10 lista ta jest pusta

Problem polega na tym, że w drugiej lokalizacji rejestru (HKCU\..) normalni użytkownicy mają dostęp w niej do zapisu, więc możliwe jest zapisanie klucza do rejestru, który załaduje i wykona złośliwy kod po uruchomieniu panelu sterowania. Stanowi to doskonałą furtkę (backdoor) dla hakerów, którzy mogą z niej skorzystać.


Utworzenie własnej biblioteki CPL


Cały proces uruchomienia złośliwego kodu zaczniemy najpierw od utworzenia własnej biblioteki CPL. W naszym przypadku będzie to prosty komunikat na pulpicie użytkownika. Ciekawostką jest to, że można zmusić proces „explorer.exe” do załadowania biblioteki DLL skompilowanej jako element panelu sterowania i zarejestrowanej jako dodatek do Panelu sterowania. Warunek jaki musi być spełniony przy tworzeniu takiej biblioteki DLL to, że musi zawierać eksportowaną funkcję Cplapplet.

Poniżej zamieściliśmy przykładowy kod w C++ pozwalający utworzyć taką bibliotekę pełniąca funkcję apletu do Panelu Sterowania. Plik po kompilacji nazwaliśmy „KapitanHackCPL.dll” i umieścimy go w katalogu „C:\Temp”.

Dla wtajemniczonych dodamy, że Metasploit Msfvenom może utworzyć taką niestandardową bibliotekę DLL z osadzonym w środku ładunkiem.


Dodanie wpisu do rejestru


Jeśli mamy przygotowaną bibliotekę „KapitanHackCPL.dll” musimy ją teraz skopiować na komputer ofiary i podpiąć pod CPL’ki panelu sterowania. Poniższe polecenie utworzy klucz rejestru, który będzie zawierał ścieżkę, zawierającą nasz plik CPL (plik DLL). Domyślnie standardowi użytkownicy mają uprawnienia do zapisu w tej gałęzi rejestru.

reg add „HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls” /v KapitanHackCPL /t REG_SZ /d “C:\Temp\KapitanHackCPL.dll

Wynik w postaci dodanego klucza do rejestru z biblioteką CPL możemy zaobserwować w edytorze rejestru na poniższym zrzucie ekranu.

Gdyby z jakichś powodów komendy takie jak „reg.exe” lub graficzny Edytor Rejestru (regedit.exe) były zablokowane w firmie do użycia przez użytkownika na Windows, poniżej przedstawiamy opcję dodania wymaganych wpisów w postaci skryptów VBScript lub JScript:

VBScript:

const HKEY_CURRENT_USER = &H80000001

strComputer = “.”

Set objReg=GetObject( “winmgmts:{impersonationLevel=impersonate}!\\” & strComputer & “\root\default:StdRegProv”)
strKeyPath = “Software\Microsoft\Windows\CurrentVersion\Control Panel\CPLs”
objReg.CreateKey HKEY_CURRENT_USER,strKeyPath
strValueName = “KapitanHackCPL”
strValue = “C:\Temp\KapitanHackCPL.dll ”
objReg.SetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue


JScript:

var obj = WScript.CreateObject(“WScript.Shell”);
obj.RegWrite(“HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\CPLs”, “Top level key”);
obj.RegWrite(“HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\CPLs\\KapitanHackCPL”, “C:\\Temp\\KapitanHackCPL.dll”,”REG_SZ”);


Uruchomienie backdoora


Uruchamianie panelu sterowania przez użytkownika jest dozwolone w większości środowisk. Wystarczy w Menu Start wpisać Panel Sterowania (lub Control Panel). Lecz jeśli jednak zabezpieczenia w firmie zabraniają jego uruchamiania, to możemy spróbować użyć kilku obejść, aby można było go odpalić z linii komend „cmd.exe”, pola Uruchom (Run) w Menu Start lub Eksploratorze Windows. Poniżej prezentujemy wyniki uruchamiania panelu sterowania za pomocą różnych metod wykonanych na najnowszym Windows 10 (build 2004):

1) Bezpośrednie uruchomienie programu:
„C:\Windows\system32\control.exe”

2) Uruchomienie linku umieszczonego w ścieżce użytkownika:
“C:\Users\KapitanHack.pl\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools\Control Panel.lnk”

3) Użycie tzw trybu „GodMode” i odwołania się do odpowiedniego obiektu z identyfikatora CLSID:
Explorer.exe shell:::{ED7BA470-8E54-465E-825C-99712043E01C}

Uwaga! Powyższe komendy mogą zostać użyte przez cyberprzestępcę, w celu ominięcia blokad i uruchomienia backdoora w systemie. Warto je monitorować.


Jak sobie radzić z problemem?


Przede wszystkim powinniśmy monitorować zmiany we wskazanych gałęziach rejestru systemowego:

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Control Panel\CPLs
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\CPLs

Możemy też spróbować odebrać uprawnienia do zapisu dla użytkowników do powyższego klucza HKCU. Warto też zwrócić uwagę na procesy, które uruchamiają pliki DLL z niezabezpieczonych lokalizacji i je blokować. W przypadku obejścia uruchomienia panelu sterowania powinniśmy monitorować uruchomienie komend zawierających skrót .LNK oraz CLSID {ED7BA470-8E54-465E-825C-99712043E01C}


Podsumowanie


Powyższy przykład pokazuje, że można utworzyć backdoor’a na najnowszym Windows 10 (build 2004), który może posłużyć przestępcom do niekontrolowanego przez zabezpieczenia Windowsa uruchomienia złośliwego kodu. Wszystkie komendy wykonaliśmy na zwykłym koncie użytkownika i mogliśmy ominąć nimi wbudowane zabezpieczenia Windows, nawet gdy jest blokowane uruchamianie wbudowanych poleceń.

Polecamy też sprawdzenie środowiska, być może w podanych wyżej ścieżkach znajduje się „zaszyty backdor”.