27.7 C
Warszawa
środa 17 lipca • 2024
Strona głównaTECHNIKACYBERBEZPIECZEŃSTWOPOLIGLOT – CZYM JEST TEN TAJEMNICZY, ZŁOŚLIWY PLIK?

POLIGLOT – CZYM JEST TEN TAJEMNICZY, ZŁOŚLIWY PLIK?

Poligloty to pliki, które mają dwa różne formaty, przez co mogą być uruchamiane w zależności od aplikacji, np. jako pliki Word lub PDF. Dzięki takiej konstrukcji plik poliglotyczny może w niewykrywalny sposób dostarczać do komputera złośliwy kod (malware).

Poliglota kojarzy nam się z osobą znającą różne języki obce, potrafiącą się nimi płynnie posługiwać. Właśnie w analogii do takiej osoby powstała nazwa „poliglot” dla plików, które mają dwa różne formaty, przez co mogą być uruchamiane w zależności od aplikacji, np. jako pliki Word lub PDF.

Dzięki takiej konstrukcji plik poliglotyczny może w niewykrywalny sposób dostarczać do komputera złośliwy kod (malware), czego przykładem jest plik z odpowiednio skonfigurowanym makrem, który po otwarciu w Wordzie uruchamia VBS i przeprowadza atak.

Co wiemy o poliglotach?

Używanie do przeprowadzania ataków poliglotów jest stosunkowo nową techniką. Jak wspomniałem we wstępie poliglotami są pliki, które zawierają w sobie dwa różne formaty i są tworzone poprzez połączenie składni z różnych formatów, przy użyciu wspólnych dla nich konstrukcji lub też konstrukcji mających różne znaczenia w językach danych formatów. W rezultacie powstaje plik, który można prawidłowo uruchomić za pomocą innych programów.

Najczęściej spotykanymi poliglotami są pliki łączące w sobie następujące formaty:

  • Word i PDF – dokument Word jest jednocześnie prawidłowym dokumentem PDF,
  • PDF i Zip – dokument PDF jest jednocześnie prawidłowo skompresowanym plikiem Zip,
  • HTML i XML – plik HTML jest równocześnie prawidłowym plikiem języka znaczników XML,
  • GIF i JAR – obraz GIF jest jednocześnie prawidłowym plikiem JAR w języku Java,
  • Python 2 i Python 3 – plik z kodem w języku Python może być uruchomiony w obu wersjach tego języka programowania, czyli zarówno w wersji 2 jak też w wersji 3.

Opisane powyżej różne wersje poliglotów stwarzają możliwości uruchamiania jednego pliku w dwóch różnych formatach, a tym samym różnej interpretacji jego zawartości, w zależności od programu. Zostało to wykorzystane przez hakerów do ukrycia złośliwego kodu w „zwykłym” pliku, tak aby złośliwy kod pozostał niewykrywalny przez systemy bezpieczeństwa.

W tym miejscu warto dodać, że w lipcu 2023 roku japoński zespół reagowania na zagrożenia komputerowe (JPCERT/CC) wykrył nową technikę ataków hakerskich za pomocą poliglota podszywającego się pod plik PDF utworzonego w programie MalDoc.

Choć plik ten poszywa się pod format PDF (rozpoczyna się od bajtów %PDF), to używa rozszerzenia .doc, przez co zostaje on otwarty w programie Word, a jego konstrukcja znacząco utrudnia wykrycie przez systemy antywirusowe lub sandboxy.

Zespół JPCERT/CC wykrył ten typ poliglota za pomocą narzędzia OLEVBA, które jest dedykowane do analizy złośliwych plików Worda. Program ten wyświetla osadzone w badanym pliku makra, dzięki czemu można wykryć złośliwy kod analizując wyniki przeprowadzonej analizy. Właśnie tak Japończycy odkryli, że nowy poliglot nie omija ustawienia, które wyłącza automatyczne wykonywanie makr w programie Word.

