Do napisania tego artykułu zainspirowała mnie operacja GhostPulse opisana przez CERT Orange (po polsku) oraz oryginalnie przez Elastic Security Labs (po angielsku). W dużym skrócie – jednym z etapów złośliwej kampanii było wygenerowanie pliku instalacyjnego MSIX. Warunkiem koniecznym do uruchomienia takiego programu na (większości) stacji roboczej jest podpis prawidłowym certyfikatem. Fragment raportu Elastic Security mówi, iż „However, MSIX requires access to purchased or stolen code signing certificates making them viable to groups of above-average resources.”.
Zacząłem się zastanawiać czy rzeczywiście zdobycie aktualnego certyfikatu, który służy do podpisu cyfrowego (Key Usage!) jest takie trudne i czy cyberprzestępcy są w stanie znaleźć to w otwartym Internecie.
Ale czego tak na prawdę potrzebuję?
Zacznijmy od tego, czego potrzebujemy do podpisywania naszego pliku instalacyjnego. Potrzebny nam jest certyfikat wraz z kluczem prywatnym oraz z całym drzewkiem certyfikatów zaufanych CA, które podpisały nasz certyfikat. Najczęściej pliki z certyfikatami mają następujące rozszerzenia:
- PFX
- P12
- CER
- CRT
- PEM
- DER
Nie chcę tutaj rozwijać za bardzo różnic pomiędzy tymi formatami, ale skrótowo je opiszę:
PFX to „kontener”, który może zawierać w sobie wiele certyfikatów i kluczy. Jest on kompatybilny z formatem P12, co oznacza, iż możemy konwertować je bez utraty funkcjonalności, zmieniając ich rozszerzenia w systemie Windows. Plik PFX jest z reguły zaszyfrowany.
CER oraz CRT to formaty plików, które zawierają tylko certyfikat. Może być on przechowywany zarówno w formacie binarnym (.DER) lub w formacie tekstowym (.PEM). Zawiera on w sobie certyfikaty zgodne ze standardem X.509, tj. zawiera informacje o podmiocie, nazwie, organizacji, ma w sobie również klucz publiczny służący do szyfrowania lub weryfikacji podpisu cyfrowego, w końcu zawiera też podpis cyfrowy CA, które wystawiło certyfikat.
Istnieje też rozszerzenie „.key”. Pliki takie najczęściej zawierają klucz prywatny, który jest częścią pary kluczy. Może być on przechowywany w formacie binarnym .DER jak i .PEM. Kojarzycie napis „——– BEGIN PRIVATE KEY ———-„? To właśnie format tekstowy .PEM.
Powyższy nagłówek można więc podsumować następująco: potrzebujemy albo kontenera PFX – czyli certyfikatu i klucza prywatnego, albo połączenia klucza prywatnego .key oraz certyfikatów .cer.
Aby było jeszcze bardziej skomplikowanie, czasami różne elementy certyfikatów, kluczy, CSR (Certificate Signign Reqeuest) mogą być przechowywane z rozszerzeniem .PEM! Wtedy po prostu oznacza to, iż certyfikat jest przechowywany w formie tekstowej, klucz jest przechowywany w formie tekstowej itp. itd.
Jeżeli jest tu jakiś specjalista od kryptologii i są jakieś błędy w powyższych definicjach – chętnie przyjmę krytykę!
Możemy więc podsumować to w taki sposób: o ile chcemy zasymulować taki atak, powinniśmy szukać kontenerów PFX lub kombinacji klucza wraz z certyfikatem.
Potęga Google Dorks
W jaki sposób najczęściej Administratorzy serwerów www wystawiają pliki do pobrania? Z wykorzystaniem tzw. „Directory Listing”, czyli funkcjonalności serwerów webowych umożliwiających wyświetlania zawartości katalogów i hostowanie plików. W tytule takiej strony znajduje się wtedy fraza „Index of”.
Wykorzystajmy więc dobrze znany Google Dork: intitle:”Index of” w celu znalezienia interesujących nas plików.
intitle:"Index of" pfxPo chwili przed naszymi oczami pojawi się duża ilość zasobów zawierających w sobie pliki PFX! Zakładam, iż większość tych plików i zasobów znalazła się w otwartym Internecie przez przypadek. Być może jednak niektórzy myślą, iż pliki PFX zabezpieczone hasłem to wystarczająca ochrona przed potencjalnymi przestępcami. Nic bardziej mylnego – współczesne zasoby sprzętowe mają na prawdę duże możliwość ataków brute-force na pliki PFX, tym bardziej, iż są to ataki offline.
Jeżeli komuś zależy, może łamać takie pliki choćby i miesiącami. Potencjalny zysk jest większy niż poniesione koszty.
Pamiętacie jeszczeo kluczu .key i certyfikacie .cer?
Możemy spróbować użyć operatorów lub, aby przeszukać zawartości serwerów w poszukiwaniu plików key.
intitle:"Index of" (intext:"pfx" | intext:"key")I w ten sposób trafiamy na kolejny zasób, zawierający CSR, klucz, certyfikat, jak i kontener PFX.
Jak się zabezpieczyć?
Dobre praktyki i procedury mają ogromne znaczenie, ale często moment weryfikacji przychodzi w momencie realnego testu. Dobrą analogią są procedury wykonywania backupów. Ich posiadanie jest bardzo ważne, ale równie istotne jest rzeczywiste sprawdzenie od czasu do czasu czy uda się odtworzyć system z kopii zapasowej.
To samo tyczy się wrażliwych danych organizacji. DLP, procedury, procesy, to niezwykle istotna sprawa, ale czy kiedykolwiek rzeczywiście testowaliście czy wrażliwe dane waszych pracowników, kontrahentów, systemów nie są na wyciągnięcie ręki dla cyberprzestępców?
To wiele nie kosztuje. Odpalcie Google i zweryfikujcie najpopularniejsze zapytania:
Powyższe to tylko przykłady dorków, które możemy przetestować. Przygotowując się do takich testów, powinniśmy sprawdzić z jakich technologii korzystamy na co dzień i jakie rozszerzenia mają pliki konfiguracyjne. Scope poszukiwanych materiałów należy przygotować możliwie najszerzej. Być może korzystamy z charakterystycznego software, który wykorzystuje „niestandardowe” rozszerzenia? Czy wykonujemy backupy skrzynek Outlooka? jeżeli tak, nie zapomnijmy o formacie „PST”. Przykłady można mnożyć.
Często backupy tych plików konfiguracyjnych lądują w miejscach, które są dostępne z sieci. Zastanówmy sie też jakie mamy endpointy „wystawione” do Internetu. Być może oprócz URLa „twojafirma.com” powinniśmy przetestować inne (np. deweloperskie) domeny i adresy IP.
Więcej o najpopularniejszych dorkach możecie przeczytać tutaj.
Pamiętajmy również o zasadzie low-hanging fruits. Przestępcy nie będą musieli stosować wyszukanych metod aby dostać się do Waszej infrastruktury, kiedy pliki „ovpn” będą dostępne od ręki.
Jak się zabezpieczyć jeszcze bardziej?
Monitorowanie własnych zasobów to jedno. A co jeżeli staniemy się ofiarą Malware, który został podpisany właśnie takim „zleakowanym” certyfikatem? Przypomina mi to analogię do sytuacji na drodze, w której osoba, która zawsze dba o bezpieczeństwo i jeździ zgodnie z przepisami – a i tak uczestniczy w wypadku spowodowanym przez kogoś nierozważnego.
Myślę, iż dobrym rozwiązaniem jest masowe wdrożenie AppLockera w organizacjach,, który działa w oparciu o sztywne reguły white-lists. Może być to nieco uciążliwe na etapie wdrożenia, ale uważam, iż w ogólnym rozrachunku zapewnia zadowalający poziom bezpieczeństwa.
Czy AppLocker wspiera obsługę plików MSIX? Pewnie, iż tak. Więcej o tym możecie przzeczytać tutaj.