Microsoft en Intel zetten malwaresamples om in afbeeldingen voor deep learning

Microsoft en Intel gaan samenwerken aan een onderzoeksproject waarmee malware wordt omgezet in afbeeldingen om zo patronen beter te herkennen. Op die manier kunnen deep-learningalgoritmes de malware beter bestuderen.

Het project heet Stamina, een acroniem voor static malware-as-image network analysis. Met het project willen Microsoft en Intel codesamples van malware omzetten in grayscaleafbeeldingen. De binaire data van zo'n sample wordt daarbij omgezet in ruwe pixeldata. Die eendimensionale pixelstroom wordt vervolgens omgezet in een tweedimensionale afbeelding.

Het is daarbij belangrijk dat de afbeeldingen eerst kleiner worden gemaakt. Dat is volgens de bedrijven nodig om te voorkomen dat het verwerken van te grote afbeeldingen het proces vertraagt. Na het kleiner maken van de afbeeldingen worden de afbeeldingen aan een deep-learningalgoritme gegeven. Dat is een algoritme dat zelf kan leren van niet gestructureerde libraries.

De wetenschappers voorzagen het algoritme van 2,2 miljoen hashes van malwarebestanden. Twee derde daarvan werd gebruikt om het algoritme te trainen, en de rest om de resultaten te testen en te valideren.

De onderzoekers zeggen dat tijdens een eerste test 99,07 procent van de afbeeldingen als malware werd aangemerkt. In 2,58 procent van de gevallen ging het om false positives. De onderzoekers zeggen dat de resultaten een teken zijn dat deep learning van malware via afbeeldingen een goede methode is om verder te worden bestudeerd.

Door Tijs Hofmans

Nieuwscoördinator

12-05-2020 • 10:43

24

Reacties (24)

24
24
15
5
1
9
Wijzig sortering

Sorteer op:

Weergave:

Ik stel me enkele vragen bij de verdeling van de data. In de bron staat dat ongeveer 1,2 miljoen samples van malware data gecombineerd worden met ongeveer 120.000 samples van 'gewone' bestanden. Die verdeling is wel enorm scheef. Als het netwerk dan, zonder iets te leren, in 100% van de gevallen het label 'malware' output, is dat in ongeveer 90% van de gevallen een juist antwoord. Ze zullen dit hopelijk wel op een of andere manier opgevangen hebben, maar die verdeling is wel enorm vertekenend, zeker aangezien op een gemiddelde computer eerder 90% onschuldige bestanden te vinden zijn...

[Reactie gewijzigd door thunderfury op 2 augustus 2024 14:11]

De accuracy van een model zegt inderdaad erg weinig wanneer je geen rekening houdt met class balance. Als oplossing kun je de classes balanceren door downsampling (weggooien van een deel van de majority class) of upsampling (duplicatie/modificatie van minority class). Je kunt samples aanpassen, zoals draaien, verschuiven, spiegelen. Dit is bij afbeeldingen in neurale netwerken erg van belang, omdat je anders enkel "perfecte voorbeelden" traint.

Zo zijn ze er in dit onderzoek mee omgegaan:
For STAMINA model II, we used segmentation and resizing to deal with large files. Our initial approach used file size as an extra gate, which is the model trained on large sized files. After examining the file size distribution for benign and malicious files respectively, we decided to segment the benign files only – for each benign file, we segmented and converted it into multiple images and for each malicious file, we resized and converted it into one single image. By doing this, we also addressed the data imbalance issue between benign and malicious. The number of segmented benign files for training is 31,965. The number of resized malware images for training is 58,630. We trained STAMINA model II on this set and tested on a set-aside test set.
"We noted that the mailware-te-benign ratio from the training and validation set is approximately 3.143:1 the malware to bening ratio from the test set is approximately 2.251:1. Hence, the random guessing baseline is 74.74% higher then 50%"

Gezien 74.74 met een punt geschreven word is het dus ene komma en was het in de uiteindelijke test 2,51 malware vs 1 gewoon sample.

Maar het doel van deze paper was om het aan te tonen of het in theorie kan, niet om het verder te ontwikkelen om het effectief op de markt te zetten.
De methode is beetje houtje touwtje. De enige reden om naar 2D te gaan is dat ze standaard CNN's kunnen gebruiken. Maar bij een plaatje zit er correlatie tussen pixels direct onder en boven elkaar. Dat is hier niet het geval. Vooral als je er vanuit gaat dat CNN's voornamelijk bestaan uit convoluties met 3x3 pixels. En 2,5% false positives, betekend dat op een hardeschijf zo een miljoen bestanden die fout als virus worden geclassificeerd
Het converteren van probleem A naar probleem B om zo optimaal gebruik te kunnen maken van de algoritme of data structuur ten behoeve van de nauwkeurigheid of snelheid van de oplossing is heel normaal en wordt veel toegepast.
Het klinkt misschien als de golden hammer approach, maar het is wel degelijk een serieuze wetenschap.
Maar als je een oplossing voor probleem A gaat gebruiken in het domein van probleem B, is het wel handig om aan te geven waarom A en B overeenkomsten hebben. Dat zie ik niet zo makkelijk voor malware code en 2D plaatjes.
Je zou net zo goed kunnen proberen of de malware beter detecteerbaar wordt als je de 2D-versie vermenigvuldigd met een plaatje van een kat, voordat je een CNN toepast. En of de malware beter detecteerbaar is, als je een plaatje van een hond gebruikt. Er zijn namelijk goede training-sets voor plaatjes van katten en honden beschikbaar, en misschien lijkt malware meer op katten dan op honden.
De overeenkomsten zijn vaak ver te zoeken en zeker niet intuïtief. Het is een complexe wetenschap en er is heel veel onderzoek nodig om een manier te vinden die beter is dan de recht-toe-recht-aan approach.

Of dit nu een doorbraak is door precies de juiste conversie te vinden of een clickbait omdat het een aantal trendy termen bevat kan ik niet bepalen aan de hand van het artikel.
Ik blijft het heel gek vinden dat we via zo'n "rare omweg" moeten werken.
In mijn ogen levert het vooral ook veel onnodige vertaling + onnodige bewijsvoering op.
Voor de AI zelf-lerende modellen is er naar mijn idee te veel focus op 'images'.
Terwijl de veel meer discrete data in dit geval programma-code (en daaraan gerelateerd 'gedrag')
toch ook als zodanig de input voor een model kan zijn?
Alleen omdat we daar niet genoeg mee geoefend hebben gaat men dan die data maar
(representatief, inclusief het aantonen daarvan) vertalen naar een plaatje?
Lijkt me ook niet dat dit als end-user oplossing gebruikt wordt, het zal er om gaan om een eerste shifting in samples te kunnen reduceren en de workload voor andere analysesytemen te verkleinen.
En 2,5% false positives, betekend dat op een hardeschijf zo een miljoen bestanden die fout als virus worden geclassificeerd
Het is ook een onderzoekproject he ;)
Op zich is dat niet zon probleem, zo'n netwerk zal netjes coëfficiënten leren die er een beetje uit zien als een 1d convolution.
Je kunt natuurlijk N-dimensionale convolutie-layers invoegen. 2D is lekker te visualiseren en heeft relatief veel baat bij ontwikkeling in object detection.
Ja: er geen inherente 2d structuur in binaries. Dat ze standaard CNNs kunnen gebruiken is handig voor de researchers maar semantisch slaat het nergens op (c.f. bijvoorbeeld een call graph)
Niet gek natuurlijk. 2D afbeeldingen zijn ideaal voor Convolutional Neural Networks. Je kunt bestaande netwerken gebruiken zoals ImageNet / ResNet en vervolgens je eigen laag erachter zetten. Deze laatste laag bepaalt dan wat het label is (wel of geen malware).

Op deze manier kun je ook malware herkennen die vrij vergelijkbaar is of weinig aanpassingen heeft ten opzichte van bekende malware.
Dat is hier misschien lastiger, het is fijn om een bestaand image classification netwerk te gebruiken als je input vergelijkbaar is, e.g. de erste lagen van zon netwerk focussen op het herkennen van macro elementen als lijnen, hotspots etc. Waar naarmate je dieper in het netwerk komt deze features steeds meer high-level worden als hoofd & vacht etc, gevolgd door echte classificate, e.g. kat of bloem. Jij suggereert dat low level layers behouden kunnen worden maar ik zou dat niet durven zeggen, geen idee of het heel relevant is om te zoeken naar lijnen in zon binary -> image. Misschien is van het begin trainen wel veel beter.

Lamaar ze hebben idd imagenet geretrained, als ik tijd heb ff lezen waarom want dat klinkt niet triviaal.

[Reactie gewijzigd door Xerxes249 op 2 augustus 2024 14:11]

Maar zoals djexplo hierboven terecht opmerkt, heeft de convolutie in een CNN voor afbeeldingen zin, omdat er een relatie is tussen pixels boven en naast elkaar. Die relatie bestaat niet in lineaire (malware) code. De ruimtelijke relatie in plaatjes maakt dat 2D afbeeldingen ideaal zijn voor CNNs, maar dat gaat hier dus niet op.
Ik heb het onderzoek niet gelezen, maar misschien is het interessant om de malware samples als 3D voxel verzamelingen te zien en te convolueren. Oh wacht, daar is geen out-of-the-box CNN voor.
Get the picture, duh. O-)
Wel knap dat het met verkleinen alsnog herkenbaar is, je zou verwachten dat je dan problemen krijgt met schaling, compressie, artifacts. Is deze vertaalslag van binary naar afbeelding nou zinvol omdat de software er verder voor ontwikkeld is? Ik zou denken dat dmv hashes je accurater kan werken?
Hmm, dit moedigt de malware-bouwer dus aan om een One pixel attack in hun binaries zien te verwerken?

(Dus proberen de binaries zo aan te passen dat de AI hem niet meer oppikt)
Wellicht, maar volgens het artikel wordt de malware eerst omgezet in een grayscaleafbeelding, daarna wordt hij gecompresseerd, voordat hij aan het neural network wordt gegeven. De kans is dus klein dat die kleine flip in binary de translatie overleefd en impact heeft op de uitkomst.
Een oplossing op zoek naar een probleem...

Hoe gaat dit werken als iemand een compleet nieuw stukje malware schrijft?
Op zich een aardig idee. Nu maar hopen dat bij het omzetten naar een plaatje en bij het verkleinen niet het kind met het badwater wordt weggegooid. Uiteindelijk gaat het om patroon herkenning. Als het patroon er nog maar in blijft staan.

Zelf moet ik altijd denken aan een AI systeem dat dieren in foto's moest herkennen. Dat werkte perfect bij de dieren die in de gematigde zone van de aarde voor komen. Maar bij de ijsberen ging het mis: Elk plaatje met veel wit in beeld werd als ijsbeer herkend. Gewoon omdat alle ijsbeer plaatjes bij het inleren altijd een witte achtergrond hadden...
Ik denk eerder dat ze bedoelen hoe malware werkt. Wat er word geinfecteerd, welke registry keys er worden veranderd, welke "doelen" er dus worden aangevallen met andere woorden.
Dit gezegd zijnde, zal nieuwe malware andere doelen en op andere manieren het computer systeem gaan aanvallen om te ontkomen aan feit dat een deep learning programma kijkt naar de aanval patronen.
Interessant. Cylance/BlackBerry zijn hier wereldleider in. Zo'n AI model train je niet zomaar. Microsoft doen echt hard hun best om de concurentie buitenspel te zetten. Ik ben benieuwd wat dit oplevert.
Dit word gedaan omdat er al veel werk is gedaan/bestaat in AI learning op basis van plaatjes?

Op dit item kan niet meer gereageerd worden.