W świecie malware'ów i dropper'ów umiejętność deobfuskacji skryptów PowerShell'a jest istotnym elementem analizy, pozwalającym na dokładne zgłębienie działania często skomplikowanych skryptów. Zaprezentuję dotychczas znane metody deobfuskacji tych skryptów oraz zaproponuję nową, która prowadzi nawet do zbudowania własnego, automatycznego sandbox'a.
2. O mnie
Już w podstawówce bronił koleżanek przed atakami APT
Z wykształcenia programista z kilkuletnim
doświadczeniem
Aktualnie bezpiecznik w jednej z polskich instytucji
finansowych, na co dzień zwinnie walczący ze słabościami
ludzkimi i aplikacyjnymi
W wolnych chwilach wykładowca na uczelni wyższej
2 Sandbox dla PowerShella - Zrób to sam! Confidence 2019
3. Agenda
1. Dlaczego deobfuskujemy PowerShell’a?
2. Metoda 1 – Windows Event Log
3. Metoda 2 – Set-PSDebug
4. Nowości od Microsoft’u
5. Metoda 3
6. Podsumowanie
3 Sandbox dla PowerShella - Zrób to sam! Confidence 2019
4. Cel deobfuskacji PowerShell’a
Codziennie wiele korporacji jest atakowane malspam’em
W załącznikach znajdują się różnego typu dropper’y
JavaScript
Jscript
VisualBasic (VBA,VBS)
PowerShell
Skrypty języka PowerShell są często generowane
i uruchamiane przez droppery
Bywają one zaciemnione, żeby utrudnić ich analizę
4 Sandbox dla PowerShella - Zrób to sam! Confidence 2019
5. Metoda 1 – Windows Event Log
Trzeba włączyć w zasadach grup (GPO)
W podglądzie zdarzeń (EventViewer) pojawiają się bloki
skryptów PowerShell, które są uruchamiane
https://docs.microsoft.com/en-us/powershell/wmf/5.0/audit_script
5 Sandbox dla PowerShella - Zrób to sam! Confidence 2019
6. Metoda 1 – Windows Event Log
6 Sandbox dla PowerShella - Zrób to sam! Confidence 2019
7. Metoda 2 – Set-PSDebug
Confidence 2019Sandbox dla PowerShella - Zrób to sam!7
Set-PSDebug -Trace 2
Włącza tryb debugowania
Powoduje wyświetlenie pośrednich etapów
uruchamianych skryptów
Wyświetla przypisywanie wartości do zmiennych
Wyświetla uruchamiane fukncje
8. Metoda 2 – Set-PSDebug
Confidence 2019Sandbox dla PowerShella - Zrób to sam!8
9. Demo
Metoda 1 i Metoda 2
Confidence 2019Sandbox dla PowerShella - Zrób to sam!9
11. Demo – metoda 1
Confidence 2019Sandbox dla PowerShella - Zrób to sam!11
12. Demo – metoda 2
Confidence 2019Sandbox dla PowerShella - Zrób to sam!12
13. Demo – modyfikacja droppera
Confidence 2019Sandbox dla PowerShella - Zrób to sam!13
14. Demo – obfuskacja droppera
Confidence 2019Sandbox dla PowerShella - Zrób to sam!14
15. Metoda 1 i 2 – wady i zalety
Confidence 2019Sandbox dla PowerShella - Zrób to sam!15
+ Szybka konfiguracja
+ Łatwe w użyciu
- Skrypt może wyczyścić logi lub wyłączyć debugowanie
- Gotowe i zamknięte rozwiązanie
16. Metoda 1 i 2 – wady i zalety
Confidence 2019Sandbox dla PowerShella - Zrób to sam!16
+ Szybka konfiguracja
+ Łatwe w użyciu
- Skrypt może wyczyścić logi lub wyłączyć debugowanie
- Gotowe i zamknięte rozwiązanie
Czy na pewno?
18. Nowości od Microsoft’u
Confidence 2019Sandbox dla PowerShella - Zrób to sam!18
Chcę przeprowadzić analizę skryptu PowerShell’a
Środowisko do analizy przygotowane już na LUbuntu
Malware w większości na Windows’a
Skąd wziąć PowerShell’a na LUbuntu?
A może Docker?
28. Nowości od Microsoft’u – nie wierzę
Confidence 2019Sandbox dla PowerShella - Zrób to sam!28
Czas trwania: ok. 2h
29. Nowości od Microsoft’u – nie wierzę
Confidence 2019Sandbox dla PowerShella - Zrób to sam!29
Czas trwania: ok. 10min
Prawie 1300 plików *.cs, które mają ponad 130 000 linii kodu
30. Nowości od Microsoft’u – nie wierzę
Confidence 2019Sandbox dla PowerShella - Zrób to sam!30
Czas trwania: ok. 5min
31. Nowości od Microsoft’u – nie wierzę
Confidence 2019Sandbox dla PowerShella - Zrób to sam!31
32. Nowości od Microsoft’u – nie wierzę
Confidence 2019Sandbox dla PowerShella - Zrób to sam!32
Czas trwania: ok. 10min, W sumie: <2,5h
34. Demo – uruchomienie interpretatora PS
Confidence 2019Sandbox dla PowerShella - Zrób to sam!34
35. Demo – modyfikacja interpretatora PS
Confidence 2019Sandbox dla PowerShella - Zrób to sam!35
36. Demo – modyfikacja interpretatora PS
Confidence 2019Sandbox dla PowerShella - Zrób to sam!36
37. Demo – a może Visual Studio?
Confidence 2019Sandbox dla PowerShella - Zrób to sam!37
38. Demo – a może Visual Studio?
Confidence 2019Sandbox dla PowerShella - Zrób to sam!38
39. Demo – zróbmy własny sandbox!
Confidence 2019Sandbox dla PowerShella - Zrób to sam!39
40. Interpreter PowerShell’a – Metoda 3
Confidence 2019Sandbox dla PowerShella - Zrób to sam!40
+ Nie do zablokowania
+ Nieograniczone możliwości
+ Można zbudować box-js dla PowerShell’a
- Przygotowanie wymaga umiejętności programisty C#
42. Podsumowanie
Confidence 2019Sandbox dla PowerShella - Zrób to sam!42
Każda z metod ma swoje plusy i minusy
Ile zmieniło opublikowanie kodu źródłowego interpretera
języka PowerShell?
43. Podsumowanie
Confidence 2019Sandbox dla PowerShella - Zrób to sam!43
Każda z metod ma swoje plusy i minusy
Ile zmieniło opublikowanie kodu źródłowego interpretera
języka PowerShell?
Jest to kolejny argument za oprogramowaniem
z otwartym kodem źródłowym (Open Source)