Poradnik analizy zainfekowanego pliku PDF

W CELU PRZEPROWADZENIA BEZPIECZNEJ ANALIZY ZALECAMY URUCHOMIENIE LINUXA Z LIVECD Z ODPIĘTYMI DYSKAMI LUB PRZYNAJMNIEJ POSTAWIENIE MASZYNY WIRUTALNEJ.

Bardzo popularnym celem ataku są korespondencje masowe bądź ukierunkowane kampanie, które korzystają ze wspólnego hosta lub kodu exploitowego – chodzi o otrzymany przez e-mail złośliwy dokument PDF lub MS Office bądź otwarty przez przeglądarkę dodatek plug-in. Po drugiej połowie 2008 r. odnotowano znaczny wzrost luk w zabezpieczeniach.

Znaczna większość obwodów sieci korporacyjnych jest chroniona poprzez kilka filtrów bezpieczeństwa oraz mechanizm blokujący zagrożenia. Jednakże złośliwe dokumenty PDF lub MS Office mogą skutecznie przedostawać się przez firewalle, systemy zapobiegania włamaniom, systemy antyspamowe, antywirusowe czy inne zabezpieczenia. Po dotarciu do skrzynki pocztowej ofiary wykorzystuje się technikę inżynierii społecznej w celu zwabienia osoby do kliknięcia – otwarcia dokumentu. Przykładowo, gdy użytkownik otwiera złośliwy plik PDF, zwykle wykonuje kod JavaScript, który wykorzystuje lukę w zabezpieczeniach, gdy program Adobe Reader analizuje spreparowany plik. To może powodować, że uszkodzona aplikacja spowoduje uruchomienie dowolnego kodu znanego jako shellcode. Kod ten normalnie pobiera i wykonuje szkodliwy plik z Internetu.

Plik PDF składa się z nagłówka, ciała, tablicy referencyjnej i przyczepy. Ciało jest bardzo kluczowym elementem, ponieważ składa się ze wszystkich typów obiektów. Język jest złożony, przez co te same informacje mogą być szyfrowane i zaciemniane na różne sposoby. Na przykład strumienie wewnątrz obiektów mogą być wykorzystywane do przechowywania danych o dowolnym rozmiarze. Strumienie te są skompresowane, a standard PDF obsługuje kilka algorytmów, w tym ASCIIHexDecode, ASCI85Decode, LZWDecode, FlateDecode, RunLengthDecode, CCITTFaxDecode, DCTCDecode, zwane Filtrami. Pliki PDF mogą bowiem zawierać zawartość multimedialną oraz obsługiwać obiekty Flash w języku JavaScript i ActionScript. Język JavaScript może być ukryty w strumieniach za pomocą różnych technik, co, jak zostało już wyżej podkreślone, utrudnia wykrywanie.

Nie zawsze wiemy, czy plik na dysku twardym naszego komputera jest godny zaufania i czy nie należy się go pozbyć. Co może stanowić taką „podpowiedź”? Podejrzane nazwy plików, ostrzeżenia programu antywirusowego czy nawet zapora ogniowa.

Może dziać się tak z powodu złośliwego oprogramowania. Pierwszym naszym działaniem powinno być usunięcie pliku lub najlepiej całego folderu, w którym on się znajduje. Bywa też tak, że złośliwe oprogramowanie instaluje na komputerze dodatkowy folder, który zawiera pliki go niszczące. Drugą opcją jest to, iż plik nie był wirusem, ale został zainfekowany. W takiej sytuacji również dobrze jest usunąć plik. Następnie można go zastąpić kopią wolną od wirusów – przykładowo kopiując plik z innego komputera – lub naprawić plik. Powinno jednak mieć to miejsce wyłącznie przy pomocy osoby doświadczonej w tego typu operacjach.

Lenny Zeltser prezentuje pięć kroków w celu przeanalizowania złośliwego oprogramowania, używając linuxa REMnux. Są to:

  1. Znalezienie i wyodrębnienie JavaScript;
  2. Odciemnienie JavaScript;
  3. Wyodrębnienie shellcode;
  4. Utworzenie pliku wykonywalnego shellcode;
  5. Analiza shellcode i określenie, co on robi.

 

1. Etap pierwszy, czyli znalezienie i wyodrębnienie JavaScript

