Eksfiltracja w stylu R2-D2
Powyższy oneliner spowoduje wyskfiltrowanie wyniku polecenia
ipconfig
za pomocą głośnika, gdzie każdy znak będzie tonem o różnej częstotliwości.
Rozbijmy to na części pierwsze:
Skąd nazwa Out-R2D2?
Myślę, że każdy z Was, kto oglądał Gwiezdne Wojny i uruchomi ten skrypt u siebie, zrozumie nawiązanie do sympatycznego droida.
Ale po co?
Tak, nie jest to szybki i praktyczny sposób eksfiltracji danych. Pokazuje on jednak bardzo wyraźnie, że wyjście karty dźwiękowej może być jednym ze sposobów kradzieży danych i prawdopodobnie sposobem ominięcia rozwiązań klasy DLP ( Data Loss Prevention). Wystarczy wykorzystać choćby dość łatwe do zaimplementowania kluczowanie FSK, które pozwoli na akceptowalny do eksfiltracji dokumentów transfer i zamiast puszczać to na głośnik, podłączyć telefon i nagrać tak przechwycone audio.
Jak to działa — krok po kroku
Rozłóżmy onelinera na czynniki pierwsze:
filter Out-R2D2 { ... }
definicja filtra o nazwie Out-R2d2. Filtr w PowerShellu to prosta funkcja, która przetwarza obiekty pochodzące z potoku,
$_.ToCharArray()
wejściowy obiekt (reprezentowany przez zmienną automatyczną $_ lub alternatywnie $PSItem) przekonwertuj na tablicę znaków,
[console]::beep(1000+([int][char]$_*20), 100)
odegraj ton o długości 100 milisekund i częstotliwości o sumie 1000 i wartości dziesiętnej danego znaku pomnożonej przez 20,
ipconfig | Out-R2D2
wykonaj polecenie ipconfig i wynik jego działania wyślij do filtra Out-R2D2