Potwornie Dziurawy Format JavaScript a luki w PDF



Podobne dokumenty
Potwornie Dziurawy Format - JavaScript a luki w PDF Tomasz Grudziecki, Paweł Jacewicz NASK/CERT Polska, 2009

Wykrywanie i analiza złośliwych stron WWW. Łukasz Juszczyk CERT Polska/NASK lukasz.juszczyk@cert.pl

Tytuł prezentacji. Wykrywanie cyberzagrożeń typu Drive-by Download WIEDZA I TECHNOLOGIA. Piotr Bisialski Security and Data Center Product Manager

PROJEKT ARAKIS DOŚWIADCZENIA Z OBSERWACJI ZAGROŻEŃ W SIECI Tomasz Grudziecki (CERT Polska / NASK)

Technologia Automatyczne zapobieganie exploitom

WSPÓŁCZESNE ZAGROŻENIA W SIECI INTERNET ORAZ SPOSOBY WALKI Z NIMI PRZY POMOCY SYSTEMÓW-PUŁAPEK

Sprzętowo wspomagane metody klasyfikacji danych

PROGRAMY NARZĘDZIOWE 1

OCHRONA PRZED RANSOMWARE

OCHRONA PRZED RANSOMWARE. Konfiguracja ustawień

Produkty. ESET Produkty

Robaki sieciowe. + systemy IDS/IPS

H-Worm RAT. Analiza aktywności złośliwego oprogramowania. CERT Orange Polska S.A. Warszawa, dnia

Urządzenia mobilne Nowe szanse, nowe zagrożenia FWZQJAEHEPQABIRQS

Agenda. Rys historyczny Mobilne systemy operacyjne

Programy antywirusowe dostępne bez opłat

Bezpieczeństwo systemów komputerowych

Trojan bankowy Emotet w wersji DGA

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Analiza malware Keylogger ispy

Analiza kampanii złośliwego Oprogramowania efaktura Orange. Win32/Injector.Autoit.BKD / Trojan.VBInject

Temat: Windows 7 Centrum akcji program antywirusowy

OPIS PRZEDMIOTU ZAMÓWIENIA w odniesieniu do zadania antywirus - dostawa oprogramowania antywirusowego

Metodologia ochrony informacji w systemach klasy desktop oraz na urządzeniach przenośnych

Panda Managed Office Protection. Przewodnik. Panda Managed Office Protection. Przewodnik

Diagnostyka komputera

BEZPIECZEŃSTWO W SIECIACH

Mirror Tool.

Honey Spider Network 2.0

INFRA. System Connector. Opis systemu

Adaptive Defense PROAKTYWNE PRZECIWDZIAŁANIE ZAGROŻENIOM

Nadzorowanie stanu serwerów i ich wykorzystania przez użytkowników

Raport z analizy porównawczej rodzin ransomware JAFF i Cry

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

FAQ Systemu EKOS. 1. Jakie są wymagania techniczne dla stanowiska wprowadzania ocen?

Realne zagrożenia i trendy na podstawie raportów CERT Polska. CERT Polska/NASK

Instalacja i opis podstawowych funkcji programu Dev-C++

Otwock dn r. Do wszystkich Wykonawców

Necurs analiza malware (1)

Produkty. MKS Produkty

Analiza możliwości złośliwego oprogramowania vjw0rm w kampanii phishingowej PayU

INFORMATYKA KLASA VII Wymagania na poszczególne oceny

Budowa i działanie programów antywirusowych

Bezpieczeństwo systemów komputerowych. Java i JavaScript. Java i JavaScript. Java - historia

Informacje o pakiecie Office 2010

Client-side Hacking - wprowadzenie w tematykę ataków na klienta. Radosław Wal radoslaw.wal@clico.pl

sprawdzonych porad z bezpieczeństwa

New Features in Allplan Allplan Nowy system licencjonowania w Allplan

Edytor materiału nauczania

!!!!!!!!!!! PORTFOLIO: Analiza zachowań użytkowników serwisów internetowych. Autorzy: Marek Zachara

Malware: złośliwe oprogramowanie. Marek Zachara. 1/18

Software Updater F-Secure Unikatowe narzędzie, które chroni firmy przed znanymi zagrożeniami

Marek Krauze

Od programowania wizualnego do tekstowego

