W dzisiejszym artykule przetestujemy nowy, odkryty 2 lipca br. przez specjalistów SentinelLabs, sposób polegający na użyciu ukrytego i wbudowanego w Windows programu do pobierania i ustawiania tła dla zablokowanego ekranu Windows. Można go wykorzystać na każdym komputerze z Windows 10 i z powodzeniem pobrać dowolny plik, w tym złośliwy – jeśli odpowiednio go przygotujemy.


Omijanie rozwiązań do bezpieczeństwa z wykorzystaniem inwentarza Windows

Cyberprzestępcy wciąż szukają nowych metod na niezauważalne przez działy bezpieczeństwa pobieranie złośliwych plików na komputery ofiar. Im sposób jest bardziej egzotyczny, tym ma większe szanse na powodzenie.
W systemie operacyjnym Windows istnieje tylko kilka domyślnych plików wykonywalnych podpisanych przez system, które pozwalają pobrać plik z serwera sieci Web (Internetu). Niestety, ale każde specjalistyczne narzędzie zabezpieczające, w szczególności systemy EDR lub SIEM, wyszukują zagrożenia pod kątem oznak niewłaściwego użycia. O różnych sposobach pobierania złośliwego kodu z serwera sieci Web (Internetu) na komputer ofiary przy użyciu wbudowanych narzędzi w Windows pisaliśmy tutaj.

Taka technika ataku, jaką wykorzystują cyberprzestepcy znana jest pod pojęciem Living off the Land (LotL). LotL zakłada wykorzystanie natywnych, wbudowanych w system operacyjny narzędzi do pobierania kodu, w celu unikania pozostawiania śladów na dysku. Dlaczego jest tak istotna? Ponieważ do pobrania plików przestępcy nie musza kopiować żadnych binarek na komputer ofiary – wystarczy jednolinijkowa (one-line’r) komenda (lub skrypt) i cała reszta złośliwego kodu zostaje przesłana z Internetu na komputer. Zaletą tej techniki jest to, że w środowisku kontrolowanym, w którym występują narzędzia do bezpieczeństwa staje się ona mniej podatna na wykrycie.

W tym artykule opiszemy szczegóły użycia nowego pliku binarnego, który może być używany jako ukrywający się program pobierający i stanowić alternatywę dla szeroko wykorzystywanych i monitorowanych przez narzędzia bezpieczeństwa programów “certutil”, czy “powershell”.


Program do pobierania tła pulpitu

Mowa tutaj o programie binarnym desktopimgdownldr.exe, znajdującym się w folderze „C:\Windows\system32” w systemie Windows 10. Jest on obecny od momentu pojawienia się wersji 1703 Windows 10 i jak wskazuje sama nazwa jest używany do ustawiania ekranu blokady lub obrazu tła pulpitu w ramach programu Personalization CSP (zmieniające się obrazy tła, które widzimy przed zalogowaniem się do profilu użytkownika).
Jak odkryli badacze z SentilenLabs, obrazy te są pobierane i zapisywane w lokalizacji:

Przy czym folder ten nie zawsze musi istnieć, w szczególności w wersjach systemu Windows, w których nie wykonano ustawień personalizacji.

Użyta komenda, która pobiera tło i ustawia je wygląda następująco:

Jeśli odpalimy powyższą komendę na uprawnieniach administratora, w rejestrze systemowym HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP zmieniany jest specjalny parametr, dzięki któremu Windows wie jakiego tła ma użyć.

Badacze po analizie kodu binarki odkryli również, że istnieje możliwość użycia programu na koncie zwykłego użytkownika, ponieważ zaimplementowana jest w nim metoda SHExpandEnvironmentStringsW odwołująca się do zdefiniowanej ścieżki „%systemroot%\Personalization\LockScreenImage”, której przedrostek odwołuje się do zmiennej środowiskowej %systemroot%.

źródło: SentinelLABS

Zatem istnieje możliwość obejścia poprzez określenie innej ścieżki w zmiennej środowiskowej %systemroot% i przekierowania zapisu pliku do katalogu, do którego ma dostęp zwykły użytkownik. Jedyne czego program nie będzie mógł zrobić na zwykłych uprawnieniach użytkownika, to ustawić parametru w rejestrze systemowym. Lecz niepowodzenie wykonania tego kroku przez plik wykonywalny w żaden sposób nie ogranicza pobierania dowolnego pliku z Internetu.