Jedna z technik wykorzystuje zestaw narzędzi Didier Stevensa do analizy zawartości pliku PDF iwyszukuje podejrzane elementy. Narzędziem tym jest przykładowo Pdfid, który potrafi wyświetlać kilka kluczowych słów stosowanych w plikach PDF, które to mogłyby być stosowane do wykorzystywania luk w zabezpieczeniach.

            Narzędzie peepdf.py to inna metoda do sprawdzania, czy plik PDF zawiera JavaScript czy inne złośliwe elementy. Jest to interaktywne narzędzie wiersza polecenia, które zostało napisane przez Jose Migeula Esparza. Służy ono do analizy plików PDF:

  • wyświetla obiekty/strumienie,
  • koduje/dekoduje te strumienie,
  • modyfikuje je wszystkie,
  • uzyskuje różne wersje,
  • wyświetla i modyfikuje metadane,
  • wykonuje JavaScript i skoroszyty.

 

2. Odciemnienie JavaScript

JavaScript może zawierać kilka zaciemnionych warstw. Kod JavaScript musi być wyodrębniony i umieszczony w odrębnym pliku. Narzędzie js-didier (wersja tłumacza języka JavaScript SpiderMonkey) wykonuje kod i drukuje wynik w plikach o nazwie eval.00x.log.

 

3. Wyodrębnienie shellcode’u

Wyodrębnia się go z zaciemnionego JavaScript. Kodowane łańcuchy znaków Unicode muszą zostać przekształcone w binarne. Aby je wyodrębnić w odrębnym pliku i przekonwertować zapis Unicode ( u) na hex ( x). By tego dokonać, musisz użyć szeregu wyrażeń regularnych Perl poprzez skrypt Remnux o nazwie unicode2hex-escaped. Otrzymany plik będzie zawierał shellcode w formacie hex (“xebx06x00x00..”), który będzie potrzebny w następnym kroku, by przekształcić go w binarny.

 

4. Utworzenie pliku wykonywalnego shellcode

Następnie z zaszyfrowanym kodem w formacie szesnastkowym jesteśmy w stanie utworzyć binarny plik systemu Windows, który uruchomi shellcode. Jest to możliwe dzięki skryptowi o nazwie shellcode2exe.py napisanego przez Mario Vilasa, następnie podrasowanego przez Ananda Sastry’ego. Skrypt ten odbiera kod zaszyfrowany jako ciąg lub surowe dane binarne i tworzy plik wykonywalny, który jest w stanie uruchomić shellcode.

 

5. Analiza shellcode i określenie, co on robi

Ostatecznym krokiem jest ustalenie, co robi shellcode. W celu przeanalizowania shellcode’u można wykorzystać dissasembler lub debugera. Statyczna analiza shellcode’u przy użyciu polecenia strings zawiera kilka wywołań API używanych przez shellcode. Zawiera też adres URL wskazujący plik wykonywalny, który zostanie pobrany, jeżeli zostanie wykonany dany shellcode.

Korzystając z powyższych, a także innych narzędzi oraz technik w ramach pięciu etapów możemy lepiej zrozumieć, jak działają złośliwe pliki i jakie metody są dziś stosowane.

 

Jak sprawdzić, czy plik jest zainfekowany?

Analiza plików PDF polega na ich sprawdzaniu, dekodowaniu oraz wydobywaniu treści podejrzanych obiektów, które mogłyby wykorzystać luki w zabezpieczeniach programu Adobe Reader.

Pierwszą opcją jest skorzystanie z wyszukiwarki internetowej, która stanowi ogromną kopalnię wiedzy na temat wszelakich programów i plików. Podstawową stroną jest wyszukiwarka Google – wpisujemy nazwę pliku/programu w pole wyszukiwania i sprawdzamy wszelkie informacje podane na odpowiednich do tego stronach.

Co istotne, gdybyśmy w wynikach wyszukiwania nie potrafili znaleźć żadnych informacji, powinniśmy wziąć pod uwagę, że plik ten może być uszkodzony. Wtedy najlepiej usunąć plik.

 

Możemy skorzystać w tym celu z internetowych narzędzi. Są to:

  1. PDF EXAMINER (od Malware Tracker) – skanuje przesłany plik w poszukiwaniu znanych exploitów, ocenia jego strukturę, a także umożliwia zbadanie, dekodowanie oraz zrzut zawartości pliku PDF. Jest to przydatne do ręcznej analizy plików (tym różni się od Jsunpack i Wepawet, które koncentrują się na automatyzacji analizy w jak największym stopniu).
  2. Jsunpack (od Blake Hartstein) – jak wspomniano wyżej, przeznaczony do automatycznego sprawdzania i dezaktywowania kodu JavaScript. Potrafi on także rzeźbić zawartość plików przechwytywania pakietów sieciowych (PCAP) i identyfikować wspólne exploity po stronie klienta. Potrafi też badać pliki w poszukiwaniu złośliwych artefaktów w Javie.
  3. Wepawet (od UCSB Computer Security Lab) – zautomatyzowane narzędzie do identyfikowania złośliwej zawartości po stronie klienta w formie elementów PDF, Flash i JavaScript. Potrafi on sprawdzić kod JavaScript w przypadku działania shellcode’u. Jednakże nie poradził sobie z oznaczeniem pliku PDF przesłanego jako szkodliwy. Stąd bardziej atrakcyjne wydaje się korzystanie z programu Flash w plikach PDF niż korzystanie z języka JavaScript (z perspektywy atakujących).
  4. Gallus (od MyCERT) – to skaner on-line dla plików PDF, który identyfikuje wspólne exploity. Skupia się na Javie, ale nie był w stanie zidentyfikować próbki PDF, która zawierała exploit Flash jako szkodliwy.