Jak działa poliglot?

Jednym z podstawowych celów plików poliglotycznych jest oszukanie programów, tak aby zidentyfikowały takie pliki jako prawidłowe we właściwym formacie dla danego programu. Uzyskiwane jest to przez dokładne i staranne utworzenie zawartości pliku, aby zawierał komponenty właściwe dla każdego formatu określonych programów, co także umożliwia ominięcie kontroli bezpieczeństwa dokonywanej np. poprzez program antywirusowy. Pliki poliglotyczne mogą być tworzone na różne sposoby:

  1. Sposób nr 1: spełnianie zasad formatu – każdy format pliku ma określone zasady, których musi przestrzegać, aby mógł być uznany za ważny i możliwy do wykonania w ramach określonego programu. Jako przykład mogą posłużyć obrazy zapisane w znanym formacie JPEG, które zaczynają się (w notacji szesnastkowej) od bajtów FF D8 i kończą się na bajtach FF D9 lub dokumenty zapisane w formacie PDF, które zaczynają się od bajtów %PDF. Konstrukcja plików poliglotycznych musi spełniać zasady formatu dla każdego programu, w którym taki plik ma być otwarty, np. poliglot spełniający wymagania formatów PDF oraz Zip posiada nagłówek %PDF, który jest wymagany dla plików w formacie PDF oraz zawiera prawidłową strukturę archiwum Zip w dalszej swej części, którą parsery PDF będą ignorować.
  2. Sposób nr 2: używanie wspólnej składni – tutaj wykorzystywane są dwie przeciwstawne cechy wielu formatów zapisu danych, mianowicie:
    – interpretacja przez różne programy tej samej składni w ten sam sposób, np. komentarze „//” są ignorowane przez większość języków programowania,
    – kod, który jest obojętny w jednym formacie może być użyty jako kod aktywny w innym formacie, jak w powyższym przykładzie z poliglotem PDF-Zip.
    Taka konstrukcja poszczególnych formatów zapisu danych umożliwia zawieranie w poliglotach nakładających się treści.
  3. Sposób nr 3: stosowanie logiki warunkowej – ten sposób opiera się na wykonywaniu określonych sekcji kodu tylko w jednym środowisku, np. poliglot Pythona 2-3 może uruchomić w Pythonie 2 funkcję print (odpowiadającą za wyświetlenie tekstu zawartego w tej funkcji) oraz funkcję print() w Pythonie 3, przy czym każda wersja Pythona zignoruje składnię (w naszym przypadku funkcję) właściwą dla drugiej wersji.
  4. Sposób nr 4: przedefiniowanie tokenów – tokenom, takim jak znaki specjalne, w różnych językach programowania można przypisać inne znaczenia. Poligloty mogą przedefiniować tokeny tak aby dla tych samych znaków specjalnych wykonywały określoną akcję w jednym praserze, ale odmienną w innym.
  5. Sposób nr 5: tworzenie spójnych metadanych – z uwagi na to, że pliki zawierają metadane, do których można zaliczyć znaczniki czasu, uprawnienia użytkownika oraz nagłówki, pliki poliglotyczne wykonane tym sposobem dbają o to, aby metadane były czytelne i zrozumiałe dla każdego formatu docelowego, co pozwala uniknąć podejrzeń.
  6. Sposób nr 6: wykorzystanie słabej walidacji – metoda jest skuteczna w przypadku parserów dokonujących uproszczonej walidacji danych, czyli np. uznanie za plik w formacje PDF każdego pliku zaczynającego się od bajtów %PDF, z czego chętnie korzystają twórcy poliglotów.
  7. Sposób nr 7: utrzymywanie oddzielnych komponentów – sposób ten polega na takiej budowie plików poliglotycznych, aby posiadały oddzielne komponenty dla każdego formatu, co jest kluczem do przechodzenia pomiędzy formatami, gdyż np. parser PDF zobaczy tylko plik w tym formacje, a parser Zip zobaczy strukturę archiwum.

W tym miejscu należy dodać, że zrozumienie powyższych technik budowy poliglotów jest kluczowe do ich prawidłowego wykrywania i blokowania, o czym napisałem w dalszej treści artykułu.

Czy można legalnie używać poliglotów?

Na tak postawione pytanie należy udzielić odpowiedzi: „to zależy”, ponieważ poliglotów można używać w celach legalnych, jak i sprzecznych z prawem. Legalnie można używać plików poliglotycznych w celu zastosowania kompatybilności krzyżowej, co dobrze jest widoczne w przypadku poliglota Pythona 2-3, który umożliwia prawidłowe działanie kodu w obu wersjach tego języka programowania, dzięki płynnemu przejściu pomiędzy wersjami.

Ponadto poligloty mogą wpływać na zwiększenie wydajności, np. poprzez osadzanie obrazów w plikach TIFF dla standardu obrazowania medycznego DICOM, co oszczędza miejsce w pamięci przy zachowaniu pełnej kompatybilności ze sprzętem do przetwarzania obrazu DICOM.

Dodatkowo poligloty HTML-XML mogą być używane przez twórców stron internetowych udostępniając kod HTML lub XML w zależności od przeglądarki, co zapewnia elastyczność.

Jak wspomniałem powyżej pliki poliglotyczne mogą być także używane w nielegalnych celach, np.:

  • do dostarczania nielegalnego oprogramowania, czyli ukrycia złośliwego kodu w dokumentach biurowych lub obrazach, co pozwala na ominięcie filtrów bezpieczeństwa,
  • do ataków web shell, gdzie poligloty podszywają się pod pliki obrazów w celu dostarczenia złośliwego kodu, a tym samym naruszenia bezpieczeństwa stron internetowych,
  • do stenografii, gdyż poligloty mogą ukrywać skradzione dane lub treści chronione prawem autorskim w formatach zwykłych plików,
  • do phishingu, poprzez oszukanie filtrów poczty e-mail i maskowania złośliwych załączników do wiadomości e-mail,
  • do unikania filtrów bezpieczeństwa, poprzez maskowanie prawdziwego typu pliku i tym samym ominięcia oprogramowania blokującego określone formaty plików.

Zrozumienie korzyści i zagrożeń jakie niosą za sobą pliki poliglotyczne pozwala na właściwą ocenę ryzyka i decyzję o używaniu tego typu plików.

Poligloty a zagrożenia dla bezpieczeństwa

Niezależnie od wymienionych powyżej możliwości niezgodnego z prawem użycia poliglotów warto przyjrzeć się bardziej szczegółowo zagrożeniom, jakie wynikają z nielegalnego użycia tych plików.

Po pierwsze, poligloty są bardzo zwodnicze, co jest wykorzystywane przez hakerów do oszukania narzędzi bezpieczeństwa w tym nawet zaawansowanego oprogramowania do wykrywania zagrożeń, poprzez ukrycie złośliwego kodu w niegroźnych formatach, nadających poliglotowi legalny wygląd.

Po drugie, z uwagi na zawarcie w sobie kodu właściwego dla zwykłych formatów, takich jak PDF, JPEG, Word, Zip oraz malware’u, poligloty takie są niewykrywalne dla systemów bezpieczeństwa, które z łatwością wykrywają pliki zawierające czysty złośliwy kod.

Po trzecie, poligloty mogą być stworzone tak, aby jeden program widział prawidłowy dokument, natomiast drugi w tym samym pliku widział kod wykonywalny, co prowadzi do niebezpiecznych i niezamierzonych konsekwencji.