W dalszej części dokumentu przedstawiamy skrócony opis kluczowych funkcji systemu. Niniejszy dokument nie zawiera opisu technicznego systemu.

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

KLASA 7 szk.podst. Stopień dostateczny Uczeń: wymienia cztery dziedziny,

Diagnostyka pamięci RAM

Funkcjonalność ochrony antywirusowej w urządzeniach UTM oraz specjalizowanych rozwiązaniach zabezpieczeń AV

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

Wyższy poziom bezpieczeństwa

ArcaVir 2008 System Protection

Tworzenie, zaciemnianie i analiza złośliwego kodu JavaScript. OWASP Czerwiec The OWASP Foundation

Opis zmian funkcjonalności platformy E-GIODO wprowadzających możliwość podpisania wniosku bezpośrednio w oknie przeglądarki.

Znak sprawy: KZp

Antywirusy. Marcin Talarczyk. 2 czerwca Marcin Talarczyk Antywirusy 2 czerwca / 36

Techniki wykrywania złośliwych stron WWW

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Definiowanie drukarek w programie ZAFIR

Arkanet s.c. Produkty. Norman Produkty

Automatyczna instalacja oprogramowania.

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013

Bezpieczeństwo w sieci Internet Rodzaje złośliwego oprogramowania

KARTA KURSU. Techniki informatyczne

KATEGORIA OBSZAR WIEDZY NR ZADANIA Podstawowe informacje i czynności

Instrukcja użytkownika

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Procedura sprawdzenia i naprawy błędów połączenia z CEPIK 2.0

Aktualizowanie systemów operacyjnych

Analiza złośliwego oprogramowania. Cleopatra

Instrukcja uaktualnienia AdRem NetCrunch z wersji 5.3 do 6.x

Produkty. Alwil Produkty

Projektowanie baz danych za pomocą narzędzi CASE

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

AE/ZP-27-16/14. Oprogramowanie do wykonywania kopii zapasowych oraz zarządzania maszynami wirtualnymi

7. zainstalowane oprogramowanie zarządzane stacje robocze

Wykrywanie twarzy na zdjęciach przy pomocy kaskad

Malware przegląd zagrożeń i środków zaradczych

Wpisany przez Łukasz Nawrotek Poniedziałek, 20 Październik :57 - Zmieniony Poniedziałek, 20 Październik :02

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

Bezpieczeństwo "szyte na miarę", czyli w poszukiwaniu anomalii. Zbigniew Szmigiero CTP IBM Security Systems

Krótka instrukcja instalacji Adobe Acrobat Reader

Zmieniona Tabela nr 1a - Oprogramowanie antywirusowe. Parametry wymagane przez Zamawiającego

Instrukcja dla osoby potwierdzającej profil zaufany

5.4. Tworzymy formularze

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

NAJLEPSZA OCHRONA DLA TWOJEJ FIRMY

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

Transkrypt:

Potwornie Dziurawy Format JavaScript a luki w PDF Paweł Jacewicz Tomasz Grudziecki NASK/CERT Polska CZĘŚĆ I Trochę o PDF-ach Wszędobylski PDF Każdy z nas spotkał się z plikami PDF. Są one jednym z najpopularniejszych formatów służącym przenoszeniu i udostępnianiu informacji. Ich obsługa jest możliwa w każdym systemie operacyjnym oraz w większości urządzeń przenośnych. Powszechność formatu szybko wzbudziła zainteresowanie środowisk, które specjalizują się w poszukiwaniach podatności oraz potencjalnych metod ich wykorzystania. Nie trzeba było długo czekać, aby w sieci pojawiły się pierwsze złośliwe pliki PDF wykorzystujące luki w najpopularniejszym czytniku Acrobat Readerze. Znaczny wzrost liczby krążących w sieci złośliwych PDF-ów nastąpił w drugiej połowie 2008 roku. Miało to najprawdopodobniej związek ze standaryzacją formatu PDF przez organizację ISO w lipcu 2008 i publikacją przez Adobe Systems pełnego dokumentu opisującego strukturę i funkcjonalność formatu [1].

