Wiele formatów plików, oprócz przedstawiania treści, takich jak JPEG pokazujący wykonane zdjęcie, może zawierać metadane. Te ukryte informacje mogą być nieocenione podczas śledztw OSINT-owych oraz testów penetracyjnych. Przyjrzymy się kilku przypadkom oraz narzędziom przydatnym w ekstrakcji tych pozornie ukrytych informacji.
Nieczyszczenie Metadanych z Zdjęć
Minęły już czasy, gdy znane portale społecznościowe nie czyściły metadanych z zdjęć użytkowników publikowanych na profilach. Ekstrakcja nieusuniętych współrzędnych GPS mogła stanowić poważne naruszenie prywatności, np. poprzez ujawnienie adresu zamieszkania użytkownika. Chociaż portale społecznościowe usuwają obecnie metadane z fotografii, często aplikacje o innym charakterze tego nie robią. Warto zwrócić uwagę na ten aspekt podczas testów, aby chronić użytkowników testowanego oprogramowania przed sytuacjami podobnymi do tej, która spotkała niemiecką dziennikarkę telewizyjną. Mianowicie umieściła ona w Internecie takie oto zdjęcie:
Dociekliwi internauci pobrali to zdjęcie i sprawdzili jego metadane. Oprócz klasycznych tam informacji okazało się, że zawiera ono coś więcej. Podczas wycięcia powyższego kadru program graficzny zachował oryginał zdjęcia w postaci miniaturki pokazującej szerszy kadr – ujawniający zdecydowanie zbyt wiele.
FOCA – Masowe Wykrywanie Metadanych w Dokumentach
Wyciągnięcie współrzędnych GPS czy ukrytej miniaturki ze zdjęcia stanowi „jedynie” naruszenie prywatności. Natomiast sprawdzając dokumenty pod kątem metadanych, możemy natrafić na informacje, które mogą w znaczący sposób pomóc nam podczas testów penetracyjnych. Ręczne szukanie takich plików i ich przeglądanie może nam zająć sporo czasu. Narzędzie FOCA (Fingerprinting Organizations with Collected Archives) automatyzuje ten proces. Dla podanej domeny, FOCA wyszukuje dokumenty takie jak Microsoft Office, Open Office czy PDF, a następnie wyciąga z nich metadane.
W samych zaś metadanych dokumentów mogą znaleźć loginy użytkowników, którzy dany dokument stworzyli. Informacja ta może zostać wykorzystana do prób zalogowania się w testowanej aplikacji na konto tego użytkownika.
Innymi istotnymi danymi, jakie mogą się tam znaleźć, są informacje na temat użytego oprogramowania do stworzenia pliku wraz z jego wersją. Może okazać się, że ujawnione oprogramowanie jest podatne na jakiś rodzaj ataku i wystarczy wykorzystać gotowy exploit w celu dalszej infiltracji systemu.
Oprócz informacji o oprogramowaniu czasem w dokumentach pozostawiona jest także adnotacja na temat wersji operacyjnej systemu. Taka wzmianka także stanowi znaczące ułatwienie podczas testów penetracyjnych. Wszak teraz wiemy, pod jaki system skompilować nasz kawałek złośliwego kodu.
Kolejną ciekawą rzeczą, jaka może znaleźć się w metadanych dokumentów, jest informacja na temat lokalizacji sieciowej drukarek. Może to pomóc atakującemu w zmapowaniu infrastruktury sieciowej oraz samym ataku na drukarki.
Narzędzie do pobrania z githuba – https://github.com/ElevenPaths/FOCA
ExifTool Scanner – Automatyzacja podczas Testów Penetracyjnych
O ile omówione wcześniej narzędzie działa jako samodzielny skaner dokumentów wyszukujący to co zostało już zaindeksowane przez wyszukiwarki internetowe, o tyle nie pomoże nam w ręcznym rekonesansie. Wszak często dokumenty są generowane na żądanie w formie jednorazowego dostępu do pobrania. Tutaj z pomocą przychodzi wtyczka do Burp Suite o nazwie ExifTool Scanner. Będzie ona pasywnie monitorować ruch pod kątem pojawiających się plików z metadanymi i wyciągać dla nas przydatne informacje. W jednym z audytów testowana aplikacja pozostawiała informacje o narzędziu generującym dynamicznie PDF-y oraz wersji systemu, na którym zostało uruchomione.
Narzędzie do znalezienia w BApp Storze i na githubie – https://github.com/portswigger/exiftool-scanner
Zabawne – Usuwanie Metadanych może być Niebezpieczne
W 2021 roku GitLab wypłacił 20,000 dolarów za wykrycie błędu, który w wyniku usuwania metadanych prowadził do zdalnego wykonania kodu na serwerze. Wystarczyło umieścić następujący kod w metadanych obrazka:
(metadata
(Copyright "\
" . qx{echo vakzz >/tmp/vakzz} . \
" b ") )
Podatna wersja ExifTool dokonuje weryfikacji w linii 31 exiftool/lib/Image/ExifTool/DjVu.pm, która jest odpowiedzialna za usunięcie atrybutów używających $ (zmienne Perl) lub @ (tablice Perl), w celu zapewnienia bezpieczeństwa. Jest to robione, ponieważ ta zawartość jest następnie używana w funkcji eval [9] w linii 34, która wykonuje zawartość jako kod. Aby wywołać podatną funkcję, należy utworzyć prawidłowy plik DjVu z adnotacją zawierającą ładunek, który zostanie wykonany przez funkcję eval jako kod Perl.
Więcej o tym błędzie można przeczytać tutaj: A Case Study on CVE-2021-22204: ExifTool RCE.