alphasec academy

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

Dodatkowe informacje

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 aptm.in/protip/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


Subskrybuj

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.