Primjena TensorFlow-a u sigurnosti

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Temu prijavila: Marija Lalić

Sadržaj

TensorFlow

TensorFlow je open source software library za numeričke operacije koji koristi data flow grafove. Čvorovi u grafu predstavljaju matematičke operacije (ops), a rubovi grafa predstavljaju multidimenzionalna podatkovna polja (tenzori). TensorFlow su razvijen od strane tima Google Brain u Googleovoj istraživačkoj organizaciji Machine Intelligence u svrhu provođenja machine learninga i istraživanja dubokih neuronskih mreža. Graf u TensorFlowu je opis operacija, odnosno izračuna. Da bi se nešto izračunalo, grafikon mora biti pokrenut u sesiji (eng. Session). Sesija postavlja operacije grafa na uređaje (CPU, GPU) i pruža metode za njihovo izvršavanje. Te metode kao rezultat vraćaju tenzore u obliku NumPy objekata u Pythonu ili kao TensorFlow instance u C i C++. To je simbolička matematička biblioteka koja se koristi u machine learning aplikacijama poput neuronskih mreža.

TensorFlow koriste razna poduzeća iz različitih gospodarskih grana poput Uber, Nvidia, Dropbox, Ebay, Snapchat, CocaCola, Lenovo, Musical.ly. To upravo pokazuje raznovrsnost korištenja. Njega također koristi svaki Google proizvod - za image search, image captioning, prevođenje, preporuke proizvoda itd. Google treba machine learning kako bi iskoristio svoje velike data setove na način tako da korisnima pruži što bolje iskustvo.

Tensorflowenv.png

Na slici se može vidjeti programska okolina TensorFlowa. Sastoji se od tri razine APIja i kernela. Na najvišoj razini se nalaze tkzv. 'Estimators' koji predstavljaju cijelokupni model. Estimator API pruža metode za treniranje modela, određivanja njegove točnosti i za generiranje predviđanja. Na srednjoj razini imamo slojeve, metrike i data setove. Dataset API ima metoda za loadanje i manipuliranje podacima i njihovo feedanje u model. Dakle, korištenje Estimators API i Dataset API je osnovno potrebno znanje za korištenje TensorFlowa te ćemo upravo njihovo korištenje i vidjeti u primjerima istraživanja i python skripti. U low level API se može vidjeti da se nalaze Python, C++, Java i GO.

Glavni use caseovi za TensorFlow, osim u sigurnosti su:

 1. Voice/sound recognition

Jedna od najpoznatijih koristi TensorFlowa je njegovo korištenje za aplikacije bazirane na zvuku/glasu. Sa pravilnim feedom podataka, neuronske mreže su sposobne razumjeti audio signale. To može biti: prepoznavanje glasa, glasovno pretraživanje (speech to speech aplikacije), otkrivanje nedostataka (buka motora) u automobilskoj i zrakoplovnoj industriji.

 2. Aplikacije bazirane na tekstu

Korištenje TensorFlowa za apliakcije poput sentimentalna analiza (CRM, socijalni mediji), otkrivanje prijetnji (društvene mreže, vlada) i otkrivanje prijevara (osiguranje, financije). Otkrivanje jezika je jedno od najpopularnijih korištenja kod aplikacija baziranih na tekstu, npr. Google Translate je svima poznat, on nudi potporu za prevođenje preko 100 jezika iz jednog u drugi. Uz to Google ga još koristi za sažetke tekstova (na temelju određenog teksta se dobije naslov ili sažetak) i za SmartReply koji automatski generira e-mail odgovore.

 3. Prepoznavanje slika

Tkzv. image recognition je najčešće korišten od strane društvenih mreža, telekoma. Osim njih se prepoznavanje lica, pretraživanje preko slika, detekcija pokreta i clustering slika koristi i u automobilskoj, zrakoplovnoj i medicinskoj industriji.

 4. Time series

TensorFlow Time Series algoritmi se koristi za analiziranje vremenskih serija u podacima kako bi se na temelju toga izvukla smislena statistika. Najčešća upotreba ovoga je za preporuke na različitim stranicama poput Amazona, Google, Facebooka ili Netflixa. Oni analiziraju aktivnost korisnika i uspoređuju ih sa ostalima kako bi na temelju toga odredili što bi korisnik htio gledati ili kupiti.

 5. Detekcija videa

Korištenje TensorFlow neuronskih mreža se može koristiti i za detekciju pokreta i otkrivanje prijetnji u stvarnom vremenu u zračnim lukama i sigurnosti.

Bonus

NASA radi na sustavu s TensorFlow koji će klasificirati i grupirati asteroide. Kao rezultat toga će moći klasificirati i predviđati objekte blizu zemlji (eng. Near earth objects).

Primjeri

A machine learning approach to anomaly-based detection on android platforms

