Cyberbezpieczeństwo: Wojny maszynowe

Maszynowe uczenie stało się “modne” dopiero w tej dekadzie. Tymczasem technika budowy algorytmów, kodowania i rozwiązywania problemów obliczeniowych za pomocą sieci neuronowych i uczenia maszynowego jest znana od dziesięcioleci. W branży cyberbezpieczeństwa potencjał machine learningu jest olbrzymi choć przez zwykłych zjadaczy chleba niedoceniany. Nie obawiamy się zagrożeń, nie doceniamy rozwiązań ochronnych. Tymczasem dziś z możliwości jakie daje uczenie maszynowe korzystają zarówno cyberprzestępcy i agresorzy w cyberprzestrzeni, jak i obrońcy, którzy nas przed atakami mają chronić.
Szklisto-metalowy android z mieczem plazmowym i tarczą atakowany przez trójpalczaste, mechaniczne łapy.
Szklisto-metalowy android z mieczem plazmowym i tarczą atakowany przez trójpalczaste, mechaniczne łapy.

Cyber higiena, naprawianie słabych punktów, myślenie o bezpieczeństwa już w fazie projektowania, polowanie na zagrożenia oraz sztuczna inteligencja oparta na uczeniu maszynowym to obowiązkowe warunki wstępne cyber obrony przed zagrożeniami nowej generacji.
James Scott, starszy współpracownik, Institute for Critical Infrastructure Technology

Maszynowe uczenie to nie nowość

W powszechnej świadomości uczenie maszynowe istnieje od kilku lat. Termin ten jest nierozerwalnie związany z pojęciem “sztuczna inteligencja”, gdyż rozwiązania określane przez ich twórców jako sztuczna inteligencja to kod powstały właśnie w wyniku maszynowego uczenia. W ostatnich latach o “inteligentnych” algorytmach czy urządzeniach słyszymy niemal na każdym kroku – sztuczna inteligencja poprawi selfie we flagowym smartfonie, odnajdzie interesujące cię treści w telewizorze czy zadzwoni i zarezerwuje stolik w restauracji dla ciebie i twoich znajomych. O zastosowaniach maszynowego uczenia w branży cyberbezpieczeństwa mówi się niewiele. Znacznie częściej słyszymy o zagrożeniach, które większość z nas ignoruje, tak długo, dopóki sami nie stajemy się celem ataku.

Zmierzam do tego, że firmy specjalizujące się w opracowaniu rozwiązań ochronnych doskonale orientują się, czym jest i jak można wykorzystać uczenie maszynowe. Na przykład ESET korzysta z algorytmów maszynowego uczenia i sieci neuronowych już od ubiegłego wieku. Pierwsza sieć neuronowa pojawiła się w produktach tej firmy dokładnie w 1997 roku. Od tamtej pory wiele wewnętrznych projektów wykorzystywało uczenie maszynowe i sieci neuronowe w automatycznej analizie zagrożeń, czy w narzędziach, które analitykom firmy pomagały odpowiednio kategoryzować badane próbki kodu.

Przykładem rozwiązania, które wykorzystuje maszynowe uczenie i jest wykorzystywane przez analityków zagrożeń, był uruchomiony przez słowacką firmę już w 2006 roku zautomatyzowany system ekspercki. W momencie uruchomienia był on jeszcze stosunkowo prosty, ale już wówczas okazał się bardzo pomocną technologią, pomagającą przetworzyć część stale rosnącej liczby próbek kodu i zmniejszyć obciążenie pracą analityków zagrożeń. Rozwiązanie to od momentu wdrożenia było stale rozwijane i stało się jedną z kluczowych technologii odpowiedzialnych za wstępne sortowanie oraz klasyfikację setek tysięcy próbek, które analitycy codziennie otrzymują z takich źródeł, jak kolektywna sieć Live Grid, czy sieć wymiany danych pomiędzy różnymi firmami specjalizującymi się w cyberbezpieczeństwie.

Jak powiedział jeden z inżynierów Google Translate, dopiero, kiedy przejdziesz od 10 000 przykładów do 10 miliardów przykładów, wszystko zacznie działać.
Garry Kasparov, Deep Thinking: Where Machine Intelligence Ends and Human Creativity Begins

Innym przykładem projektu, który nie istniałby bez maszynowego uczenia jest uruchomiony przez ESET i działający od 2012 roku moduł lokalizujący i umieszczający wszelkie zagrożenia na “mapie cyberbezpieczeństwa” i dodatkowo oznaczający próbki, które mogą wymagać szczególnej uwagi analityków. To właśnie ten system wykonał znakomitą pracę podczas nie tak dawnej, globalnej inwazji szkodnika WannaCry, ostrzegając ekspertów firmy w najwcześniejszej fazie działania tego szkodnika. Jak być może pamiętacie, WannaCry nie byłby tak skuteczny w swoich działaniach, gdyby nie był kodem opartym o wyrafinowany exploit EternalBlue opracowany przez NSA. Co ciekawe firma już wówczas posiadała sieć wykrywania zagrożeń opartych na EternalBlue, ale właśnie system analizujący zagrożenia i umieszczający je na mapie cyberbezpieczeństwa pomógł opracować dodatkowe moduły wykrywania złośliwego kodu, co jeszcze bardziej poprawiło ochronę użytkowników.

Maszynowe uczenie i bezpieczeństwo? Tak, ale…

Nie wszystkie projekty opracowywane przez inżynierów i programistów, wykorzystujące uczenie maszynowe okazały się sukcesem. O porażkach nikt głośno nie mówi, ale są one cenną nauką, bo pozwalają przekonać się, że pewne interesujące rozwiązania o olbrzymim potencjale (tu: uczenie maszynowe) nie zawsze stanowią remedium na wszelkie kłopoty. Machine learning to dość wymagająca bestia. Warto wspomnieć o jednym z nowszych projektów ESET: Augur ML Engine, czyli maszynowo wyuczonym silniku detekcji zagrożeń. Skąd taka nazwa? W starożytnym Rzymie augurzy byli kapłanami, których rolą było odczytywanie woli bogów ze zjawisk atmosferycznych czy lotu ptaków. Augur ML Engine nie czyta z lotu ptaków, lecz jest rozwiązaniem opartym na matematyce, ale pozwala wyłapywać niebezpieczne zjawiska krążące w chmurze danych, w cyberprzestrzeni.

Jak podkreśla ekspert ds. cyberbezpieczeństwa Ondrej Kubovič, silnik Augur nie powstałby, gdyby nie trzy kluczowe czynniki: po pierwsze – ekonomia. Maszynowe uczenie dzięki pojawieniu się dużej ilości danych i tańszego sprzętu stało się po prostu bardziej przystępne cenowo. W projektach biznesowych trzeba patrzeć na to, czy w ogóle dane rozwiązanie jest ekonomicznie uzasadnione. W każdym razie duża ilość danych oraz tańszy i jednocześnie coraz bardziej wydajny sprzęt obliczeniowy umożliwił dynamiczny rozwój projektów wykorzystujących maszynowe uczenie – nie tylko w branży cyberbezpieczeństwa, ale również w medycynie czy np. autonomicznym transporcie. Druga kwestia to popularność machine learningu. Gdyby była to bardzo wąska dziedzina wiedzy, stosowana jedynie przez nielicznych specjalistów, trudno byłoby oczekiwać szybkiego pojawienia się na rynku efektywnych i skutecznych rozwiązań komercyjnych. Tymczasem im więcej jest różnego typu projektów, tym większa baza wiedzy dla wszystkich, którzy chcieliby wykorzystać maszynowe uczenie do własnych pomysłów. Wreszcie trzeci i najbardziej istotny czynnik umożliwiający budowę systemu Augur to doświadczenie. 30 lat walki z “czarnymi kapeluszami” i ich “produktami” pozwoliło zbudować gigantyczną bazę danych zawierającą miliony wyodrębnionych funkcji i procedur, czy też tzw. “genów DNA” wszystkich złośliwych kodów, jakie kiedykolwiek były analizowane w przeszłości. Tak bogaty zestaw informacji pozwolił przygotować odpowiednio dopasowany zestaw treningowy maszynowego uczenia dla Augura.

 

ESET Augur ML Engine
Schemat działania opracowanego przez ESET Augur ML Engine (graf. ESET).

Augur wykorzystuje sieci neuronowe, głębokie maszynowe uczenie oraz skonsolidowane wyniki sześciu precyzyjnie dobranych algorytmów klasyfikacji. Jak to działa w praktyce? Załóżmy, że system otrzymuje próbkę podejrzanego kodu do analizy. Najpierw Augur naśladuje działanie analizowanego kodu i uruchamia podstawową analizę, której zadaniem ma być wyodrębnienie pewnych cech numerycznych, sprawdzenie jakie procesy dany kod chce uruchomić oraz porównanie wyników z wspomnianą wcześniej bazą DNA wszystkich, kiedykolwiek analizowanych zagrożeń, aby zdecydować do jakiej kategorii przypisać analizowany plik: bezpieczny plik, potencjalnie niechciany program (np. adware czy specjalistyczne narzędzia, które same w sobie nie są złośliwe, ale mogą takie się stać w rękach odpowiednio zdeterminowanego agresora), czy złośliwy kod.

Współpraca wspomnianych sześciu algorytmów klasyfikacji przypomina nieco jasnowidzów z “Raportu mniejszości”. Algorytmy te “głosują” czy dana próbka jest szkodliwa czy też nie. Wynik głosowania jest zależy od tego, jak skonfigurowane są algorytmy klasyfikacyjne. W przypadku tych wykorzystywanych przez Augura, możliwe są dwa ustawienia. W trybie agresywnym, analizowana próbka będzie oznaczana jako złośliwa, jeżeli większość z sześciu algorytmów klasyfikacyjnych określi dany kod jako złośliwy. To ustawienie zalecane jest głównie dla specjalistów IT, kompetentnych administratorów, którzy np. za pomocą ESET Enterprise Inspectora mogą oznaczyć wszystkie podejrzane pliki i samodzielnie je analizować. W przypadku łagodniejszej konfiguracji, czystość próbki jest deklarowana jeżeli przynajmniej jeden z sześciu algorytmów klasyfikacyjnych dojdzie do takiego wniosku.

Wykrywanie szkodliwego oprogramowania opartego na sygnaturach nie działa. Uczenie maszynowe i sztuczna inteligencja to najsilniejsza obrona.
James Scott, starszy współpracownik, Institute for Critical Infrastructure Technology

Najciekawszą informacją jaką warto tu przekazać jest to, że techniki maszynowego uczenia i zaawansowanej heurystyki są rozwijane również przez polskich ekspertów. To właśnie dzięki ich wiedzy mamy dziś na rynku wspomniany wcześniej produkt dla profesjonalnych użytkowników i działów IT – ESET Enterprise Inspector. To rozwiązanie intensywnie wykorzystujące potencjał głębokiego maszynowego uczenia jest w całości efektem pracy polskich ekspertów.

Gdy byłem czarnym kapeluszem (…), nie było czegoś takiego jak pentesting. Może uniwersytety miały tego rodzaju programy badawcze, ale ogólnie nie było takich usług, a firmy z nich nie korzystały.
Kevin Mitnick, w wywiadzie dla InnPoland.pl

