obfuscation
Hva er obfuscation?
Obfuscation betyr å gjøre noe vanskelig å forstå. Programmeringskode er ofte skjult for å beskytte immaterielle rettigheter eller forretningshemmeligheter, og for å hindre en angriper fra omvendt utvikling av et proprietært program.
Kryptering av noen eller alle programmets kode er en obfuscation-metode. Andre tilnærminger inkluderer å fjerne potensielt avslørende metadata, erstatte klasse-og variabelnavn med meningsløse etiketter og legge til ubrukt eller meningsløs kode i et applikasjonsskript. Et verktøy kalt en obfuscator vil automatisk konvertere grei kildekode til et program som fungerer på samme måte, men er vanskeligere å lese og forstå.
dessverre bruker ondsinnede kodeforfattere også disse metodene for å forhindre at angrepsmekanismer blir oppdaget av verktøy for fjerning av skadeprogrammer. 2020 SolarWinds-angrepet er et eksempel på hackere som bruker forvirring for å unngå forsvar.
Deobfuscation teknikker kan brukes til å reversere – eller angre-obfuscation. Disse teknikkene inkluderer program slicing, som innebærer innsnevring programkoden til bare de relevante uttalelser på et bestemt punkt i programmet. Kompilatoroptimalisering og programsyntese er to andre deobfuscation teknikker. Obfuscation har som mål å gjøre reverse engineering vanskelig og ikke verdt bryet.
hvordan fungerer obfuscation?
Obfuscation i datakode bruker komplekse rundkjøringsfraser og overflødig logikk for å gjøre koden vanskelig for leseren å forstå. Målet er å distrahere leseren med den kompliserte syntaksen til det de leser og gjøre det vanskelig for dem å bestemme det sanne innholdet i meldingen.
med datakode kan leseren være en person, en datamaskin eller et annet program. Obfuscation brukes også til å lure antivirusverktøy og andre programmer som er avhengige av digitale signaturer for å tolke kode. Decompilers er tilgjengelige for språk Som Java, operativsystemer Som Android og iOS, og utviklingsplattformer som. NET. de kan automatisk reversere kildekoden; obfuscation har som mål å gjøre det vanskelig for disse programmene å gjøre deres dekompilering også.
kode obfuscation handler ikke om å endre innholdet i et programs opprinnelige kode, men heller om å gjøre leveringsmetoden og presentasjonen av den koden mer forvirrende. Obfuscation endrer ikke hvordan programmet fungerer eller slutten utgang.
det som følger er et eksempel på normal JavaScript-kode:
var greeting = 'Hello World';greeting = 10;var product = greeting * greeting;
Den samme kodebiten i uklar form ser slik ut:
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;
den obfuscated versjonen er nesten umulig å følge med det menneskelige øye.
Obfuscation teknikker
Obfuscation innebærer flere forskjellige metoder. Ofte brukes flere teknikker for å skape en lagdelt effekt.
Programmer skrevet i programvarespråk som er kompilert, for Eksempel C# Og Java, er lettere å forvirre. Dette skyldes at de lager instruksjoner på mellomnivå som generelt er enklere å lese. I Kontrast Er C++ vanskeligere å forvirre, fordi Den kompilerer til maskinkode, noe som er vanskeligere for folk å jobbe med.
noen vanlige obfuscation teknikker inkluderer følgende:
- Gi Nytt navn. Den obfuscator endrer metoder og navn på variabler. De nye navnene kan inneholde unprintable eller usynlige tegn.
- Pakking. Dette komprimerer hele programmet for å gjøre koden uleselig.
- Kontrollflyt. Den dekompilerte koden er laget for å se ut som spaghetti logic, som er ustrukturert og vanskelig å opprettholde kode der tankegangen er skjult. Resultatene fra denne koden er ikke klare, og det er vanskelig å fortelle hva poenget med koden er ved å se på det.
- Instruksjon mønster transformasjon. Denne tilnærmingen tar vanlige instruksjoner laget av kompilatoren og bytter dem for mer komplekse, mindre vanlige instruksjoner som effektivt gjør det samme.
- innsetting Av Dummy-kode. Dummy kode kan legges til et program for å gjøre det vanskeligere å lese og omvendt konstruere, men det påvirker ikke programmets logikk eller utfall.
- Metadata eller ubrukt kodefjerning. Ubrukt kode og metadata gir leseren ekstra informasjon om programmet, mye som merknader på Et Word-dokument, som kan hjelpe dem med å lese og feilsøke det. Fjerning av metadata og ubrukt kode etterlater leseren med mindre informasjon om programmet og dets kode.
- Ugjennomsiktig predikatinnsetting. Et predikat i kode er et logisk uttrykk som enten er sant eller falskt. Ugjennomsiktige predikater er betingede grener – eller hvis-da-setninger-der resultatene ikke lett kan bestemmes med statistisk analyse. Sette inn et ugjennomsiktig predikat introduserer unødvendig kode som aldri utføres, men er forvirrende for leseren som prøver å forstå dekompilert utgang.
- Anti-feilsøking. Legitime programvareingeniører og hackere bruker feilsøkingsverktøy for å undersøke kodelinje for linje. Med disse verktøyene kan programvareingeniører oppdage problemer med koden, og hackere kan bruke dem til å reversere koden. IT – sikkerhet proffene kan bruke anti-debug verktøy for å identifisere når en hacker kjører et feilsøkingsprogram som en del av et angrep. Hackere kan kjøre anti-feilsøkingsverktøy for å identifisere når et feilsøkingsverktøy brukes til å identifisere endringene de gjør i koden.
- anti-sabotasje. Disse verktøyene oppdager kode som har blitt manipulert, og hvis den er endret, stopper den programmet.
- strengkryptering. Denne metoden bruker kryptering for å skjule strengene i kjørbar og gjenoppretter bare verdiene når de trengs for å kjøre programmet. Dette gjør det vanskelig å gå gjennom et program og søke etter bestemte strenger.
- Kodetransponering. Dette er omorganisering av rutiner og grener i koden uten å ha en synlig effekt på dens oppførsel.
hvordan måle obfuscation suksess
suksessen til obfuscation metoder kan måles ved hjelp av følgende kriterier:
- Styrke. I hvilken grad transformert kode motstår automatiserte deobfuscation forsøk bestemmer styrke. Jo mer innsats, tid og ressurser det tar, desto sterkere er koden.
- Differensiering. I hvilken grad transformert kode er forskjellig fra originalen er et annet mål på hvor effektivt det er. Noen av måtene som brukes til å bedømme differensiering inkluderer:
- antall predikater den nye koden inneholder.
- dybden på arvetreet (DIT) – en beregning som brukes til å indikere kodens kompleksitet. En høyere DIT betyr et mer komplekst program.
- Utgifter. En kostnadseffektiv obfuscation metode vil være mer nyttig enn en som er dyrt, spesielt når det gjelder hvor godt det skaleres for større applikasjoner.
- Kompleksitet. Jo flere lag obfuscatoren legger til, desto mer komplisert blir programmet, noe som gjør forvirringen mer vellykket.
Fordeler med obfuscation
de viktigste fordelene med obfuscation er som følger:
- Hemmelighold. Obfuscation skjuler verdifull informasjon som finnes i koden. Dette er en fordel for legitime organisasjoner som ønsker å beskytte kode fra konkurrenter og angripere. Omvendt utnytter dårlige skuespillere hemmeligheten til forvirring for å skjule sin ondsinnede kode.
- Effektivitet. Noen obfuscation teknikker, som ubrukt kode fjerning, har effekten av å krympe programmet og gjør det mindre ressurskrevende å kjøre.
- Sikkerhet. Obfuscation er en innebygd sikkerhetsmetode, noen ganger referert til som selvbeskyttelse. I stedet for å bruke en ekstern sikkerhetsmetode, fungerer den innenfor det som blir beskyttet. Det er godt egnet for å beskytte programmer som kjører i et uklarert miljø og som inneholder sensitiv informasjon.
Ulemper med obfuscation
En av de største ulempene med obfuscation er det er også brukt i malware. Malware forfattere bruke den til å unngå antivirusprogrammer som skanner kode for bestemte funksjoner. Ved å skjule disse funksjonene, vises malware legitim til antivirusprogramvaren.
Vanlige teknikker malware forfattere bruker inkluderer:
- Eksklusiv eller (XOR). En operasjon som skjuler data ved å bruke xor-verdier til å kode slik at bare et trent øye vil kunne dekryptere det.
- ROT-13. En instruksjon som erstatter kode for tilfeldige tegn.
med obfuscation, i stedet for å utvikle ny malware, forfattere pakke brukte, råvare angrep metoder for å skjule sine funksjoner. I noen tilfeller inkluderer ondsinnede aktører leverandørspesifikke teknikker.
En annen ulempe med obfuscation er at det kan gjøre kode vanskeligere å lese. Kode som bruker string encryption obfuscation-metoden krever for eksempel dekryptering av strengene under kjøring, noe som reduserer ytelsen.
Tåkelegging Og SolarWinds
et angrep På SolarWinds, En Austin, Texas, IT ledelse og overvåking programvare maker, som antas å ha startet så langt tilbake som September 2019, resulterte i en rekke andre selskaper og offentlige etater blir brutt. Angrepet ble oppdaget i desember 2020 og tilskrives russiske hackere. Det kompromitterte I utgangspunktet SolarWinds ‘ ORION IT management plattform.
angriperne brukte sunburst malware, som kombinerte obfuscation, maskinlæring og AI teknikker for å plante en bakdør i programvareoppdateringer For Orion-plattformen. For å skjule sin innsats og omgå forsvar, de endret revisjonslogger, slettede filer og programmer etter bruk og forfalsket aktivitet for å gjøre det vises som legitime programmer på nettverket.
dette forsyningskjeden angrep er mistenkt for å ha vært uoppdaget i mer enn et år. Malware satt inn I Orion-koden lå sovende og skjult til brukerne lastet ned de infiserte oppdateringene. Det spredte seg da gjennom nettverket uoppdaget og smittet en lang liste over organisasjoner som brukte Orion.
Obfuscation er en av mange teknikker hackere benytter for å bryte INN I IT-systemer. Lær mer om å forsvare seg mot ulike typer cybersikkerhetsangrep i Techtargets grundige cybersikkerhetsplanleggingsguide.