PowerShell protip 0034
in 𝕏

filter tb64 { [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($_)) } - przydatny filtr do kodowania Base64

tty1 · powershell
PS> filter tb64 { [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($_)) }
#Powershell#RedTeam#Base64

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>

Co jest istotnego w filtrach?

Różnica między filtrem a chociażby funkcją polega na tym, że filtr przetwarza pojedyńczo każdy element wejściowy, zobaczcie:

PS C:\Users\Administrator> ls C:\Users\

    Directory: C:\Users

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        6/14/2020   4:03 PM                Administrator
d-r---        2/10/2020   9:19 AM                Public

PS C:\Users\Administrator> ls C:\Users\|tb64
QQBkAG0AaQBuAGkAcwB0AHIAYQB0AG8AcgA=
UAB1AGIAbABpAGMA
PS C:\Users\Administrator>

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 Out-String, a następnie to przekazać do naszego filtra:

PS C:\Users\Administrator> ls C:\Users\|out-string|tb64
DQAKAA0ACgAgACAAIAAgAEQAaQByAGUAYwB0AG8AcgB5ADoAIABDADoAXABVAHMAZQByAHMADQAKAA0ACgANAAoATQBvAGQAZQAg
ACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEwAYQBzAHQAVwByAGkAdABlAFQAaQBtAGUAIAAgACAAIAAgACAAIAAgACAA
TABlAG4AZwB0AGgAIABOAGEAbQBlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAg
ACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAADQAKAC0ALQAtAC0AIAAgACAAIAAgACAAIAAgACAAIAAgACAA
IAAgACAAIAAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtACAAIAAgACAAIAAgACAAIAAgAC0ALQAtAC0ALQAtACAALQAtAC0ALQAg
ACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAA
IAAgACAAIAAgACAAIAAgAA0ACgBkAC0ALQAtAC0ALQAgACAAIAAgACAAIAAgACAANgAvADEANAAvADIAMAAyADAAIAAgACAANAA6
ADAAMwAgAFAATQAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAIAAgACAA
IAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAANAAoAZAAt
AHIALQAtAC0AIAAgACAAIAAgACAAIAAgADIALwAxADAALwAyADAAMgAwACAAIAAgADkAOgAxADkAIABBAE0AIAAgACAAIAAgACAA
IAAgACAAIAAgACAAIAAgACAAIABQAHUAYgBsAGkAYwAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAg
ACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAADQAKAA0ACgANAAoA
PS C:\Users\Administrator>
← poprzedni protip 0033 ••• Wszystkie protipy następny → protip 0035
// 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: