Otrzymujesz dokumenty PDF na pocztę e-mail? Uważaj! Jeśli nie jesteś pewien, to lepiej ich nie otwieraj lub sprawdź je w odizolowanym środowisku.


Na czym polega problem?


O tym, że dokumenty PDF mogą zawierać złośliwe instrukcje pisaliśmy na Kapitanie Hacku tutaj, opisując ciekawą podatność jaka pojawiła się pod koniec 2018 roku z zainfekowanym dokumentem PDF. Wtedy okazało się też, że podatność ta nie do końca została naprawiona przez firmę Adobe – co pokazaliśmy także w powyższym artykule. Pomimo wydania hotfix’a do Adobe Reader’a otwarcie dokumentu PDF jedynie wymusza na użytkowniku podjęcie decyzji w postaci prezentacji na ekranie okna dialogowego i stosownego komunikatu.

Kilka dni temu pojawiła się kolejna możliwość wykradnięcia hashy NTLMv2 zalogowanych do systemu Windows użytkowników poprzez dokument PDF – tym razem za pomocą osadzonego w nim XML’a. Otwarcie takiego zainfekowanego PDF’a powoduje wywołanie XML’a z odnośnikiem do zewnętrznego zasobu po protokole SMB, z którego można przejąć w łatwy sposób hash hasła zalogowanego użytkownika!

Na tą chwilę może to być swoistego rodzaju zero-day, ponieważ autor nie zgłosił jeszcze tej podatności, a w zasadzie problemu do Adobe (szczegóły tutaj). Istnieje co prawda sposób jak użytkownicy mogą się przed tym zabezpieczyć, ale o tym poniżej.
Postanowiliśmy przetestować problem w naszym środowisku. Zatem do dzieła!


Jaki kod w PDF jest dla nas tutaj szkodliwy?


W dokumentach PDF istnieją specjalne sekcje, gdzie możemy osadzać specjalny kod. W przypadku opisywanej podatności jej autor znalazł sposób w strukturze XFA (XML Form Architecture), a konkretnie w wykonaniu odwołania do zewnętrznego zasobu, odsadzając w dokumencie PDF arkusz stylów xml.

Przypomnijmy, że XFA o struktura XML wewnątrz pliku PDF, która definiuje formularze i wiele innych pól. Tym razem nie jest nawet konieczne użycie funkcji formularza XFA, ale zamiast tego wykonanie triku polegającym na osadzeniu arkusza stylów XML.
Program Adobe Reader wykrywa wszystkie adresy URL http/https zdefiniowane w elemencie stylów XML i prosi o potwierdzenie użytkownika prezentując mu okno dialogowe. Wywołanie okna można w łatwy sposób ominąć za pomocą wskazania w dokumencie ścieżek UNC.


Scenariusz sprawdzenia podatności PDF


W celu sprawdzenia podatności i wykrywalności jej przez oprogramowanie do bezpieczeństwa użyliśmy szablonu pliku PDF dostępnego w źródle GitHub.

Po stronie atakującego uruchomiliśmy nasz serwer „udający” serwer SMB (wykorzystując Responder’a), dzięki czemu byliśmy w stanie przejąć wszystkie hashe użytkowników. Sprawdziliśmy także, jak zachowują się dostępne rozwiązania na rynku w przypadku wykrywania tego typu zainfekowanych plików PDF. Scenariusz przedstawia się następująco:

1. Uruchamiamy w sieci Responder, który podszywa się pod serwer SMB.

Uruchomiony Responder

2. Tworzymy plik PDF zawierający odwołanie po ścieżce UNC do dowolnego zasobu na serwerze z Responderem. Może to być nawet nieistniejący zasób, tak jak w naszym przypadku. Nazwaliśmy plik: „zamowienie.pdf”.

Kod pliku PDF

3. Kopiujemy lub wysyłamy mailem na stację Windows 10 Professional (komputer ofiary) złośliwy plik „zamówienie.PDF”. Na komputerze ofiary mamy zainstalowany Windows 10 Professional (najnowszy build 1809) z aktualnymi aktualizacjami oraz włączoną usługą Windows Defender. Ku naszemu zdziwieniu system Windows nie wykrywa podejrzanego pliku. Na komputerze ofiary mamy zainstalowaną najnowszą wersję Adobe Acrobat Reader DC – 2019.010.20069.

4. Otwieramy plik PDF na stacji ofiary. Ponieważ ścieżka UNC, którą zamieściliśmy w pliku PDF w rzeczywistości nie istnieje na naszym serwerze, Adobe uprzedza nas o tym pokazując stosowny komunikat w nowym oknie dialogowym. Gdyby ścieżka była prawdziwa, wówczas komunikat nie pojawiłby się!

Komunikat po otwarciu złośliwego pliku na stacji

5. Po stronie naszego serwera z Responderem widzimy przechwycony hash hasła użytkownika „APPEAL\ofiara”. Oczywiście do jego zdekodowania moglibyśmy użyć innego narzędzia wymienianego w naszej kampanii Narzędzi hackerskich, lecz nie będziemy się tutaj na tym skupiać. Podpowiemy tylko, że jest to jedno z haseł słownikowych (o słabych hasłach w organizacjach pisaliśmy tutaj).

Wynik przesłany do Responder’a

6. Na koniec pokazujemy Tobie wynik skanowania zainfekowanego pliku „zamówienie.pdf” przez oprogramowanie do bezpieczeństwa na stronie VirusTotal. Otrzymany wynik 2/59 pokazuje potencjalną skalę słabości w niewykrywalności tego typu ataku przez narzędzia do bezpieczeństwa.

Wskazania VirusTotal

Jak radzić sobie z problemem?


Przede wszystkim musimy uważać na pliki jakie otrzymujemy pocztą e-mail i oczywiście na e-mail’e z linkami, które docierają do użytkowników najczęściej w kampaniach phishingowych.

Musimy koniecznie skonfigurować (włączyć opcję) „Podglądu chronionego”(„Protected View”) w Adobe Reader, ponieważ jest ona domyślnie wyłączona!
Opcję tą znajdziemy w menu „Edycja->Preferencje->Zabezpieczenia (Zaawansowane)->Podgląd chroniony: „Wszystkie pliki””. Zabezpieczy to nas przed wysyłaniem żądań przez Adobe na zewnątrz pliku podczas jego otwarcia. Prawidłowe (niezainfekowane pliki) powinny otwierać się poprawnie.
Więcej informacji na ten temat znajdziesz tutaj oraz tutaj.

Opcja trybu chronionego w Adobe Reader

Od strony infrastruktury IT w firmie powinniśmy zwrócić uwagę na takie aspekty jak:

  • Skonfigurowanie za pomocą GPO (w Active Directory) lub innego rozwiązania do zarządzania konfiguracją komputerów „podgląd chroniony” w aplikacji Adobe na wszystkich komputerach w firmie,
  • Wyłączenie zewnętrznego dostępu do usługi SMB na zaporze sieciowej w celu zapobiegnięcia przedostawania się hashy NTLM do Internetu,
  • Microsoft wydał opcjonalne rozszerzenie zabezpieczeń (link) pod koniec 2017 roku, które zapewnia klientom możliwość wyłączenia uwierzytelniania NTLM SSO jako metody dla zasobów publicznych. W przypadku zastosowania tej metody nie poprawi ona luki dotyczącej oprogramowania Adobe Acrobat DC i Adobe Acrobat Reader DC, tylko zabezpieczy mechanizm uwierzytelniania.
  • Monitorowanie procesu Adobe Readera i jego komunikacji z Internetem.
  • Skanowanie plików przez rozwiązania do bezpieczeństwa brzegowego i antywirusy.
  • Monitorowanie użycia kont użytkowników w Active Directory (logowania). Wszelkie próby logowania z nietypowych adresów lub jednoczesne zalogowania na to samo konto z wielu komputerów powinny być osobno analizowana. Nigdy nie mamy pewności, że ktoś inny nie przechwycił naszego hasła w ten (opisywany tutaj), czy inny sposób.
  • Przydatne byłoby także zastosowanie systemów do wykrywania w sieci nietypowej aktywności z końcówek. System wykorzystujący sztuczną inteligencję miałby tutaj również zastosowanie w kontekście wykrycia nietypowych dotychczas połączeń ze stacji do Internetu.
  • Analiza słabych haseł użytkowników w firmie – pisaliśmy o tym tutaj.


Pozdrawiamy,
Zespół Kapitan Hack

Podziel się z innymi tym artykułem!