Scenariusz – pobranie złośliwego kodu z Internetu

W celu przetestowania narzędzia desktopimgdownldr.exe i zabezpieczeń Windows postanowiliśmy pobrać na stację użytkownika program Mimikatz.

W tym celu zalogowaliśmy się do Windows 10 (najnowszy build 2004) na zwykłe konto użytkownika i w wierszu poleceń odpaliliśmy poniższą komendę:

Komenda ustawia zmienną systemroot na C:\Windows\Temp, a następnie uruchamia z odpowiednimi parametrami narzędzie desktopimgdownldr.exe, które z kolei pobiera kod źródłowy narzędzia Mimikatz.
Niestety na naszym Windows 10 build 2004 jej wykonanie nie pobrało pożądanego pliku do katalogu „C:\Windows\Temp”.
Powodem tego było to, że nie skonfigurowaliśmy wcześniej żadnych ustawień personalizacji i nie posiadaliśmy katalogu „C:\Windows\Personalization”.
W naszym przypadku plik wykonywalny próbował dodatkowo użyć obiekt BITS Com oraz zlokalizować katalog rejestracji COM+. Standardowo w Windows 10 katalog rejestracji COM+ znajduje się w katalogu „% systemroot%/Registration”. Zmieniając na początku naszej linijki ścieżkę %systemroot% na „C:\Windows\Temp” program nie mógł znaleźć katalogu „Registration”.
Aby obejść ten problem, musieliśmy zastosować pewien trik, tworząc powiązanie do folderu rejestracji za pomocą natywnego programu mklink.exe. One-liner wyglądać będzie następująco:

Czego wynikiem jest pobrany plik „zip” zawierający binaria Mimikatz zapisany w podkatalogu „Personalization\LockScreenImage” katalogu TEMP profilu użytkownika.


Analiza od strony bezpieczeństwa

Analizując scenariusz od strony systemu operacyjnego uruchomiliśmy narzędzie ProcessHacker i sprawdziliśmy proces, który w tle został odpalony do pobrania pliku.

Jak się okazuje za pobieranie jest odpowiedzialny właściciel – proces BITS.

Jako ciekawostkę dodamy, że system Windows używa BITS do pobierania między innymi aktualizacji dla Windows i Microsoft Defender.

Sprawdziliśmy też zachowanie procesu desktopimagedownldr.exe w Procmonie. Widzimy, błędy Access Denied przy próbie zapisu lokalizacji pobranego pliku do parametru “LockScreenImagePath” w ścieżce kluczy rejestru “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP”

Analizując scenariusz od strony sieciowej uruchomiliśmy narzędzie WireShark i sprawdziliśmy komunikację sieciową. Szczegóły można zobaczyć poniżej.

W polu User-Agent widzimy wartość „Microsoft BITS/7.8”.


Jak sobie radzić z problemem?

Ponieważ plik binarny desktopimgdownldr.exe do pobrania pliku z Internetu używa obiektu BITS COM Object to proces, który faktycznie nawiązuje połączenie TCP i tworzy plik na dysku jest procesem svchost („-k netsvc -p -s BITS”), a nie desktopimgdownldr.exe!

Od strony tropienia artefaktów w systemie operacyjnym powinniśmy:

  • ustawić flagi na wykonanie programu desktopimgdownldr.exe oraz mklink.exe
  • sprawdzać zmiany wartości ścieżek w zmiennych systemowych dla %systemroot%
  • Monitorować zmiany w ścieżce rejestru systemowego w “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP” w szczególności te nieudane, które wskazują na użycie programu desktopimgdownldr.exe na uprawnieniach zwykłego użytkownika.

Od strony tropienia użycia programu w sieci powinniśmy zwrócić uwagę na komunikację HTTP/HTTPS w sieci do innych adresów internetowych niż te należące do Microsoft, w których pole komunikacji User-Agent zawiera wartość „Microsoft BITS”.