Ovo istraživanje koristi pristup strojnog učenja čije je učenje posebno nadzirano za otkrivanje anomalija. Model za strojno učenje se trenira koristeći podatke dobivene od razumijevanja ponašanja aplikacija. Taj istrenirani classifier se tada koristi da se predvide budući rezultati vektora. Korištenje machine learning based classifiera ima dva izazova: treba izdvojiti neku značajnost aplikacije koja će bit reprezentacija i potreba za data setom koji je dobroćudan (mora biti dobroćudan kako bi se classifier pravilno istrenirao). Classifier se trenira pomoću K-NN algoritma tako da on zna što je normalno ponašanje te baš zbog toga može detektirati ponašanja aplikacija koja odstupaju od definiranih normalnih ponašanja aplikacija. K-NN algoritam je tkzv. „K Nearest Neighbors“ algoritam koji sprema u sebe sve moguće slučajeve i klasificira nove slučajeve na temelju mjerenja sličnosti. HOSBAD je Host-Based Anomaly Detection System koji cilja Android Malware širen preko poruka i poziva. HOSBAS integrira dana mining i nadzirano strojno učenje u svojoj implementaciji. Dizajniran je da nadgleda i izvadi podatke o Android aplikacijama na aplikacijskoj razini te da koristeći te podatke detektira malware tako da pomoću strojnog učenja razlikuje normalna ponašanja od malicioznih ponašanja aplikacija. Model za strojno učenje se može gledati kao crna kutija čiji su inputovi setovi ponašanja formatirani u setove vektora, a outputovi flag koji kaže „Normal“ ili „Malicious“. Nadzirani model strojnog učenja koji je u ovom slučaju K-NN classifier je treniran pomoću modela normaliteta. Treniranje classifiera je najkritičnija faza jer točnost classifiera ovisi o ovoj fazi. Vektore koje su gledali su SMS tekstovi, pozivi, statusi uređaja te trenutno pokrenuti procesi i aplikacije. Za treniranje nisu uzeli samo „dobre“ podatke koji predstavljaju sigurne aplikacije, već su uključili i vektore koji predstavljaju maliciozna ponašanja koja se jako razlikuju od „dobrih“. Rezultati ovog istraživanja su pokazali da K-NN model ima točnost od 93.75% i error rate od 6.25% što su obećavajući rezultati. Uz to, pojava false positive rezultata je bila minimalna (0.000 za maliciozne i 0.154 za normalne).

Više detalja o istraživanju


A Behavioral Analysis Framework Augmented with Machine Learning to Identify mobile botnet applications

SMARTbot je dinamički framework za analizu koji se sastoji od tri komponente: dinamička analiza, feature mining i učenje. Na počektu se Android aplikacije stave u komponentu dinamičke analize koristeći platformu na analizu malwarea zvanu Andrubis. Rezultati te analize su trace i log files u XML i PCAP formatima; ti podaci se dalje šalju u feature mining komponentu gdje se svojstva i značajke ponašanja koja su specifična za botnet napade promatraju i extractaju. Na kraju se koristi ANN backpropagation model na dobiveni dana set kako bi se botnet classifier istrenirao. Koristi se šest različitih classifiera te se od njih odabire optimalni. (ANN - artificial neural network) Na slici je prikazan SMARTbot framework.

SMARTbot Framework.jpg

Na sljedećoj slici je prikazan korišteni data set.

Dataset.jpg

Svih šest classifiera je imalo točnost veću od 90%, ali jedan koji koristi jednostavnu logističku regresiju je imao točnost od 99.49%. Rezultati ostalih su 91% za Naive Bayes, 96% za SVM, 97% za MLP, 98% za J48 i 99% za RF. Jedan od zaključaka istraživanja je da dinamička analiza proširena sa strojnim učenjem je odlična opcija za identificiranje botnet ponašanja u Android aplikacijama.

Više detalja o istraživanju


Splunk and Tensorflow for Security: Catching the Fraudster with Behavior Biometrics

Ono šta su napravili je sljedeće; svaki pokret miša generira X i Y koordinate pointera miša i timestamp – te podatke su skupili i poslali Splunku kako bi poboljšali tradicionalne, stare data setove koje su imali. Na ovaj način će podaci o korisnicima imati i informacije o mogućim jedinstvenim uzorcima u ponašanju. Svaka aktivnost miša generira događaj svakih 5-10 milisekundi tako da neke interakcije sa mišem mogu imati 5,000 – 10,000 događaja od strane korisnika po jednoj stranici, što je jako puno podataka za analizirati. Zbog toga su odlučili agregirati i pretvoriti te podatke u slike u boji. Uostalom, miš se uvijek miče po ravnoj 2D površini tako da je ova pretvorba i prirodna. Jedna slika može predstavljati tisuće aktivnosti miša. Specijalizirali su high conrast encoding algorithm koji će reprezentirati smjer, brzinu i ubrzanje miša na uvjerljiv i dosljedan način. Zbog toga su mogli uočiti razlike u ponašanju između dešnjaka i ljevaka. Klikovi miša su reprezentirani kao obojani krug, a click and drag movement su prikazani kao debele linije.