No dobrze, ale jaka jest zaleta podejścia wykorzystującego uczenie maszynowe? Przede wszystkim to, że rozwiązania takie jak Augur, a także ESET Enterprise Inspector są w stanie wykryć zupełnie nieznane i wcześniej nie odnotowane szkodliwe oprogramowanie. Wykrywanie w takich sytuacjach opiera się wyłącznie na informacjach użytych z bazy wykorzystanej do maszynowego uczenia, a nie na założeniu, że dany kod, gdzieś już na świecie się pojawił. To duży krok naprzód, bo pozwala zablokować ataki wykorzystujące nieznane wcześniej luki i stosujące zupełnie nowe metody.

Maszynowe uczenie i druga strona medalu

Jakkolwiek projekty rozwiązań ochronnych wykorzystujących maszynowe uczenie mogą wyglądać na imponujące, to nie możemy zapominać jeszcze o drugiej stronie – cyberprzestępcy, agresorzy i generalnie wszyscy, którzy są zainteresowani rozwijaniem metod ataków i projektowaniem złośliwego kodu, również wiedzą, że istnieje coś takiego jak maszynowe uczenie. Podczas ostatnich targów MWC 2019 w Barcelonie, przedstawiciele firmy ESET zaprezentowali interesujący raport pt. “Machine Learning Era in Cybersecurity: a step towards a safer world or the brink of chaos?”. Istotą tego raportu jest właśnie pokazanie, że nie tylko producenci rozwiązań ochronnych aktywnie wykorzystują nowoczesne algorytmy i techniki maszynowego uczenia czy głębokiego uczenia, ale również ci, którzy stoją za licznymi atakami i zagrożeniami sieciowymi. Raport pokazuje w jaki sposób maszynowe uczenie może być wykorzystywane przez agresorów, a także prezentuje istotne ograniczenia tej techniki tworzenia kodu – nie tylko złośliwego, ale w ogóle jakiegokolwiek. Jak już wcześniej wspomniałem, maszynowe uczenie to tylko narzędzie, bardzo efektywne, o dużym potencjale, ale nie zawsze optymalne w kontekście cyberbezpieczeństwa.

Jakie zatem skutki może mieć to, że maszynowe uczenie znajduje się również w rękach agresorów? Autorzy raportu zwracają uwagę przede wszystkim na kilka pól zastosowań nowoczesnych technik uczenia maszyn. Przede wszystkim – i to wydaje się najbardziej oczywiste – maszynowe uczenie może pomóc atakującym w opracowywaniu i rozwijaniu wyrafinowanego, złośliwego kodu. Przy czym dotyczy to zarówno złośliwych programów, spamu, ataków phishingowych jak i innych form ataku. Zwykle gdy mowa o “złośliwym kodzie” myślimy o jakimś programie wykonującym złośliwe działania. W przypadku takich rozwiązań maszynowe uczenie może być wykorzystywane do rozwijania kolejnych iteracji nowego wariantu złośliwego oprogramowania w celu odnalezienia wersji, która okaże się trudniej wykrywalna przez systemy detekcyjne stosowane przez producentów oprogramowania ochronnego.

Jednak maszynowe uczenie to nie tylko rozwój samego kodu złośliwego programu, ale też rozwój całych kampanii ataków. Z pewnością pamiętamy próby ataków spamerskich/phishingowych sprzed paru lat – były one dla nieco bardziej wprawnej osoby stosunkowo łatwe do wykrycia. Np. mail udający korespondencję od banku i zachęcający do odwiedzenia “strony banku” w celu “weryfikacji” danych logowania wyglądał może i trochę podobnie do faktycznych wiadomości od danej instytucji finansowej, ale często był pełen błędów stylistycznych, gramatycznych czy ortograficznych – zwłaszcza gdy był opublikowany w języku innym niż angielski (np. po polsku). Generalnie bardziej uważny adresat takiej korespondencji był w stanie zauważyć, że coś jest nie tak. Dziś wiadomości stanowiące próbę wyłudzeń danych czy będące wstępem do bardziej wyrafinowanych ataków są dużo lepiej przygotowane. Uwzględniają nie tylko dokładną formę i styl oryginalnej korespondencji instytucji pod którą atakujący się podszywa, ale też są pozbawione błędów stylistycznych czy gramatycznych. Krótko mówiąc, adresaci tej korespondencji mają znacznie trudniej.

