PowerShell protip 002b
in 𝕏

Powershellowy Select-String pomoże odnaleźć interesujące stringi niczym grep

tty1 · powershell
PS> Select-String
#Powershell#Windows#RedTeam#BlueTeam

Select-String pozwala na wyszukiwanie ciągów znaków. Przyjmuje zarówno proste teksty jak i wyrażenia regularne.

Przykładowe użycie

Wróćmy do protipa 002a, w którym wykorzystaliśmy strings.exe do wyświetlenia ciągów znaków drukowalnych o długości 80:

PS C:\Users\drg\Downloads> .\Strings\strings.exe -n 80 malware.doc

Możemy teraz wynik tego polecenia dać na na wejście Select-String, by wyszukać interesujące nas słowa kluczowe, np. cmd, powershell:

PS C:\Users\drg\Downloads> .\Strings\strings.exe -n 80 .\malware.doc|Select-String cmd,powershell

cmd /c powershell -w h -enc aQB3AHIAIABoAHQAdABwAHMAOgAvAC8AYQBwAHQAbQBjAC4AcABsAC8AYwBhAGwAYwB8AGkAZQB4AA==A@&

PS C:\Users\drg\Downloads>

Od razu widzimy tylko to, co nas interesuje.

Kolejnym, dość naiwnym przykładem, ale wystarczającym żeby zaprezentować możliwość pracy z wyreżaniami regularnymi może być:

PS C:\Users\drg\Downloads> .\Strings\strings.exe -n 40 .\malware.doc|Select-String "([a-z0-9+/]{40,}={1,3})"|%{$_.Matches.Value}
aQB3AHIAIABoAHQAdABwAHMAOgAvAC8AYQBwAHQAbQBjAC4AcABsAC8AYwBhAGwAYwB8AGkAZQB4AA==
PS C:\Users\drg\Downloads>

Co tu się wydarzyło? Wyrażenie regularne "([a-z0-9+/]{40,}={1,3})" wyszukuje nam ciągi znaków składających się z liter, cyfr, znaków + oraz / zakończonych na 1 lub 3 znakami =. Czyli coś, co wygląda jak base64 (ale nie zawsze base64 musi się kończyć =). Jako, że używamy grupowania poprzez (), select-string zwróci nam obiekty, w których pod Matches.Value będziemy mieli to, czego szukaliśmy. Wykorzystując ForEach-Object (w skrócie %) iterujemy po obiektach i wyświetlamy co trzeba.

Warto zapoznać się z manualem, np. parametr -Context 3 po odnalezieniu pasującej linijki pokaże nam jeszcze 3 linijki wyżej i 3 linijki niżej (podobnie jak grep -C 3).

Przydatne linki

https://docs.microsoft.com/en-gb/powershell/module/Microsoft.PowerShell.Utility/Select-String dokumentacja Select-String, którą warto przejrzeć web ↗
← poprzedni protip 002a ••• Wszystkie protipy następny → protip 002c
// 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: