• Ei tuloksia

Dynaamisen tunnistamisen toimintokaavio MobSF-järjestelmällä

4.4 Sovellusten luokittelu raporttitietoa käyttäen

Tämä luku käy läpi tutkimuksen staattiseen tunnistukseen liittyvän osion. Osioon sisältyy tiedon keräystä staattisten järjestelmien luomista raporteista, SVM-luokittelijan koulutus kerättyä tietoa käyttäen, luokittelijalle suoritettu ristivalidointi sekä ristivalidoinnin tulosten tarkastelu.

4.4.1 Luokittelijan koulutus ja validointi

Koska staattisten järjestelmien tulosten analyysi raportteja manuaalisesti tutkimalla oli haas-tavaa, päätettiin tutkimuksessa hyödyntää koneoppimista helpottamaan työmäärää. Tietoa oli helpompi käsitellä ohjelmallisesti. Lisäksi koneellinen data-analyysi saattaa havaita tieto-massasta helpommin piilossa olevia suhteita, kuin datan läpikäynti käsin. Tutkimuksessa oli myös valmiiksi tiedossa, mitkä sovellukset olivat vaarattomia ja mitkä eivät. Tämän vuoksi koettiin hyödylliseksi täydentää tutkimusta koneoppimisella ja tarkastella, voisiko tutkittujen staattisten järjestelmien palauttaman tiedon luokittelulla tehdä johtopäätöksiä sovellusten

haitallisuuden suhteen. Tutkitut järjestelmät eivät nimittäin tehneet binääristä päätöstä siitä, oliko sovellus haitallinen vai vaaraton, vaan jättivät tämän käyttäjän vastuulle.

Staattisten analysaattoreiden muodostamien raporttien tiedoista osa valittiin SVM-koneessa käytettäviksi ominaisuuksiksi. Sekä Androwarn että MobSF esittivät muodostamissaan rapor-teissa yleisiä tietoja sovelluksesta ja lisäksi molemmissa oli toisistaan poikkeavaa analyysiä tutkituista sovelluksista. Näitä analyysituloksia päätettiin tarkkailla koneoppimisen avulla, jotta nähtäisiin, olisiko ihmisen mahdollista raportti nähdessään tehdä johtopäätöksiä sovelluk-sen vaarallisuudesta. Lisäksi päätettiin valita ominaisuuksiksi myös järjestelmien tulostamia sovellusten yleisiä tietoja. Kummatkin järjestelmät hyödynsivät staattisessa analyysissään androguard-kirjastoa7, joten tutkimuksessa oletettiin järjestelmien toimivan tältä osin samoin.

Androwarnin raporteista ominaisuuksiksi valittiin analyysitulokset-kohdan alla olleet tiedot.

Nämä sisälsivät listauksia havaituista ongelmista tyyppien mukaan. Tyypeistä karsittiin kuiten-kin pois kaksi. Nämä olivat Connection Interfaces Exfiltration, sekä Device Setting Harvesting.

Lisäksi luokittelijaa varten lisättiin tieto siitä, oliko sovellus haitallinen vai vaaraton, joka oli binääriarvo.

Käytännössä jokainen testijoukossa ollut sovellus pyysi Internet-oikeuksia, ja tästä johtuen halusi myös tietää käytössä olevista verkoista. Tämän vuoksi lähes jokaisessa raportissa Con-nection Interfaces Exfiltration-listaus sisälsi vähintään yhden ongelman, ja koska kohdan ongelmien lukumäärät olivat muutaman luokkaa, haitallisten ja vaarattomien sovellusten välillä ei tämän ominaisuuden suhteen ilmennyt eroa. Täten ominaisuus karsittiin. Setting Harvesting sisälsi lähinnä pitkiä listauksia sovellusten merkkijonojen lokitusta ongelman-ratkomista varten. Hyvää tapaa hyödyntää tietoja luokittelussa ei keksitty, joten kyseinen ominaisuus karsittiin.

Ominaisuuksille annettuina arvoina käytettiin kohdissa havaittujen ongelmien lukumääriä.

Lukumääriä ei kuitenkaan erikseen lajiteltu vakavuusasteiden perusteella, jos kohta niitä sisälsi, vaan kaikki alakohdat laskettiin yhteen yhdeksi arvoksi. Ominaisuuksiksi valitut tiedot olivat:

• Audio Video Eavesdropping,

7.https://github.com/androguard/androguard

• Code Execution,

• PIM data leakage,

• Suspicious Connection Establishment,

• Telephony Identifiers Leakage,

• Telephony Services Abuse ja

• vaaraton vai haitallinen.

MobSF:n tietojen luokitteluun valittiin myös ominaisuudet raportin esittämien analyysitietojen pohjalta, liittäen mukaan binäärinen tieto sovelluksen haitallisuudesta. Datana käytettiin tässäkin havaittujen ongelmien lukumäärää.

MobSF:n tulostama raportti luokitteli tiedot kolmen eri vakavuustason mukaan: sininen, keltainen sekä punainen. Sinisellä värillä merkityt kohdat olivat alhaisimman tason huomioita sovelluksesta, jotka eivät olleet ongelmallisia. Keltainen väri kuvasi keskitason vakavuutta ja punainen väri vakavia ongelmia.

Sinisellä värillä merkityt kohdat jätettiin laskematta mukaan sovelluksen ominaisuuksien arvoihin, koska ne olivat vain yleisiä analyysihuomioita sovelluksesta, eivätkä vaikuttaneet sovelluksen haitallisuuteen. Raportin analyysikohdista Domain Malware Check karsittiin pois, koska yhdellekään sovellukselle ei ollut merkitty siihen arvoja. Tämän tilalle valittiin Security Score, joka oli erityinen MobSF:n esittämä tieto, ja puuttui Androwarnista. Security Score oli pisteytys välillä 0-100, joka laskettiin sovelluksessa havaittujen tietoturvaongelmien pohjalta.

Valitut ominaisuudet olivat:

• APKiD Analysis,

• Code Analysis,

• File Analysis,

• Manifest Analysis,

• Security Score sekä

• vaaraton vai haitallinen.

Kolmanteen luokittelutestiin valittiin raporttien esittämiä yleisiä tietoja sovelluksista, liittäen jälleen mukaan binäärinen tieto sovelluksen haitallisuudesta. Ominaisuuksien arvojen laskemi-nen muuttui osittain tässä luokittelussa. Mukaan otettiin käytetty SDK-versio ja sovelluksen

tiedostokoko. SDK-version arvoksi tuli yksinkertaisesti versionumero, ja tiedostokooksi mer-kittiin raportin ilmoittama tiedostokoko megatavuina. Kaikki ominaisuudet tässä luokittelussa olivat:

• Aktiviteettien määrä sovelluksessa,

• pyydettyjen oikeuksien määrä,

• sovelluksen vaatima SDK-versio,

• tiedostokoko sekä

• vaaraton vai haitallinen.

SVM-koneen koulutukseen käytettiin scikit-learn-kirjastoa (Pedregosa ym. 2011). Scikit-learn8on Python-ohjelmointikielelle9kehitetty kirjasto, joka tukee useita koneoppimisessa käytettäviä toiminnallisuuksia, kuten luokittelua sekä ryhmittelyanalyysiä.

SVM-koneen käyttöä varten kirjoitettiin Python-skripti. Kyseinen skripti luki raporttien da-tasta muodostetuista CSV-tiedostosta sovellusten ominaisuudet. Jokainen sovellus oli omal-la rivillään, joten tiedosto sisälsi 124 riviä. Tiedoston sarakkeet sisälsivät numeroarvoina ominaisuuksien tiedot sovellusta kohti. Tietojen lukemisen jälkeen skripti jakoi sovellukset ristivalidointia käyttäen osajoukkoihin, joita käytettiin sekä koulutusjoukkoina että testijouk-koina. Lopuksi skripti suoritti ristivalidoinnin ja tulosti näkyviin siitä lasketut tulokset, jotka kirjattiin ylös.

Valitut 124 sovellusta jaettiin 10 osaan käyttäen k-kertaista ristivalidointia. Scikit-learnin dokumentaation mukaan (scikit-learn developers 2019a) k-kertaisessa ristivalidoinnissa koko käytettävissä oleva joukko jaetaankosajoukkoon, joistak-1joukkoa käytetään koulutukseen, ja jäljelle jäänyttä joukkoa testaukseen. Kaikki joukot käydään läpi niin, että jokainen joukko toimii vuorollaan testijoukkona. Kun kaikki joukot ovat toimineet kertaalleen testijoukkona, osien yhteenlaskettujen validointien keskiarvosta voidaan laskea valittujen ominaisuuspa-rametrien tehokkuusarvio valitulla ytimellä. Näin on mahdollista etsiä ytimelle parhaiten soveltuvat parametrit käytettäviksi.

Jos joukko jaetaankin aluksi testijoukkoon sekä koulutusjoukkoon, ja vain koulutusjoukkoon

8.https://scikit-learn.org/stable/index.html 9.https://www.python.org/

sovelletaan ristivalidointia, myöhemmin on lisäksi mahdollista suorittaa itse mallin koulutus ja hyödyntää käyttämätöntä testijoukkoa lopullista arviota varten (scikit-learn developers 2019a). Tätä mahdollisuutta ei kuitenkaan tutkimuksessa hyödynnetty.

Ristivalidoinnin toimintaperiaate on esitetty kuviossa 10 käyttäen esimerkkinä 5-kertaista ristivalidointia.