58 Paweł Jacewicz, Tomasz Grudziecki Rys 1 Udział procentowy aktywnych w sieci typów podatności związanych z plikami PDF (w odniesieniu do maksimum aktywności w październiku 2008) CVE-2007-5659 podatność w funkcji JavaScript CollabEmailInfo() CVE-2008-2992 podatność w funkcji util.printf() (X) PDF od środka Pliki PDF są dość proste w budowie. Możemy wyróżnić w nich: nagłówek, obiekty, tablicę referencji oraz stopkę dokumentu. Najważniejsze są obiekty, które przechowują większość informacji. Format udostępnia funkcje umożliwiające osadzanie w pliku PDF praktycznie dowolnej zawartości od standardowego tekstu, poprzez obrazy i nagrania audio do nawet całych animacji i krótkich filmów. Ułożenie obiektów w dokumencie jest prawie dowolne, a za prawidłowe ich lokalizowanie odpowiada wspomniana tablica referencji. Nie taki bezpieczny jak by się wydawało Rozpatrując aspekty związane z bezpieczeństwem informacji musimy zwrócić uwagę na metody jakie mogą być użyte w celu zarażenia komputera. Przede wszystkim nowe zagrożenia maskują się przed skanerami antywirusowymi, głównie z wykorzystaniem polimorfizmu, który zapewnia format: od zamiany kolejności obiektów w dokumencie, kodowanie i kompresję strumieni na zaciemnianiu kodu infekującego komputer kończąc. Napotkane w sieci pliki z reguły łączą kilka z wymienionych technik przez długi czas pozostając nie wykryte przez popularne antywirusy. Potęga strumieni To co stanowi o sile formatu PDF to strumienie. Od wprowadzenia obsługi języka JavaScript, mogą one przechowywać kod wykonywany przez interpreter. Dostępne w formacie funkcje pozwalają na maskowanie go, np. kompresowanie, kodowanie lub nawet szyfrowanie. W tabeli 1 wymienione są filtry, które dekodują dane zawarte w strumieniu do postaci oryginalnej. Przedstawiono tylko te, które mogą odzyskać

Potwornie Dziurawy Format JavaScript a luki w PDF 59 Nazwa filtru Parametryzowany Opis ASCIIHexDecode Nie Dekoduje dane binarne zapisane w reprezentacji heksadecymalnej ASCII85Decode Nie Dekoduje dane binarne zapisane z wykorzystaniem reprezentacji base-85 LZWDecode Tak Dekompresuje dane zakodowane z użyciem metody LZW (Lempel-Ziv-Welch) FlateDecode Tak Dekompresuje dane zakodowane z użyciem metody zlib/deflate RunLengthDecode Nie Dekompresuje dane zakodowane z użyciem algorytmu kodowania długości serii (RLE) zorientowanego na bajty Crypt Tak Dekoduje dane zakodowane z wykorzystaniem algorytmów AES, RC4 lub kryptografii klucza publicznego. Tabela 1 Filtry i strumienie PDF dane w ich oryginalnej formie. Niektóre są parametryzowane, co dodatkowo utrudnia heurystykom analizę. W zaobserwowanych złośliwych plikach PDF kod JavaScript był kompresowany z użyciem biblioteki zlib/deflate. Dodatkowo często był zaciemniany poprzez użycie różnego rodzaju pakerów, np. udostępnionego na stronie http://dean.edwards.name/packer/. Zwykły wiersz w postaci document.write("hello world!"); Zostaje zamieniona na prawie nieczytelną formę: 1 eval(function(p,a,c,k,e,r){e=string;if(!.replace (/^/,String)){while(c--)r[c]=k[c] c;k=[function(e) {return r[e]}];e=function(){return \\w+ };c=1};while (c--)if(k[c])p=p.replace(new RegExp( \\b +e(c)+ \\b, g ),k[c]);return p}( 0.1("2 3!");,4,4, document write Hello world.split( ),0,{})) Takie modyfikacje znacznie utrudniają analizę lub powodują generowanie fałszywych alarmów gdy napotka się niegroźny kod skompresowany z użyciem takiego narzędzia. Dziurawy silnik Obsługa kodu JavaScript w aplikacji nie oznacza od razu, że oprogramowanie jest podatne na atak. Głównym odpowiedzialnym jest tu interpreter języka. To błędy w nim Z przyczyn redaktorskich, musieliśmy podzielić ten tekst na wiersze, w oryginale jest to jeden długi wiersz. 1 [przyp. red.]