Maszynowe uczenie pomaga też atakującym wykrywać charakterystyczne, powtarzające się wzory w złośliwych treściach (oprogramowaniu, spamie itp.), to z kolei umożliwia usunięcie wzorców i wprowadzenie pewnych elementów losowości co utrudnia detekcję niepożądanej, złośliwej korespondencji, czy ataków phishingowych.

Oprócz tego dzięki uczeniu maszynowemu agresorzy mogą znacznie zwiększyć prędkość ataku, co może mieć szczególne znaczenie w takich atakach jak np. kradzież danych. Innym przykładem jest tzw. profilowanie. Nam najczęściej kojarzy się to z rynkiem reklam online – wszak reklamy Google’a (Ad Sense) wyświetlają się w sposób możliwie dopasowany do tego, z jakich treści najczęściej korzystamy w Sieci. W przypadku cyberprzestępców maszynowe uczenie pozwala zautomatyzować profilowanie ofiar, czyli dokonanie automatycznej analizy celu na podstawie ogólnodostępnych (sieci społecznościowe) czy wcześniej pozyskanych (np. w wyniku kradzieży danych) informacji.

Kolejny przykład “innowacji” jaką daje agresorom maszynowe uczenie to zautomatyzowanie poszukiwań najbardziej efektywnej techniki ataku, w tym również tzw. luk dnia zerowego (czyli wcześniej nieznanych luk w oprogramowaniu systemowym, umożliwiających zdalne przejęcie kontroli nad zaatakowaną maszyną działającą pod kontrolą systemu, w którym daną lukę wykryto).

Jestem przekonany, że istnieją dwa typy firm: te, które zostały zhakowane oraz te, które to dopiero czeka.
Robert S. Mueller III, dyrektor FBI podczas konferencji w San Francisco, 2012. r.

Szczególnie ciekawie (czy może raczej nieciekawie – dla ofiar) wygląda możliwość kolektywnej analizy w botnetach. O co chodzi? Załóżmy, że jakiemuś agresorowi udało zbudować się sieć botnetów, dzięki maszynowemu uczeniu może on stworzyć mechanizm, w którym każda z zainfekowanych maszyn będzie testować inną formę ataku na cel, wiadomości zwrotne będą automatycznie rozsyłane pomiędzy maszynami w botnecie, co z kolei pozwoli zbudować bardziej efektywną strategię ataku na konkretne cele. Wreszcie najważniejsze – wiedza ta, po zrealizowaniu ataku – nie znika, lecz może być wykorzystana jako baza dla uczenia maszynowego kolejnej generacji botów.

Agresorzy też się bronią

Zwykle gdy mówimy o obronie w kontekście cyberbezpieczeństwa, mamy na myśli oprogramowanie ochronne czy inne techniki neutralizacji złośliwego kodu i ataków sieciowych. Autorzy raportu zwracają jednak uwagę, że twórcy złośliwego kodu i osoby stojące za szeroko zakrojonymi kampaniami ataków (włączając w to rozbudowane sieci botnetów, czy budowę cyberkryminalnej infrastruktury) wykorzystują maszynowe uczenie nie tylko do opracowywania bardziej wyrafinowanych złośliwych treści, ale też do obrony przed narzędziami analityków zagrożeń.