Po czwarte, poligloty stanowią niezwykle silny i pewny mechanizm dostarczania złośliwego oprogramowania, gdyż ich podwójny charakter umożliwia ominięcie bram sieciowych, firewalli oraz innych zabezpieczeń, a po dostaniu się do sieci wewnętrznej, do dystrybucji złośliwego oprogramowania.

Po piąte, poligloty są trudne w analizie z uwagi na wieloformatowe połączenie kodu i składni właściwej danym formatom. Analiza statyczna takich dwujęzycznych plików jest trudna i może uszkadzać narzędzia oczekujące jednorodnych wyników. Natomiast analiza dynamiczna jest groźna z uwagi na ryzyko wykonania nieznanego kodu.

Po szóste, poligloty w łatwy sposób naruszają formaty wysoce rozszerzalne, takie jak należące do pakietu Office, a także PDF i plików multimedialnych, ponieważ elastyczność tych formatów zapewnia większą ilość miejsca na osadzanie złośliwego kodu, co jest potęgowane przez słabą walidację ich parserów.

Po siódme, poligloty łączące w sobie kompatybilność różnych wersji oprogramowania (np. Windows 10 i Windows 11, Python 2 i Python 3) stwarzają dodatkowe ryzyko podczas migracji pomiędzy wersjami oraz zwiększają powierzchnię ataku.

Mając powyższe na uwadze stwierdzić należy, że poligloty mogą zawierać w sobie różnego rodzaju złośliwy kod, który może  prowadzić do infiltracji sieci, wykradzenia ważnych danych czy zaszyfrowania danego urządzenia, jednocześnie umożliwiając hakerom przeprowadzenie praktycznie każdego rodzaju ataku.

Jak rozpoznać pliki poliglotyczne?

Mając na uwadze powyższy opis działania poliglotów, stwierdzić należy, że ich identyfikacja jest trudna, ale możliwa. Do tego celu służą wymienione poniżej taktyki i technologie:

  1. Analiza behawioralna – polegająca na weryfikacji zachowania aplikacji podczas otwierania plików, gdzie objawy takie jak nietypowe wywołania systemowe, zwiększona aktywność sieciowa, wywoływanie dziwnych plików podczas otwierania badanego pliku mogą wskazywać na poliglota z osadzonym złośliwym kodem.
  2. Ścisła weryfikacja i walidacja – polegająca na solidnej walidacji formatów plików przez ich parsery, które rygorystycznie sprawdzają właściwe sobie specyfikacje, co pozwala na wykrycie poliglotów podszywających się pod określony format, np. parser rygorystycznie walidujący plik Word wykryje i odrzuci plik, który nie jest w pełni zgodny z tym formatem.
  3. Sandbox testing, czyli testowanie w piaskownicy – polega na otwarciu podejrzanych plików w piaskownicy, umożliwiając tym samym na obserwację ich zachowania w izolacji od systemów produkcyjnych. Jednakże istnieją odmiany złośliwego kodu, które wykrywają, że plik, w którym taki kod się ukrywa, jest otwierany w piaskownicy. Wówczas taki złośliwy kod pozostaje nieaktywny (w ukryciu), a badany plik nie wykazuje żadnych anomalii w swoim zachowaniu.
  4. Skanowanie podejrzanego pliku za pomocą wielu narzędzi odpowiednich dla każdego z jego potencjalnych formatów – dzięki różnicom w wynikach skanowania można wykryć poligloty udające pliki określonego formatu (dualizm poliglotów).
  5. Badanie metadanych – polegające na wyszukiwaniu m.in. nietypowych kombinacji nazw, znaczników czasu, czy rozmiarów plików może prowadzić do wykrycia poliglota, którym może być np. mały plik obrazu ze znacznikiem metadanych należącym do pakietu Office.
  6. Przeprowadzanie analizy nagłówków, trailerów, wartości magicznych (magic values) i struktury plików może ujawnić niespójności w danym formacie wskazujące na to, że badany plik jest poliglotem.
  7. Sprawdzanie heurystyczne za pomocą silników uczenia maszynowego – takie działanie pozwala na badanie heurystyk, takich jak np. niezgodność typu pliku, nielogiczne kombinacje metadanych czy podejrzany rozmiar pliku, dzięki czemu można wykrywać pliki poliglotyczne.
  8. Dezasemblacja i dekompilacja zawartości pliku jest pomocna w odkrywaniu ukrytych funkcji, szczególnie w przypadku formatów z osadzonymi skryptami, np. PDF.
  9. Przeprowadzanie regularnych szkoleń pracowników technicznych w zakresie umiejętności rozpoznawania cech charakterystycznych dla plików poliglotycznych, co pozwala na uzupełnienie zautomatyzowanych mechanizmów obronnych.