5A Paweł Jacewicz, Tomasz Grudziecki zawarte pozwalają na uruchamianie złośliwego kodu. Najczęściej polegają one na błędach przepełnienia bufora oraz wstrzyknięciu tzw. shellcode u, który uruchomiony w działającym programie (np. Adobe Reader a) pozwala na zainfekowanie komputera wirusem. Wszystko odbywa się oczywiście za plecami użytkownika. Najczęściej jedynym objawem jest wzmożony ruch sieciowy generowany przez komputer. Warto zauważyć, że chociaż najczęściej atakowane są wersje czytników PDF pod system Windows, to luki występują także w ich wersjach pod systemy uniksowe. Tylko w tym roku firma Adobe załatała już dwie podatności w programie Reader, obie miały status krytycznych i występowały zarówno w wersjach dla platformy Windows, jak i Unix oraz Macintosh. Informacje bezpieczeństwa dotyczące programu Adobe Reader dla systemów uniksowych można uzyskać pod adresem http://www.adobe.com/ /support/security/#readerunix. Jak się (nie) zarazić Najwięcej złośliwych plików PDF udało się znaleźć na skompromitowanych serwisach WWW. Odkąd razem z Adobe Readerem instalowane są rozszerzenia do przeglądarek ta forma ataku jest najczęściej wykorzystywana. Bardzo rzadko zdarzają się złośliwe pliki PDF przesyłane w postaci załączników w SPAM-ie. W takim przypadku użytkownik musi sam otworzyć plik. Ochroną przed zarażeniem się jest przede wszystkim zdrowy rozsądek. Nie otwierajmy plików pochodzących z nieznanych źródeł oraz wyłączmy obsługę plików PDF w przeglądarce. Dodatkowo możemy wyłączyć obsługę JavaScript w czytniku. Odrobinę ochrony przed złośliwymi PDF-ami zapewniają programy antywirusowe (dotyczy tylko platformy Windows). Niestety, proces aktualizacji baz antywirusowych może trwać nawet kilka miesięcy. Na szczęście sytuacja nie jest aż tak straszna. Producenci aplikacji i systemów operacyjnych starają się szybko wypuszczać aktualizacje. Utrzymanie systemu i oprogramowania w aktualnej wersji to podstawowa linia obrony. Często grasujące w sieci złośliwe pliki PDF wykorzystują lukę już załataną. Zachęcamy także do monitorowania informacji na portalach związanych z bezpieczeństwem komputerowym. Będąc na bieżąco z tym, co dzieje się w sieci pomoże uniknąć nieprzyjemnej niespodzianki, która może nas kosztować nie tylko dane ale często także fundusze. Siostro, skalpel proszę... Zobaczmy jak funkcjonuje złośliwy plik PDF na który można się natknąć w sieci. Za przykład posłuży nam plik, który był skanowany z użyciem serwisu VirusTotal.com. Na początek jednak parę uwag dla amatorów zabaw z wirusami. NIGDY ale to NIGDY nie nie należy otwierać tego typu plików na komputerze używanym na co dzień. Najlepszym rozwiązaniem jest praca na maszynie wirtualnej (np. VirtualBox) lub w systemie Linux. Polecam drugie rozwiązanie ze względu na ilość dostępnych narzędzi pomocnych w analizie zawartości plików PDF. Nie należy odwiedzać serwerów, których adresy można znaleźć wewnątrz kodu. A z całą pewnością błędem są próby włamywania się na takie serwery (nawet

Potwornie Dziurawy Format JavaScript a luki w PDF 5B Rys 2 Analiza pliku PDF z wykorzystaniem narzędzia PDFiD jeśli intencje macie dobre). Autorzy takich PDFów mają z reguły słabe poczucie humoru i mogą odpowiedzieć na tego typu postępowanie atakiem (typowo: DDoS). Najlepszym wyjściem jest zgłoszenie do CERT adresu URL strony www (zwłaszcza jeśli jest z Polski) na której wykryliście zagrożenie. Zdrowy rozsądek bez niego nie należy zabierać się do roboty. Zestaw narzędzi będą przedstawione w dalszej części. Z takim ekwipunkiem można śmiało zaczynać sekcję na pliku PDF. Pierwsze cięcie... Na początku warto zorientować się czy dany plik PDF zawiera kod JavaScript. Jak wcześniej było wspomniane, lwia część obecnych w sieci złośliwych plików wykorzystuje błędy w silniku JS. Bardzo prostym i dającym dobre wyniki narzędziem jest PDFiD [2]. Jest to skaner napisany w języku Python, który potrafi wykrywać i usuwać proste techniki zaciemniania w nazwach (patrz rozdział 7.3.5 w opisie formatu PDF [3]). Podaje także statystyki dotyczące obiektów w pliku PDF (patrz rysunek 2). Gdy narzędzie stwierdzi, że dany plik zawiera JavaScript możemy przystąpić do kolejnego kroku, czyli do zlokalizowania i wyodrębnienia kodu.

5C Paweł Jacewicz, Tomasz Grudziecki Szukamy głębiej... Stwierdzenie, że plik PDF zawiera JavaScript nie oznacza od razu, że jest on złośliwy, ale daje poważne przesłanki by tak sądzić, zwłaszcza jeżeli pochodzi z niewiadomego źródła. Aby się przekonać o szkodliwości kodu JS w danym pliku należy go wydobyć i poddać analizie. Pomocnym narzędziem w tym etapie może być PDF-Parser [4]. Potrafi on analizować struktury wewnętrzne i wyszukuje zależności pomiędzy obiektami. Jego bardzo pomocną funkcją jest także możliwość dekompresji strumieni zachowanych z wykorzystaniem biblioteki zlib/deflate (bardzo często stosowana technika ukrywania kodu JS). Z reguły kod, jeśli jest złośliwy, jest zaciemniony. W przypadku gdy developer poszedł na łatwiznę i wykorzystał jedną z ogólnie dostępnych metod możemy w prosty i szybki sposób odzyskać oryginalny kod. Jednak coraz częściej stosowane są autorskie sposoby kodowania, wtedy musimy użyć specjalnych narzędzi do analizy JavaScript u. CZĘŚĆ II Trochę o JavaScript-ach Ręczna analiza złośliwego JavaScript-a jest nie tylko czasochłonna, ale również wymaga kosztownego i niedeterministycznego narzędzia jakim jest człowiek. Dlatego automatyzacja analizy kodu jest pożądana szczególnie tam, gdzie robi się to w sposób masowy. Potencjalnie złośliwy kod JavaScript czy to pochodzący ze strony www czy z pliku PDF można analizować na dwa sposoby: z użyciem narzędzi niskointeraktywnych oraz wysoko-interaktywnych. Jak mądrze i z premedytacją się zarazić? Przykładem analizy wysoko-interaktywnej jest monitorowanie zmian w systemie podczas wejścia na podejrzaną stronę poprzez przeglądarkę internetową, a w przypadku pliku PDF w trakcie jego otwarcia w odpowiednim czytniku. Dzięki temu możemy w pełni dowiedzieć się co złośliwy kod robi i pozyskać wszelkie pobrane podczas infekcji pliki. Tak działa dosyć popularny w środowisku ludzi zajmujących się tym tematem Capture-HPC [5] rozwijany w ramach projektu The Honeynet Project. Niestety, warunkiem koniecznym do przeprowadzenia tej analizy jest posiadanie odpowiedniej wersji podatnej aplikacji działającej na konkretnym systemie operacyjnym. Oznacza to, że do analizy pliku PDF potrzebne byłoby od kilku do kilkudziesięciu systemów na których podejrzany dokument otwierany byłby w różnych wersjach różnych czytników. W przypadku stron www używane byłyby różne wersje najpopularniejszych przeglądarek, każda z kombinacją najpopularniejszych wtyczek. Takie rozwiązanie jest czasochłonne (nawet gdy monitorowane systemy są zwirtualizowane), oraz kosztowne (cena serwerów na których działają zwirtualizowane systemy, a także koszt licencji systemów operacyjnych i aplikacji). Plusem jest możliwość pozyskania kompletnych danych gdy uda się uruchomić złośliwy PDF/stronę www w podatnej wersji aplikacji i systemu.

Potwornie Dziurawy Format JavaScript a luki w PDF 5D Analiza sygnaturowa nie działa Przykładem analizy nisko-interaktywnej jest porównanie zawartości (pliku czy strony www) do wcześniej zdefiniowanych sygnatur. Tak działają najczęściej programy antywirusowe czy systemy detekcji ataków sieciowych IDS (np. popularny Snort). Takie podejście ma swoje zalety, jak szybkość działania, niezależność od wersji podatnej aplikacji i niski koszt zarówno nabycia bądź stworzenia jak i utrzymania. Jest też bezpieczne, ponieważ nie następuje wykonanie złośliwego kodu (exploita oraz shellcode u) ani rzeczywista infekcja. Jednak, szczególnie w najprostszej formie jaką jest zwykłe porównywanie sygnatur, nie jest w stanie wykryć złośliwego kodu JavaScript zaciemnionego (ang. obfuscated) na różne sposoby (jak było wcześniej podane, możliwości zaciemniania kodu mogą być nieograniczone). Pomimo tego sytuacja nie jest tak beznadziejna. W połowie 2007 roku ruszył projekt HoneySpider Network (HSN) [6], który ma na celu zbudowanie nowych oraz wykorzystanie istniejących technik klienckich honeypotów do wykrywania ataków na aplikacje klienckie (szczególnie przeglądarki internetowe). Jest to wspólne przedsięwzięcie działającego w ramach NASK zespołu CERT Polska, rządowego CERTu holenderskiego GOVCERT.NL oraz akademickiego operatora w Holandii SURFnet. System wykorzystuje zarówno komponenty nisko-interaktywne (LIM Low Interaction Module), jak i wysoko-interaktywne (HIM High Interaction Module). Zbawienie pochodzi z heurystyk Rys 3 Proces nauczania klasyfikatora Weka W obecnej wersji systemu HSN część nisko-interaktywna zwana LIM skupia się głównie na analizie kodu Java- Script. Stworzone rozwiązanie jest dosyć złożone, a klasyfikacja analizowanego skryptu JS opiera się na technikach uczenia maszynowego (ang. machine learning) i tzw. data mining. Użyte w tym celu zostały narzędzia Weka [7] i Google N-grams [8]. Weka jest zestawem algorytmów uczenia maszynowego zaimplementowanym w języku Java i udostępniona na zasadach open source. Może być użyta zarówno jako oddzielne narzędzie, jak i zintegrowane z innym. W systemie HSN wykorzystywany jest jej klasyfikator Bayesowski (ang. Naive Bayes Classifier) jako dający najlepsze rezultaty. Oczywiście system musi zostać wcześniej nauczony, dlatego stworzony został przez człowieka zbiór danych uczących (trenujących), oraz zbiór danych weryfikujących (testujących) umiejętności klasyfikatora (patrz rysunek 3). Zbiory te mogą być cały czas wzbogacane o nowe dane zarówno przez człowieka, jak i automatycznie poprzez dodawanie do zbioru trenującego ostatnio sklasyfikowanego skryptu JS. Doświadczenia pokazały [9], że analiza całego skryptu JS nie jest optymalna, a duże lepsze rezultaty daje podział kodu na mniejsze fragmenty. Do tego celu w projekcie HSN wykorzystywany jest rozpowszechniany na zasadzie open source i napisany

5E Paweł Jacewicz, Tomasz Grudziecki Rys 4 Proces analizy skryptów JS w LIM systemu HSN w języku C++ pakiet Google N-grams. Analizowany przez LIM JavaScript jest dzielony na części zwane n-gramami o określonej długości znaków, przy czym każdy kolejny n-gram powstaje przez przesunięcie w kodzie JS o jeden znak względem poprzedniego n-grama (jest to tzw. mechanizmu przesuwnego okna, ang. sliding window mechanism). Następnie z powstałego w ten sposób zbioru n-gramów wybierane są najczęściej występujące i poddawane analizie w Weka. Po wcześniejszym nauczeniu Weka bardzo dobrze radzi sobie w wykrywaniu zaciemnionego kodu JS. Oczywiście zaciemniony JavaScript nie jest jednoznaczny ze złośliwym skryptem wiele stron niezłośliwych stosuje zaciemnienie dla różnych celów, np. ochrona praw autorskich czy pakowanie kodu. Dlatego każdy zaciemniony JavaScript jest odciemniany (ang. deobfuscate) z wykorzystaniem narzędzia Rhino [10] (jest to implementacja w Java silnika JavaScript zarządzana przez Fundację Mozilla, udostępniona na zasadach open source). Po odciemnieniu (nieraz nawet wielokrotnym) kod JS poddawany jest ponownemu podziałowi na n-gramy i analizie w Weka tym razem pod kątem bycia złośliwym. Proces ten pokazuje rysunek 4. Stosując dodatkowe heurystyki w trakcie oraz po wykonaniu skryptu JS w Rhino można poprawić skuteczność LIM i weryfikować rezultaty analizy zwracane przez Weka. Zarówno w kodzie JavaScript (jednocześnie przed odciemnieniem jak i po) oraz w pamięci Rhino (podczas wykonywania JS) wyszukiwane są słowa kluczowe. Ponadto Rhino jest monitorowany czy nie nastąpiło wyczerpanie przydzielonej mu pamięci (out of memory error) lub JavaScript nie wykonuje się podejrzanie długo (execution timeout). Ostatecznie kod JavaScript pod względem zaciemnienia może być sklasyfikowany przez LIM jako obfuscated (zaciemniony), obfuscated unconfirmed (Weka twierdzi, że

Potwornie Dziurawy Format JavaScript a luki w PDF 5F JS jest zaciemniony, ale Rhino tego nie potwierdza), oraz non-obfuscated (niezaciemniony). Natomiast pod względem złośliwości skrypt JS może być sklasyfikowany jako benign (niezłośliwy), suspicious (podejrzany) bądź malicious (złośliwy). Analiza (prawie) idealna W przeważającej większości przypadków LIM nie będzie w stanie pozyskać ostatecznej aplikacji typu malware, która zostanie uruchomiona w wyniku wykorzystania luki (czy to w przeglądarce www, czy czytniku plików PDF). Jednakże jest w stanie skutecznie zdiagnozować, czy zawarty na stronie internetowej lub w pliku PDF JavaScript jest złośliwy lub chociaż podejrzany o bycie złośliwym. Ponieważ analiza ta jest stosunkowo szybka LIM może służyć jako filtr dla komponentu wysoko-interaktywnego tylko obiekty sklasyfikowane w LIM jako złośliwe lub podejrzane są kierowane do ponownej analizy w HIM. Zastosowane w LIM rozwiązanie nie bazuje na typowym porównywaniu sygnatur, dlatego jest ono w stanie wykrywać nieznany mu wcześniej złośliwy kod, w tym również wykorzystujące nieznane dotychczas luki (tzw. 0-day exploit). Mechanizmy machine learning pozwalają także systemowi weryfikować swoje błędy. Jeżeli LIM pomimo wielu heurystyk nieprawidłowo sklasyfikuje dany JavaScript, jego kod może zasilić zbiór trenujący klasyfikator Weka, przez co w przyszłości podobny fałszywy alarm nie powinien się zdarzyć. Dotyczy to zarówno fałszywych klasyfikacji malicious (tzw. false-positives) jak i benign (tzw. false-negatives). Na zakończenie Mamy nadzieję, że tym krótkim artykułem udało mi się pokazać jak ważną rzeczą jest świadomość tego, że zagrożenia mogą czaić się wszędzie. Nie tylko w formie robaków internetowych lub wirusów ale także zwykłych plików. Wybraliśmy przykład formatu PDF najpopularniejszego i najszerzej obsługiwanego standardu udostępniania informacji. Drogi Czytelniku, miej oczy szeroko otwarte! Literatura i linki [1] PDF format becomes ISO standard http://www.iso.org/iso/pressrelease?refid=ref1141 [2] PDFiD, a tool to triage PDF documents, http://blog.didierstevens.com/2009/03/31/pdfid/ [3] Portable document format http://www.adobe.com/devnet/acrobat/pdfs/pdf32000_2008.pdf [4] PDF-parser in Python, http://blog.didierstevens.com/programs/pdf-tools/#pdf-parser [5] Capture-HPC, https://projects.honeynet.org/capture-hpc [6] The HoneySpider Network Project, http://www.honeyspider.net

60 Paweł Jacewicz, Tomasz Grudziecki [7] Weka: Data Mining Software in Java http://www.cs.waikato.ac.nz/~ml/weka/index.html [8] Google N-grams package, http://code.google.com/p/ngrams [9] Piotr Kijewski, Carol Overes, Rogier Spoor: The HoneySpider Network fighting client-side threats, http://www.honeyspider.net/wp-content/ /uploads/2009/06/hsn-first2008-article-v02.pdf [10] Rhino JavaScript interpreter, http://www.mozilla.org/rhino