Obrona ta może obejmować różne techniki, których cechą wspólną jest własnie to, że nie powstałyby one, gdyby nie uczenie maszynowe. Przykładem może być wykrywanie “dziwnie” działającej stacji roboczej w opanowanej przez agresora sieci botów (komputerów, które zostały zdalnie przejęte za pomocą złośliwego kodu). Taki “dziwnie” funkcjonujący węzeł botnetu może być np. tzw. honeypotem (maszyna-pułapka, przygotowana przez ekspertów IT lub analityków zagrożeń, w celu dokładnego zbadania danego ataku). Dzięki wykorzystaniu maszynowego uczenia, agresorzy mogą być w stanie wykryć maszyny, które nie zachowują się jak zwykłe komputery ofiar ataku. Konsekwencją zdolności odróżnienia dobrze chronionej i przygotowanej na ewentualne ataki maszyny od komputera zwykłego użytkownika może być to, że faktyczny ładunek (złośliwy kod) zostanie odpalony wyłącznie na tych drugich. Agresorzy mogą też wbudowywać mechanizmy autodestrukcji złośliwego kodu – jeżeli np. na danym, zainfekowanym przez kod z wbudowaną autodestrukcją, systemie wykryty zostanie nietypowy profil użytkownika czy specjalistyczne oprogramowanie, malware uruchomi procedurę autodestrukcji, która uniemożliwi potencjalnemu analitykowi zbadanie zagrożenia.

Warto zaznaczyć, że wszystko o czym tu mówimy to nie przewidywania i prognozy analityków, ale również już istniejące w złośliwym kodzie rozwiązania. Przykładem takiego wyrafinowanego kodu jest modułowy downloadera trojanów o nazwie Emotet. Ten złośliwy kod ma wbudowaną analizę telemetrii. Kod po zainfekowaniu ofiary zbiera dane telemetryczne zaatakowanej maszyny, a następnie przesyła je do serwera kontrolnego (tzw. C&C – Command & Control). Na podstawie zebranych danych złośliwe oprogramowanie nie tylko dobiera moduły, które trafią do finalnego ładunku (payload), ale jest w stanie również odróżnić rzeczywistych, ludzkich operatorów komputerów od maszyn wirtualnych, czy zautomatyzowanych środowisk wykorzystywanych przez naukowców i analityków zagrożeń.
Poniższe ilustracje wyjaśniają w czym rzecz.

W zwykłym scenariuszu, kiedy Emotet infekuje maszynę ofiary, po wysłaniu danych telemetrycznych do centrum atakującego, przesyłany jest ładunek zawierający najbardziej efektywne złośliwe oprogramowanie, w kontekście jego skuteczności na danej, zaatakowanej maszynie.

Gdy Emotet trafi na maszynę, której telemetria wskazuje na to, że mamy do czynienia z pułapką (honeypot) czy np. maszyną wirtualną wykorzystywaną przez analityka zagrożeń, centrum dowodzenia agresora zamiast przesłać porcję złośliwego kodu do właściwego ataku, ukrywa swoją obecność uniemożliwiając analizę ładunku (payload), ale również namierzenie serwerów atakującego.

Na obecność algorytmów maszynowego uczenia w kodzie Emotet najbardziej wskazuje jednak trzeci scenariusz, kiedy to po zainfekowaniu odpowiednio przygotowanej maszyny przez analityka, Emotet przesyła telemetrię do centrum atakującego. W tym wypadku analityk tak skonstruował maszynę testową, by nie zdradzała ona, że w istocie nie jest komputerem ofiary i początkowo faktycznie do takiej maszyny przesyłane są złośliwe aplikacje. Jednak po kilku dniach centrum agresora uaktywnia procedurę ukrywania swojej obecności. Takie zachowanie wskazuje na wyuczoną maszynowo procedurę wykrywającą, że zainfekowana maszyna nie jest “zwykłym” komputerem ofiary.

Walka pomiędzy dobrem a złem trwa od dawna i będzie trwała jeszcze długo. Maszynowe uczenie to narzędzie wykorzystywane zarówno przez tych, którzy chronią nas przed atakami sieciowymi i złośliwym kodem, jak i przez tych, którzy chcą wykraść nasze dane czy pieniądze. Pamiętajmy jednak że nawet najlepsze techniki maszynowego uczenia nie zastąpią wykwalifikowanych, doświadczonych badaczy zagrożeń i rozsądku użytkowników. | CHIP