Obrona przez poliglotami

Oczywiście niezależnie od zaangażowania systemów obronnych w wykrywanie plików poliglotycznych, można także skutecznie bronić się przed ich niechcianym działaniem, jednakże wymaga to wielowarstwowej strategii łączącej w sobie zabezpieczenia technologiczne, stałą edukację pracowników oraz stosowanie się do odpowiednich zaleceń, z których najważniejsze wymieniam poniżej:

  1. Skonfigurowanie posiadanego oprogramowania, tak aby prawidłowo sprawdzało formaty plików przed ich przetworzeniem; ponadto programiści w tworzonym kodzie powinni usuwać luki w walidacji i ściśle przestrzegać specyfikacji dla danego formatu;
  2. Stworzenie tzw. „blacklisty” rozszerzeń plików często używanych przez poligloty, takich jak .pdf, .doc i .jpg oraz blokowanie plików w tych formatach na granicach sieci jeszcze przed ich weryfikacją. Warto dodać, że blacklista powinna być stale dopasowywana do zmieniających się zagrożeń i nowych wersji poliglotów;
  3. Weryfikacja wszystkich plików przychodzących pod kątem dozwolonych typów, rozszerzeń, rozmiarów oraz metadanych przy jednoczesnym odrzucaniu plików wykazujących jakiekolwiek anomalie w tym zakresie;
  4. Przed zapisaniem i przechowywaniem plików należy oczyścić wszelkie dane zewnętrzne dodane do takich plików oraz wyłączyć niepotrzebne funkcje, które mogą przetwarzać złośliwy kod;
  5. Dbanie o aktualność filtrów odpowiedzialnych za blokowanie złośliwych plików i rozpoznających wskaźniki poliglotyczne, takie jak, np. mieszane nagłówki i nielogiczne metadane;
  6. Dbanie o regularne aktualizowanie oprogramowania antywirusowego i systemów bezpieczeństwa, aby móc wychwytywać najnowsze typy poliglotów;
  7. Przeprowadzanie regularnych szkoleń pracowniczych pod kątem rozpoznania podejrzanych plików oraz nieotwierania plików, co do których pracownicy nie mają pewności, że pochodzą z legalnego źródła.

Podsumowanie

Świat cyberbezpieczeństwa coraz częściej musi mierzyć się z nowymi zagrożeniami. I właśnie do jednego z takich nowych zagrożeń należą poligloty. Dzięki swoistej dualistycznej konstrukcji, podszywając się pod budzące zaufanie formaty plików, mogą stać się niewykrywalnymi i niezauważalnymi nośnikami złośliwego kodu, umożliwiając tym samym przeprowadzenie rożnego rodzaju ataków hakerskich. Choć nie jest to proste, organizacje mogą wykrywać poligloty i skutecznie się przed nimi bronić, jednocześnie nie przestając monitorować nowych zagrożeń i stale zwiększając swoje możliwości identyfikowania i blokowania nowych typów poliglotów.

Autor: Michał Mamica

Zobacz również

SKOMENTUJ

Proszę wpisać swój komentarz!
Proszę podać swoje imię tutaj

Artykuły

Komentarze