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

Repozytoria na GitHubie zainfekowane w ataku Megalodon!

Repozytoria na GitHubie zainfekowane w ataku Megalodon!

Ponad 5 500 repozytoriów na GitHubie zostało zainfekowanych złośliwym oprogramowaniem w ataku na łańcuch dostaw, wykorzystującym zautomatyzowane zatwierdzanie zmian. Kampania, nazwana „Megalodon”, opiera si...
Korporacyjny Gmail z funkcją szyfrowania end-to-end

Korporacyjny Gmail z funkcją szyfrowania end-to-end

O Google pisaliśmy w tym roku już kilka razy. A to o podatności w Google Cloud Run, a to o mało ciekawych praktykach związanych z gromadzeniem danych. Dzisiaj, dla odmiany, pochwalimy! We wtorek 1 kw...
Wykorzystanie fałszywych aplikacji Ledger do łamania sprzętowych portfeli kryptowalut

Wykorzystanie fałszywych aplikacji Ledger do łamania sprzętowych portfeli kryptowalut

Nowe kampanie wykorzystują fałszywe aplikacje Ledger do atakowania użytkowników systemu macOS i ich kryptowalut. Cyberprzestępcy wdrażają złośliwe oprogramowanie, które próbuje ukraść frazy początkowe,...
Nowy atak na zabezpieczenia sieci Wi-Fi – SSID Confusion

Nowy atak na zabezpieczenia sieci Wi-Fi – SSID Confusion

Specjaliści od wykrywania podatności odkryli ostatnio nową lukę w zabezpieczeniach, wynikającą z wady konstrukcyjnej standardu Wi-Fi IEEE 802.11. Podatność polega na możliwości przekonania ofiary do połącz...
YellowKey: koniec mitu o bezpieczeństwie BitLockera? Nowy zero-day pozwala ominąć szyfrowanie przy użyciu zwykłego pendrive’a

YellowKey: koniec mitu o bezpieczeństwie BitLockera? Nowy zero-day pozwala ominąć szyfrowanie przy użyciu zwykłego pendrive’a

Jeszcze w piątek opisywaliśmy nowe podatności typu zero-day, o nazwach YellowKey oraz GreenPlasma, uderzające w mechanizmy bezpieczeństwa systemów Windows. Najnowsze informacje pokazują jednak, że spr...