Ponadto, wymienia się także inne narzędzia:

  • BleepingComputer – dostępny w języku angielskim, w obsłudze bardzo prosty. Wystarczy wkleić nazwę plików .exe w polu wyszukiwania i kliknąć w polecenie Search (Szukaj).
  • VirusTotal – można dokonać analizy plików o różnych formatach oraz adresów URL.
  • Możliwe jest także zainstalowanie narzędzia VirusTotal Uploader, które umożliwi przeprowadzanie skanowania bezpośrednio z poziomu komputera.

Jeżeli chcemy tylko dowiedzieć się, czy produkt antywirusowy określa plik jako złośliwy, bez analizowania wewnętrznych plików, możemy przesłać plik PDF do bezpłatnych usług online, które to uczynią. Są to, oprócz wymienionego już VirusTotal – Malware Scan (firmy Jotti), Filterbit i VirSCAN.

Istnieje także możliwość pobrania i zainstalowania we własnym systemie lokalnych narzędzi do analizy niebezpiecznych plików PDF. Prezentujemy parę z nich:

  1. PDF TOOLS (od Didier Stevens) – klasyczny zestaw narzędzi, podstawa do zrozumienia procesu analizy dokumentów PDF. Zawiera pdfid.py do szybkiego skanowania plików PDF w poszukiwaniu niebezpiecznych obiektów i pdf-parser.py, który bada ich zawartość.
  2. PDF STREAM DUMPER (od Dave’a) – potężny program Windows, który łączy wiele narzędzi do analizy plików w ramach jednolitego GUI. Tym samym umożliwia on przeglądanie zawartości PDF, dekodowanie zawartości, odciemnianie JavaScript, badanie shellcode’u etc. Łączy on w sobie wiele narzędzi z jednym graficznym interfejsem użytkownika.
  3. Origami (od Guillaume Delugré i Freda Raynal) – model Ruby do analizowania i tworzenia plików PDF. Zapewnia programistom możność automatyzacji interakcji w formacie PDF, zawiera skrypt pdfscan.rb umożliwiający skanowanie plików PDF w poszukiwaniu niebezpiecznych obiektów, a także extractjs.rb, aby wyodrębniać kod JavaScript zawartego w pliku.
  4. MalObjClass (od Brandona Dixona) – udostępnia model Python do budowania obiektu JSON reprezentującego składniki pliku PDF. Ta możliwość umożliwia programistom łatwiejsze analizowanie, badanie czy dekodowanie złośliwych plików PDF. Możliwe jest także skanowanie w ramach tego narzędzia plików przez VirusTotal.
  5. PDF X-RAY Lite – tworzy raport HTML zawierający dekodowaną strukturę plików PDF i ich zawartość.
  6. SWF mastah – wyodrębnia obiekty SWF z plików PDF.
  7. Pyew – zawiera komendy do sprawdzania i dekodowania struktury oraz zawartości plików PDF.
  8. ExeFilter – może filtrować skrypty z plików Office i PDF.
  9. Malzilla i SpiderMonkey – mogą pomóc w odciemnieniu Javy osadzonym w złośliwych plikach PDF.

 

Uwagi dotyczące formatów plików Adobe PDF:

  • "/ OpenAction" i "/ AA" (dodatkowa akcja) – określa skrypt lub działanie do automatycznego uruchomiania;
  • "/ Nazwy", "/ AcroForm", "/ Akcja" – mogą również określać i uruchamiać skrypty lub akcje;
  • "/ JavaScript" – określa JavaScript do uruchomienia;
  • "/ GoTo *" – zmienia widok do określonego miejsca docelowego w obrębie pliku PDF lub w innym pliku PDF;
  • "/ Launch" – uruchamia program lub otwiera dokument;
  • "/ URI" – uzyskuje dostęp do zasobu według adresu URL;
  • "/ SubmitForm" i "/ GoToR" – mogą wysyłać dane do adresu URL;
  • "/ RichMedia" – może być umieszczone w programie Flash w formacie PDF;
  • "/ ObjStm" – może ukrywać obiekty wewnątrz strumienia obiektu;
  • Pamiętaj o zaciemnieniu kodami szesnastkowymi, takimi jak "/ JavaScript" vs. "/ J # 61vaScript".

