Wabik na szkodliwe programy

Jak działa opatentowana przez nas piaskownica i co ma wspólnego z filmem Mission Impossible?

Nie widziałem szóstej części filmu Mission Impossible i pewnie nie zobaczę. Póki co oglądałem piątą — w trybie zombie, wracając do domu po długim locie, po trudnym biznesowo tygodniu — ale tylko dlatego, że jedna ze scen była kręcona w naszym całkiem nowym biurze w Londynie. Ale to nie dla mnie… To całe zamieszanie: klaps, huk, gwizd, świst, rumor… Ja wolę coś trudniejszego, dającego do myślenia i zwyczajnie ciekawszego. W końcu mam bardzo mało czasu wolnego!

Wiem, nie chwalę tu Toma Cruise’a i jego spółki. Muszę jednak przyznać, że co najmniej jedna scena została zrobiona naprawdę dobrze (czyli dawała do myślenia i była naprawdę interesująca!). To ta, w której dobrzy ludzie muszą złapać tego złego, aby zdradził swoich złych kolegów (czy jakoś tak). Tworzą więc fałszywe środowisko w „szpitalu”, gdzie kanał „CNN” transmituje w „telewizji” informacje temat zagłady atomowej. Zawiera więc on ugodę i porzuca swoich kumpli. Ups. Oto zajawka.

Dlaczego ta scena tak bardzo mi się podoba? Ponieważ bardzo dobrze pokazuje ona jedną z metod wykrywania… nieznanych wcześniej zagrożeń! Tak naprawdę istnieje wiele takich metod — różnią się one w zależności od obszaru aplikacji, efektywności, użycia zasobów i innych parametrów (opisuję je tu regularnie). Ale zawsze jedna się wyróżnia: emulacja (o której również napisałem sporo tu wcześniej).

Podobnie jak w filmie MI, emulator uruchamia analizowany obiekt w izolowanym, sztucznym środowisku, które zachęca go do ujawnienia swojej szkodliwości.


Jednak podejście to ma jedną ważną wadę — sam fakt, że środowisko to jest sztuczne. Emulator robi, co może, aby przypominało ono prawdziwy system operacyjny, jednak coraz inteligentniejsze szkodliwe programy nadal potrafią odróżnić je od prawdziwego — a wówczas emulator widzi, po czym rozpoznawało go szkodliwe oprogramowanie i nieustannie ulepsza swoją emulację, co wiąże się z powstawaniem nowych podatności na chronionym komputerze. Podstawowym problemem jest to, że żaden emulator nie stanowił jeszcze wiernej kopii prawdziwego systemu operacyjnego.

Z drugiej strony problem analizy zachowania podejrzanych obiektów można rozwiązać na inny sposób: poprzez przeanalizowanie go w prawdziwym systemie operacyjnym na maszynie wirtualnej. Jeśli emulator nie do końca działa dobrze, pozwólmy wykazać się prawdziwej, choć wirtualnej maszynie! Mogłoby to być idealne „przesłuchanie” — przeprowadzone w prawdziwym środowisku, lecz bez negatywnych konsekwencji.

Słysząc te koncepcje, ktoś może zapytać, dlaczego nie wpadł na to nikt wcześniej. W końcu wirtualizacja jest w obecna w technologiach od 1992 roku. Jak się okazuje, nie jest to takie proste.

Po pierwsze, analizowanie podejrzanych obiektów na maszynie wirtualnej to proces wymagający poświęcenia wielu zasobów, odpowiedni tylko dla potężnych rozwiązań ochronnych klasy enterprise, gdzie skanowanie musi być bardzo intensywne, aby żaden szkodliwy obiekt nie pokonał zabezpieczeń. Niestety dla komputerów domowych (nie mówiąc o smartfonach) technologia ta nie jest jeszcze odpowiednia.

Po drugie, takie rzeczy już istnieją. W rzeczywistości wykorzystujemy przecież tę technologię — wewnętrznie, w firmie K — do własnych analiz. Jednak jeśli chodzi o produkty przeznaczone na rynek, nie ma ich zbyt wielu. Nasi konkurenci udostępnili podobne produkty, jednak ich skuteczność pozostawia wiele do życzenia. Co do zasady takie produkty są ograniczone do gromadzenia logów i przeprowadzania podstawowych analiz.

Po trzecie, uruchomienie pliku na maszynie wirtualnej to zaledwie początek bardzo długiego i trudnego procesu. Ostatecznie chodzi o to, aby samodzielnie ujawnił on swoją szkodliwą naturę, a do tego celu potrzebny jest inteligentny hipernadzorca, logowanie zachowania i analiza, nieustanne ulepszanie plików szablonów niebezpiecznych działań, ochrona przed sztuczkami zabezpieczającymi przed emulacją, optymalizacją uruchamiania i wiele więcej.

W tej kwestii bez fałszywej skromności mogę powiedzieć, że jesteśmy na czele całej planety!

Niedawno otrzymaliśmy amerykański patent (US10339301) obejmujący tworzenie odpowiedniego środowiska dla maszyny wirtualnej w celu przeprowadzania głębokiej i szybkiej analizy podejrzanych obiektów. Działa to tak:

  • Tworzone maszyny wirtualne (dla różnych rodzajów obiektów) posiadają ustawienia, dzięki którym optymalnie uruchamiają się i mają maksymalnie wysoki współczynniki wykrywania.
  • W oparciu o system rejestrujący zachowanie obiektu hipernadzorca maszyny wirtualnej analizuje system z użyciem aktualizowanych baz szablonów podejrzanego zachowania, heurystyki, logiki reakcji na działania i więcej.
  • Po wykryciu podejrzanych działań system analizy wprowadza w locie zmiany w procesie uruchamiania obiektu na maszynie wirtualnej w celu zachęcenia go do wykazania swoich szkodliwych intencji. Na przykład system może tworzyć pliki, zmienić rejestr, przyspieszyć czas itp.

Ostatni punkt — trzeci — jest najbardziej unikatową i najlepszą funkcją naszej technologii. Zobaczcie, jak to działa.

System wykrywa, że uruchomiony plik „przeszedł w tryb uśpienia” i nie wykazuje żadnej aktywności. Jak pewnie wiecie, obiekt może zostać zaprogramowany tak, aby przez jakiś czas (minuty/godziny) przebywał w fazie uśpienia, zanim rozpocznie swoją szkodliwą aktywność. Gdy przechodzi w ten stan uśpienia, niezwłocznie przyspieszamy czas na maszynie wirtualnej: w sekundę mija jedna, trzy, pięć i gazylion minut. Funkcjonalność analizowanego pliku nie zmienia się, lecz czas oczekiwania jest zaniżony do setek (lub tysięcy) razy. A gdy szkodliwy program zdecyduje się sprawdzić zegar systemowy (czy tyka?), zostanie oszukany i rozpocznie swoją szkodliwą misję — ujawniając się w procesie.

Inny przykład:

Obiekt używa luki w określonej bibliotece lub próbuje zmienić zawartość pliku lub rejestru. Najpierw, przy pomocy zwykłej funkcji fopen(), próbuje otworzyć bibliotekę (lub plik lub rejestr), a jeśli mu się to nie uda (nie ma biblioteki lub uprawnień dostępowych do pliku) — rezygnuje. W takim scenariuszu zmieniamy (w locie) zwracaną wartość funkcji fopen() z „file absent” (wskazującą brak pliku) na „file exists” (wskazującą, że plik istnieje). W razie konieczności tworzymy taki plik i uzupełniamy go stosowną treścią. Następnie zwyczajnie obserwujemy, co robi ten obiekt.

Takie podejście działa równie dobrze w warunkach drzew logicznych związanych z zachowaniem obiektu. Na przykład: jeśli istnieje plik A i plik B, to plik C jest zmodyfikowany. Jednak nie wiadomo, co badany program zrobi, gdy istnieje tylko jeden z nich — plik A lub plik B. Z tego względu uruchamiamy iterację równoległa i mówimy podejrzanemu programowi, że plik A istnieje, ale plik B nie istnieje, a następnie analizujemy dalszą aktywność drzewa logicznego.

Warto zauważyć, że zasady reakcji uruchomienia pliku są skonfigurowane przez zewnętrzne, łatwe w aktualizacji bazy danych. Aby dodać nową logikę, nie trzeba ponownie programować całego silnika — wystarczy poprawnie opisać wiele możliwych scenariuszy szkodliwego zachowania i wykonać aktualizację za pomocą jednego kliknięcia.

Mówiąc w skrócie, tak działa ta technologia. Wkrótce zostanie ona dodana do KATA, jak również pojawi się na rynku jako oddzielne rozwiązanie dla korporacji, Kaspersky Sandbox.

Porady