Zacznijmy od prostego przykładu:
PS /Users/drg> filter tb64{[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($_))}
PS /Users/drg> whoami
drg
PS /Users/drg> whoami | tb64
ZAByAGcA
PS /Users/drg>
Tworząc ten filtr, w wygodny sposób możemy mieć pod ręką szybki sposób na kodowanie danych do base64. Jedno z zastosowań to przygotowanie danych do eksfiltracji. Koklejnym jest przygotowanie
payloadu do uruchomienia przez
Powershella z wykorzystaniem opcji
-enc
, czyli np:
PS C:\Users\Administrator> echo "whoami"|tb64
dwBoAG8AYQBtAGkA
PS C:\Users\Administrator> powershell -enc dwBoAG8AYQBtAGkA
win-rvm4fv5tv8u\administrator
PS C:\Users\Administrator>
Różnica między filtrem a chociażby funkcją polega na tym, że filtr przetwarza pojedyńczo każdy element wejściowy, zobaczcie:
Generalnie to jest duży plus filtrów, natomiast warto o tym pamiętać, że jeśli byśmy chcieli zakodować całe wyjście poprzedniego polecenia w jeden duży string base64, jednym ze sposobów byłoby zamienienie całego wyjścia polecenia na string z użyciem
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.