Odnosząc się do pakietu MS Office, należy poczynić parę uwag dotyczących formatu pliku binarnego:

  • Strukturalna pamięć masowa (OLE SS) definiuje system plików wewnątrz pliku binarnego pakietu MS Office;
  • Dane mogą być przechowywane „storage” (folder) i przesyłane „stream” (plik):
  • Excel przechowuje dane wewnątrz strumienia „skoroszytu”;
  • PowerPoint przechowuje dane wewnątrz strumienia „PowerPoit Document”;
  • Word przechowuje dane wewnątrz różnych strumieni.

Narzędzia do analizy plików pakietu Microsoft Office:

  • Program OfficeMalScanner shellcode i makro kod VBA z plików MS Office (DOC, XLS I PPT);
  • MalHost-Setup – wyodrębnia kod powłoki z danego przesunięcia w pliku MS Office i wstawia plik EXE do dalszej analizy. (Część pakietu OfficeMalScanner);
  • Offvis – pokazuje surową zawartość i strukturę pliku MS Office oraz identyfikuje niektóre wspólne exploity;
  • Hachoir-urwid – może poruszać się po strukturze binarnych plików pakietu Office i wyświetlać zawartość strumienia;
  • Binarny Tłumacz Office’a – konwertuje pliki DOC, PPT i XLS w pliki Open XML (zawiera narzędzie BiffView);
  • pyOLEScanner.py – może zbadać i dekodować niektóre aspekty złośliwych, binarnych plików pakietu Office;
  • FileHex (nie darmowa) i edytor heksadecymalny FileInsight – mogą analizować i edytować struktury OLE.

Przydatne komendy analizy plików PDF

pdfid.py plik.pdf

Zlokalizuj skrypty i łańcuchy związane z działaniem w plik.pdf

pdf-parser.py plik.pdf

Pokaż strukturę plik.pdf, aby zidentyfikować podejrzane elementy

pdf-parser.py –object id file.pdf

Wyświetla treść identyfikatora obiektu w plik.pdf. Dodaj "-filter -raw" aby dekodować strumień obiektu

pdfextract plik.pdf

Wyodrębnij plik JavaScript z pliku.pdf i zapisz go na plik.dump

pdf.py plik.pdf

Wyodrębnij JavaScript z pliku.pdf i zapisz go do plik.pdf.out

swf_mastah.py -f file.pdf –o out

Wyodrębnij obiekty PDF z plik.pdf do katalogu

 

Przydatne komendy analizy pakietu MS Office

OfficeMalScanner.doc zwykłe skanowanie

Zlokalizuj shellcode, dane OLE, pliki PE w pliku .doc

OfficeMalScanner.doc info

Zlokalizuj kod makro VBA w plik.doc (brak plików XML)

OfficeMalScanner.docx inflate

Zdekompresuj plik.docx, aby zlokalizować kod VB (pliki XML)

MalHost-Setup.doc out.exe 0x4500

Wyodrębnij shellcode z pliku 0x4500.doc i utwórz go jako out.exe

 

 

Przydatne linki:

1. https://github.com/jesparza/peepdf/blob/master/peepdf.py

2. https://blog.didierstevens.com/programs/spidermonkey/

3. https://remnux.org/

4. https://github.com/MarioVilas/shellcode_tools/blob/master/shellcode2exe.py

Przetestuj darmową ochronę

Jak mówią – lepiej zapobiegać niż leczyć. Dotyczy to także bezpieczeństwa stron internetowych. Każdego roku zwiększa się ilość cyberprzestępstw wynikających z działalności hakerów bądź szkodliwego oprogramowania przez nich tworzonego. Wirusy/malware, ransomware, backdoor – lista zagrożeń jest długa. Na szczęście istnieją skuteczne sposoby zapobiegania im. Sprawdź, jak o bezpieczeństwo Twojej strony zadba Webanti.

Webanti to oprogramowanie antywirusowe, które umożliwia ochronę witryny internetowej w czasie rzeczywistym, a w przypadku próby ataku przez hakerów poinfrmuje właściciela strony.

Jesteś zainteresowany? Narzędzie Webanti możesz przetestować za darmo. W razie pomocy możesz także skorzystać z pomocy naszych konsultantów – 7 dni w tygodniu, przez całą dobę, przez cały rok.

Zaufaj wiedzy specjalistów i zacznij skutecznie chronić swoją stronę – sprawdź Webanti.