Splunk.png

Sada kada su imali slike, pomoću Deep Learninga su procesirali slike sa specijaliziranim algoritmima koji su dizajnirani da otkriju bilo kakav mogući uzorak unutar slike, odnosno slika. Pomoću TensorFlowa i high level deep learning abstraction library Keras su izgradili custom nerual network arhitekturu koja će klasificirati pokrete miša. Zahvaljujući Kerasu su mogli implementirati potreban kod u samo 50-100 linija Python koda. Nakon treniranja modela samo tri minute su uspjeli postići uspješnost od 78%.

Više detalja

Antivirus skripta u Pythonu

Ovaj program trenira classifier tako da može detektirati Portable Executable datoteke (PE datoteke) kao 'maliciozne' ili 'legitimne'. Isprobava se šest različitih klasifikacijskih algoritama te se zatim uzme najbolji uspoređujući njihove rezultate.

Kod1.png

Prvo importamo module koje nam trebaju. Pandas je python data analysis library, dakle on će nam trebati za analizu podataka. Numpy je tu za matematičke operacije, on nudi funkcije za velike, multidimenzionalne matrice i nizove. Pickle služi za pretvaranje python objekata (liste, rječnici itd.) u character stream ili u našem slučaju u byte stream. Sklearn.ensemble nam omogućava da buildamo, treniramo i testiramo machine learning model. Zatim se treba loadati data source. U liniji koda 11 se može vidjeti da datoteka data.csv. Ona u sebi ima označene data setove PE datoteka koji su označeni kao 'maliciozni' ili 'legitimni'. Nakon toga u liniji koda 15 se pinta ukupan broj svojstva po redu. Sada se trebaju identificirati bitna svojstva iz našeg data seta koji će nam biti potrebni classifieru. Za to se koristi ExtraTreesClassifier (linije koda 18-21). Sada kad su bitna svojstva nađena ih treba printati i sortirati.

Kod2.png

Napravi se niz modela. Svaki model ćemo testirati na našem data koristeći extractana svojstva kao input te ćemo usporediti rezultate njihovih predviđanja. Onaj s najboljim rezultatom ćemo koristiti na kraju za detekciju malwarea. U liniji koda 48 se koristi for loop, upravo pomoću njega se testira svaki algoritam. Linija koda 50 je fitanje algoritma na set stvojstva, 51 je bilježenje njegovog rezultata, odnosno uspješnosti njegovog predviđanja. Svaki rezultat se printa i u liniji koda 55 se uzima pobjednik tj. najbolji. Pobjednik se zatim printa i njegova svojstva se spremaju u folder od classifiera kao seriju Pickle datoteka. Ovaj dio koda je bilo samo treniranje classifiera, a sada ćemo vidjeti što nam još treba za glavnu skriptu.

Kod3.png

Main metoda inicijalizira command line parse tako da kad napišemo ime naše datoteke koju želimo testirati, argument će biti baš ona jer ju želimo klasificirati kao 'malicioznu' ili 'legitimnu'. Nakon toga se treba loadati naš izabrani classifier zajedno sa njegovim svojstvima iz classifier foldera (linije koda 6-14). U liniji koda 16 se extracta byte stream iz naše input datoteke, a zatim u liniji koda 18 se iz toga extracta set svojstva. Njih zatim damo našem treniramo modelu (linija koda 20) te se output klasifikacije printa u command line.

Rez1.png

Rez2.png

Na slikama iznad se nalazi prikaz korištenja u oba slučaja (maliciozna datoteka i legitimna datoteka).

Zaključak

Kako virusi postaju pametniji, tako i sigurnosni sustavi i aplikacije moraju biti pametnije. Npr. polimorfni virusi enkriptiraju sami sebe na drukčiji način svaki puta kada infectaju host mašinu zbog čega ih je teže otkriti, crv replicira sam sebe kako bi se raširio na druge mašine. Detekcija virusa je u stvari problem klasifikacije, a kod tog problema nam može od velike pomoći biti program koji ima mogućnost prepoznavanja da li je dio softwarea malware ili ne. Upravo tu nam pomaže strojno učenje i deep learning. Kao što se moglo vidjeti na spomenutim primjerima, strojno učenje se sastoji od 3 bitna koraka: kreiranje trening seta koji će biti uzorak, korištenje trening seta za treniranje classifiera, korištenje classifiera za predviđanje. Bitno je samu klasifikaciju primijeniti na dijelove malwarea gdje se očekuje da će se sličnost najviše očitovati. Druga bitna stvar za napomenuti su sami trening, odnosno data setovi koji se koriste za treniranje. Teško ih je razviti na temelju malware zbog nedostatka informacija o source kodu. Zbog toga se kao data set uzima open-source software tako da se sam classifier trenira na što realističnijem data setu. Machine learning može uvelike pomoći pri zaštiti sustava, aplikacija i samih korisnika.

Literatura

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima