obfuskaatio
mitä on obfuskaatio?
Obfuskaatio tarkoittaa jonkin vaikeaselkoisen tekemistä. Ohjelmointikoodi on usein hämärän peitossa immateriaalioikeuksien tai liikesalaisuuksien suojaamiseksi ja estääkseen hyökkääjää kääntämästä omaa ohjelmistoohjelmaa.
ohjelman koodin salaaminen osittain tai kokonaan on yksi hämäysmenetelmä. Muita lähestymistapoja ovat mahdollisesti paljastavien metatietojen poistaminen, luokkien ja muuttujien nimien korvaaminen merkityksettömillä tarroilla ja käyttämättömän tai merkityksettömän koodin lisääminen sovellussarjakuvaukseen. Obfuscator-niminen työkalu muuntaa suoraviivaisen lähdekoodin automaattisesti ohjelmaksi, joka toimii samalla tavalla, mutta on vaikeammin luettava ja ymmärrettävä.
valitettavasti myös haittaohjelmien kirjoittajat käyttävät näitä menetelmiä estääkseen hyökkäysmekanismiensa havaitsemisen haittaohjelmistojen torjuntatyökaluilla. Vuoden 2020 SolarWinds-hyökkäys on esimerkki hakkereista, jotka käyttävät obfuscationia puolustusten kiertämiseen.
Deobfuskaatiotekniikoilla voidaan takaisinmallintaa — tai kumota — obfuskaatio. Näihin tekniikoihin kuuluu ohjelman viipalointi, johon kuuluu ohjelmakoodin kaventaminen vain asiaankuuluviin lauseisiin tietyssä ohjelman kohdassa. Kääntäjä optimointi ja ohjelman synteesi ovat kaksi muuta deobfuscation tekniikoita. Obfuskaatio pyrkii tekemään käänteisen suunnittelun vaikeaksi eikä vaivan arvoiseksi.
miten obfuskaatio vaikuttaa?
Tietokonekoodissa käytetään monimutkaisia kiertolauseita ja turhaa logiikkaa, jotta lukijan on vaikea ymmärtää koodia. Tavoitteena on harhauttaa lukijaa lukemansa monimutkaisella syntaksilla ja vaikeuttaa viestin todellisen sisällön määrittämistä.
tietokonekoodilla lukija voi olla henkilö, laskentalaite tai muu ohjelma. Hämäystä käytetään myös huijaamaan virustorjuntatyökaluja ja muita ohjelmia, jotka tukeutuvat vahvasti digitaalisiin allekirjoituksiin koodin tulkinnassa. Dekompilers on saatavilla kielille kuten Java, käyttöjärjestelmille kuten Android ja iOS, ja kehitysalustoille kuten .NET. ne voivat automaattisesti kääntää lähdekoodin; obfuscation pyrkii vaikeuttamaan näiden ohjelmien tehdä niiden Dekompilointi samoin.
koodin hämärtämisessä ei ole kyse ohjelman alkuperäisen koodin sisällön muuttamisesta, vaan pikemminkin koodin jakelutavan ja esitystavan muuttamisesta sekavammaksi. Obfuscation ei muuta sitä, miten ohjelma toimii tai sen lopputuotos.
Seuraavassa on esimerkkipätkä normaalista JavaScript-koodista:
var greeting = 'Hello World';greeting = 10;var product = greeting * greeting;
sama pätkä sekavassa muodossa näyttää tältä.:
var _0x154f=;var _0x52df=function(_0x159d61,_0x12b953){_0x159d61=_0x159d61-0x122;var _0x154f4b=_0x154f;return _0x154f4b;};(function(_0x19e682,_0x2b7215){var _0x5e377c=_0x52df;while(!!){try{var _0x2d3a87=-parseInt(_0x5e377c(0x129))*parseInt(_0x5e377c(0x123))+-parseInt(_0x5e377c(0x125))*parseInt(_0x5e377c(0x12e))+parseInt(_0x5e377c(0x127))*-parseInt(_0x5e377c(0x126))+-parseInt(_0x5e377c(0x124))*-parseInt(_0x5e377c(0x12f))+-parseInt(_0x5e377c(0x128))*-parseInt(_0x5e377c(0x12b))+parseInt(_0x5e377c(0x12a))*parseInt(_0x5e377c(0x12d))+parseInt(_0x5e377c(0x12c))*parseInt(_0x5e377c(0x122));if(_0x2d3a87===_0x2b7215)break;else _0x19e682(_0x19e682());}catch(_0x22c179){_0x19e682(_0x19e682());}}}(_0x154f,0x1918c));var greeting='Hello\x20World';greeting=0xa;var product=greeting*greeting;
sekavaa versiota on lähes mahdotonta seurata ihmissilmän avulla.
Obfuskaatiotekniikat
Obfuskaatio käsittää useita eri menetelmiä. Usein, useita tekniikoita käytetään luomaan kerroksellinen vaikutus.
käännetyillä ohjelmakielillä, kuten C#: lla ja Javalla, kirjoitettuja ohjelmia on helpompi hämärtää. Tämä johtuu siitä, että ne luovat välitason ohjeita, joita on yleensä helpompi lukea. Sen sijaan C++: aa on vaikeampi hämärtää, koska se koostuu konekoodista, jonka kanssa ihmisten on vaikeampi työskennellä.
joitakin yleisiä hämäystekniikoita ovat muun muassa seuraavat:
- uudelleennimetään. Obfuscator muuttaa menetelmiä ja nimiä muuttujia. Uudet nimet voivat sisältää painamattomia tai näkymättömiä hahmoja.
- Pakkaus. Tämä pakkaa koko ohjelman, jotta koodi lukukelvoton.
- ohjausvirta. Maatunut koodi saadaan näyttämään spagettilogiikalta, joka on jäsentymätön ja vaikeasti ylläpidettävä koodi, jossa ajatusviiva on hämärän peitossa. Tämän koodin tulokset eivät ole selkeitä, ja sitä katsomalla on vaikea sanoa, mikä koodin tarkoitus on.
- Ohjekuvion muutos. Tämä lähestymistapa vie yhteiset ohjeet luotu kääntäjä ja vaihtaa ne monimutkaisempia, harvinaisempia ohjeita, jotka tehokkaasti tekevät saman asian.
- Nukekoodi lisätään. Dummy-koodi voidaan lisätä ohjelmaan vaikeuttamaan sen lukemista ja käänteisinsinööriä, mutta se ei vaikuta ohjelman logiikkaan tai lopputulokseen.
- metatiedot tai käyttämättömän koodin poisto. Käyttämätön koodi ja metatiedot antavat lukijalle ylimääräistä tietoa ohjelmasta, aivan kuten Word-dokumentin merkinnät, jotka voivat auttaa heitä lukemaan ja vianetsintään. Metatiedon ja käyttämättömän koodin poistaminen jättää lukijalle vähemmän tietoa ohjelmasta ja sen koodista.
- läpinäkymätön predikaatti. Predikaatti koodissa on looginen lauseke, joka on joko tosi tai epätosi. Läpinäkymättömät predikaatit ovat ehdollisia haaroja – tai jos – niin-väittämiä-joissa tuloksia ei voida helposti määrittää tilastollisella analyysillä. Läpinäkymättömän predikaatin lisääminen tuo mukanaan tarpeettoman koodin, jota ei koskaan suoriteta, mutta on hämmentävää lukijalle, joka yrittää ymmärtää hajotettua tulostetta.
- debugintorjunta. Lailliset ohjelmistoinsinöörit ja hakkerit käyttävät vianetsintätyökaluja koodin tutkimiseen rivi riviltä. Näiden työkalujen avulla ohjelmistoinsinöörit voivat havaita ongelmia koodin kanssa, ja hakkerit voivat käyttää niitä koodin kääntämiseen. Tietoturva-ammattilaiset voivat käyttää anti-debug-työkaluja tunnistaakseen, milloin hakkeri ajaa debug-ohjelmaa osana hyökkäystä. Hakkerit voivat ajaa anti-debug-työkaluja tunnistaakseen, milloin debug-työkalua käytetään tunnistamaan muutokset, joita he tekevät koodiin.
- tamppauksen esto. Nämä työkalut tunnistavat koodin, jota on peukaloitu, ja jos sitä on muutettu, se pysäyttää ohjelman.
- merkkijonojen salaus. Tämä menetelmä käyttää salausta piilotettaessa merkkijonoja suoritettavassa ohjelmassa ja palauttaa arvot vain silloin, kun niitä tarvitaan ohjelman suorittamiseen. Tämä vaikeuttaa ohjelman läpikäymistä ja tiettyjen merkkijonojen etsimistä.
- koodin saattaminen osaksi kansallista lainsäädäntöä. Tämä on rutiinien ja haarojen uudelleenjärjestämistä koodissa ilman, että sillä on näkyvää vaikutusta sen käyttäytymiseen.
kuinka obfuskaatiomenestystä mitataan
obfuskaatiomenetelmien onnistumista voidaan mitata seuraavilla kriteereillä:
- voimaa. Se, missä määrin muunnettu koodi vastustaa automaattisia deobfuscation-yrityksiä, määrittää vahvuuden. Mitä enemmän vaivaa, aikaa ja resursseja se vaatii, sitä vahvempi koodi on.
- erilaistuminen. Se, missä määrin muunnettu koodi eroaa alkuperäisestä, on toinen sen tehokkuuden mittari. Eriytymistä voidaan arvioida muun muassa seuraavasti:
- uuden koodin sisältämien predikaattien määrä.
- periytymispuun syvyys ( DIT) — tunnuksen monimutkaisuuden osoittamiseen käytetty metriikka. Korkeampi DIT tarkoittaa monimutkaisempaa ohjelmaa.
- kulut. Kustannustehokas obfuscation menetelmä on hyödyllisempi kuin yksi, joka on kallista, varsinkin kun se tulee, kuinka hyvin se skaalautuu suurempia sovelluksia.
- monimutkaisuus. Mitä enemmän kerroksia obfuscator lisää, sitä monimutkaisempi ohjelma on, joten obfuscation onnistuneempi.
obfuskaation edut
obfuskaation tärkeimmät edut ovat seuraavat:
- salailua. Obfuskaatio kätkee koodiin sisältyvän arvokkaan tiedon. Tämä on etu laillisille organisaatioille, jotka haluavat suojata koodia kilpailijoilta ja hyökkääjiltä. Sen sijaan huonot toimijat hyödyntävät hämäräperäisyyden salailua piilottaakseen haitallisen koodinsa.
- tehokkuus. Jotkut obfuscation tekniikoita, kuten käyttämätön koodin poisto, on vaikutus kutistuu ohjelman ja tekee siitä vähemmän resursseja intensiivinen ajaa.
- turvallisuus. Obfuscation on sisäänrakennettu tietoturvamenetelmä, jota joskus kutsutaan sovelluksen itsesuojaukseksi. Sen sijaan, että käyttäisi ulkoista turvamenetelmää, se toimii suojattavan sisällä. Se soveltuu hyvin sellaisten sovellusten suojaamiseen, jotka toimivat epäluotettavassa ympäristössä ja sisältävät arkaluonteisia tietoja.
obfuskaation haitat
yksi obfuskaation suurimmista haitoista on, että sitä käytetään myös haittaohjelmissa. Haittaohjelmien kirjoittajat käyttävät sitä kiertääkseen virustorjuntaohjelmia, jotka skannaavat koodia tiettyjen ominaisuuksien varalta. Peittämällä nämä ominaisuudet, haittaohjelma näyttää lailliselta virustorjuntaohjelmisto.
yleisiä haittaohjelmien tekijöiden käyttämiä tekniikoita ovat:
- Exclusive or (XOR). Operaatio, joka piilottaa tiedot soveltamalla koodiin XOR-arvoja niin, että vain koulutettu silmä pystyy purkamaan salauksen.
- ROT-13. Ohje, joka korvaa koodin satunnaisilla merkeillä.
obfuscationin avulla tekijät paketoivat uusien haittaohjelmien kehittämisen sijaan yleisesti käytettyjä, hyödykkeiden hyökkäysmenetelmiä peittääkseen piirteitään. Joissakin tapauksissa ilkeämieliset toimijat sisältävät toimittajakohtaisia tekniikoita.
toinen epäselvyyden haitta on se, että se voi vaikeuttaa koodin lukemista. Esimerkiksi merkkijonojen salauksen hämäysmenetelmää käyttävä koodi vaatii merkkijonojen salauksen purkamista suorituksen aikana, mikä hidastaa suorituskykyä.
Obfusation and SolarWinds
Austinissa Texasissa IT-hallinta-ja seurantaohjelmistoja valmistaneeseen Solarwindsiin kohdistunut hyökkäys, jonka arvellaan alkaneen jo syyskuussa 2019, johti lukuisiin muihin yrityksiin ja valtion virastoihin murtautumiseen. Hyökkäys paljastui joulukuussa 2020 ja sen syyksi on arveltu venäläisiä hakkereita. Se vaaransi aluksi Solarwindsin Orion-tietohallintoalustan.
hyökkääjät käyttivät Sunburst-haittaohjelmaa, joka yhdisti obfuscation -, koneoppiminen-ja TEKOÄLYTEKNIIKOITA asentaakseen takaoven Orion-Alustan ohjelmistopäivityksiin. Peitelläkseen ponnistelujaan ja ohittaakseen puolustukset, he muuttivat tarkastuslokit, poistetut tiedostot ja ohjelmat käytön jälkeen ja tekaisivat toimintaa, jotta se näyttäisi laillisilta sovelluksilta verkossa.
tämän toimitusketjuhyökkäyksen epäillään pysyneen havaitsematta yli vuoden ajan. Orion-koodiin lisätty haittaohjelma makasi lepotilassa ja piilossa, kunnes käyttäjät latasivat saastuneet päivitykset. Sen jälkeen se levisi verkon kautta huomaamatta ja tartutti pitkän listan Orionia käyttäviä organisaatioita.
Obfuscation on yksi monista tekniikoista, joita hakkerit käyttävät murtautuakseen tietojärjestelmiin. Lue lisää suojautumisesta erilaisia kyberturvallisuushyökkäyksiä vastaan Techtargetin perusteellisesta kyberturvallisuuden suunnitteluoppaasta.