Menu dostępności

Przejęcie kontroli nad komputerem przy użyciu protokołu DNS

W dzisiejszym artykule pokażemy jak za pomocą protokołu DNS (ang. Domain Name System) i specjalnego narzędzia napisanego w języku Python można przejąć kontrolę nad komputerem Windows oraz zdalnie wykonywać na nim komendy. Na koniec pokażemy scenariusz ataku z wykorzystaniem DNS i opiszemy jak się przed nim chronić.


Złośliwy PowerShell i niemonitorowany DNS – duże zagrożenia dla organizacji

O tym w jaki sposób cyberprzestępcy pozostają w ukryciu podczas atakowania komputerów (tzw. Living off the Land) pisaliśmy bardzo szczegółowo w naszym technicznym artykule „W jaki sposób malware może wykorzystać usługę DNS do pobrania dowolnego kodu

W celu uruchomienia ładunku na komputerze ofiary cyberprzestępcy najczęściej używają bezplikowych technik ataku oraz komunikują się używając przeróżnych protokołów transmisji (w tym DNS), aby mogli pozostać niewykryci przez tradycyjne oprogramowanie do bezpieczeństwa. W przypadku ataku opisywanego w naszym artykule wykorzystane będą użyte dwie technologie:

  • PowerShell do wykonania ładunku na komputerze.
  • Protokół DNS do transportu kodu malware i komend poprzez specjalne rekordy TXT.

DNS-Shell

Protokół DNS działa na warstwie aplikacyjnej modelu TCP/IP. Jeśli cyberprzestępca próbowałby wykorzystać lukę RCE (Remote Command Execution) w DNS wówczas serwer DNS stanie się backdoor’em i posłuży do wykonywania poleceń. Narzędzie DNS-Shell jest narzędziem do eksploitacji napisanym w języku Python, które pozwala skompromitować maszynę ofiary (zapewnia do niej zdalny dostęp z serwera za pomocą wiersza linii poleceń).


Budowa skryptu DNS-Shell

DNS-Shell składa się z dwóch części. Pierwsza to serwer, czyli maszyna atakującego oparta jest na Pythonie i może działać na dowolnym systemie operacyjnym pod warunkiem, że jest na nim zainstalowany interpreter skryptów python. Druga to ładunek, który musimy odpalić (uruchomić) na komputerze ofiary. Skrypt serwera po uruchomieniu umożliwia wygenerowanie ładunku (payload), który jest zakodowanym poleceniem w PowerShell. Ładunek jest generowany automatycznie w momencie uruchomienia skryptu na serwerze i używa do komunikacji poleceń nslookup. Polecenia te to nic innego jak wykonywanie komend i wysyłanie zapytań o nowe komunikaty do serwera, na które czeka nasłuchując na porcie 53 UDP (port używany przez DNS). W momencie, gdy na komputerze ofiary zostanie uruchomiony ładunek, po stronie serwera otrzymamy interaktywną powłokę (interpreter linii komend Windows). Po udanym ustanowieniu kanału transmisji ładunek będzie nieustannie odpytywał serwer o polecenia, jeśli wprowadzono nowe polecenie, wykona je i zwróci wynik z powrotem do serwera.


Scenariusz DNS-Shell

Uruchomienie skryptu DNS-Shell jest stosunkowo proste. W naszym teście komputerem (serwerem), na którym odpalimy skrypt będzie Linux Kali. W przypadku wywołania z linii komend skryptu DNS-Shell mamy do wyboru dwa tryby działania: bezpośredni i rekursywny:

  • Tryb bezpośredni DNS-Shell komenda: sudo python DNS-Shell.py -l -d [IP Serwera]
  • Tryb rekursywny DNS-Shell komenda: sudo python DNS-Shell.py -l -r [Domena]
Dostępne parametry wywołania skryptu „DNS-Shell.py”

Po wybraniu odpowiednich opcji uruchomienia skryptu i naciśnięcia klawisza ENTER wygeneruje się nam zakodowany skrypt PowerShell.

Wygenerowany ładunek (zakodowany skrypt PowerShell) na serwerze, który musimy uruchomić na komputerze ofiary

Zakodowany skrypt PowerShell musimy przekopiować na komputer ofiary i uruchomić w wierszu poleceń komendą:

Powershell -e >

Uruchomienie ładunku na Windows 10

Poniższy rysunek pokazuje interpretera linii poleceń z komputera Windows 10, który działa od teraz jako backdoor i nasłuchuje komend przychodzących na porcie 53 UDP (DNS) z serwera (Kali Linux).

Wywołanie interpretera linii komend z Windows 10 na serwerze (komputer atakującego)

Dla pokazania całego scenariusza ataku zamieściliśmy poniżej film:


Testy bezpieczeństwa

Jak widać na podstawie powyższego scenariusza udało nam się uruchomić bez problemów skrypt na komputerze z Windows 10 (wersja 1903) i włączoną oraz zaktualizowaną usługą Windows Defender. Dodatkowo skrypt ładunku postanowiliśmy sprawdzić na portalu Virustotal. Wynik przeskanowania przez skanery antywirusowe 0/56 także nas nie zaskoczył i wyjaśnił nam, dlaczego nie zareagował na odpalenie ładunku Windows Defender. W tym przypadku standardowy antywirus nam się nie sprawdzi.

Wskazania VirusTotal

Co możemy zrobić z problemem?

Atak z wykorzystaniem protokołu DNS nie jest najnowszym osiągnieciem, lecz wciąż może stwarzać poważne zagrożenie dla wielu użytkowników oraz firm, które nie zabezpieczają należycie środowiska IT. Przede wszystkim w pierwszej kolejności powinniśmy skupić nasza uwagę na monitorowaniu zapytań i ich ilości do serwera DNS. W szczególności powinny być monitorowane zapytania o rekordy TXT, ponieważ za ich pomocą malware na komputerze komunikuje się z serwerem (komputerem atakującego). Ciekawą opcja jest także zaimplementowanie Sinkhole. Poza zabezpieczeniem DNS powinniśmy także monitorować i zabezpieczyć wywołania Powershell. Pisaliśmy o tym w artykule tutaj.

Jeśli jesteś zainteresowany ochroną systemu za pomocą specjalistycznych narzędzi do bezpieczeństwa zapraszamy do kontaktu z firmą Appeal.

Popularne

Alarm dla administratorów i działów bezpieczeństwa – krytyczna luka CVE-2025-59287 w Windows Server Update Services wykorzystywana przez cyberprzestępców! Zabezpiecz się, zanim Twoja infrastruktura padnie ofiarą ataku

Alarm dla administratorów i działów bezpieczeństwa – krytyczna luka CVE-2025-59287 w Windows Server Update Services wykorzystywana przez cyberprzestępców! Zabezpiecz się, zanim Twoja infrastruktura padnie ofiarą ataku

Pojawiła się groźna luka, oznaczona jako CVE-2025-59287, pozwalająca atakującym na zdalne wykonanie kodu w systemach z rolą Windows Server Update Services („WSUS”). Co gorsza, został już udostępniony publiczny ex...
Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

W tym artykule pokażemy, jak możemy zmienić hasło administratora na komputerze posiadając do niego fizyczny dostęp. Artykuł ten można potraktować także jako przestrogę dla firm, które nie zaimplementowały jeszcze odpo...
Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jeśli masz odrobinę szczęścia lub „odpowiednie umiejętności” i potrafisz zdobyć lokalne uprawnienia administracyjne na Twoim komputerze w firmie lub zaliczasz się do grona tych szczęściarzy, którzy pracuj...
Zero-day i groźna eskalacja uprawnień w systemie Windows –  analiza CVE-2025-59230 i ostrzeżenie CISA

Zero-day i groźna eskalacja uprawnień w systemie Windows –  analiza CVE-2025-59230 i ostrzeżenie CISA

Ostrzegamy wszystkie firmy i instytucje przed nowo ujawnioną luką w systemie Microsoft Windows – CVE-2025-59230. Jest to poważna podatność, umożliwiająca lokalnemu atakującemu z niskimi uprawnieniami uzyskanie...
Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

W środę 9 października użytkownicy platformy Microsoft Azure na całym świecie doświadczyli poważnych zakłóceń. Wiele usług stało się niedostępnych, a administratorzy nie mogli nawet zalogować się do portalu...