tilsløring
Hvad er tilsløring?
tilsløring betyder at gøre noget vanskeligt at forstå. Programmeringskode er ofte tilsløret for at beskytte intellektuel ejendom eller forretningshemmeligheder og for at forhindre en Angriber i at reverse engineering af et proprietært program.
kryptering af nogle eller hele et programs kode er en formørkelsesmetode. Andre tilgange inkluderer fjernelse af potentielt afslørende metadata, udskiftning af klasse-og variabelnavne med meningsløse etiketter og tilføjelse af ubrugt eller meningsløs kode til et applikationsskript. Et værktøj kaldet en obfuscator konverterer automatisk ligetil kildekode til et program, der fungerer på samme måde, men er sværere at læse og forstå.
desværre bruger ondsindede kodeforfattere også disse metoder til at forhindre, at deres angrebsmekanismer opdages af antimalvareværktøjer. Solvindangrebet i 2020 er et eksempel på hackere, der bruger tilsløring for at undgå forsvar.
Deobfuscation teknikker kan bruges til reverse engineering-eller fortryd-tilsløring. Disse teknikker inkluderer programskæring, hvilket indebærer indsnævring af programkoden til kun de relevante udsagn på et bestemt tidspunkt i programmet. Compiler optimering og program syntese er to andre deobfuscation teknikker. Formørkelse sigter mod at gøre reverse engineering vanskelig og ikke besværet værd.
Hvordan virker forvirring?
forvirring i computerkode bruger komplekse rundkørselssætninger og overflødig logik for at gøre koden vanskelig for læseren at forstå. Målet er at distrahere læseren med den komplicerede syntaks for det, de læser, og gøre det vanskeligt for dem at bestemme det sande indhold af meddelelsen.
med computerkode kan læseren være en person, en computerenhed eller et andet program. Forvirring bruges også til at narre antivirusværktøjer og andre programmer, der er stærkt afhængige af digitale signaturer for at fortolke kode. Decompilere er tilgængelige for sprog som Java, operativsystemer som Android og iOS, og udviklingsplatforme som .NET. de kan automatisk reverse engineering kildekode; tilsløring har til formål at gøre det vanskeligt for disse programmer til at gøre deres dekompilering samt.
kode tilsløring handler ikke om at ændre indholdet af et programs oprindelige kode, men snarere om at gøre leveringsmetode og præsentation af denne kode mere forvirrende. Forvirring ændrer ikke, hvordan programmet fungerer eller dets slutoutput.
hvad der følger er et eksempel uddrag af normal JavaScript-kode:
var greeting = 'Hello World';greeting = 10;var product = greeting * greeting;
det samme Uddrag i tilsløret form ser sådan ud:
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 tilslørede version er næsten umulig at følge ved hjælp af det menneskelige øje.
tilsløring teknikker
tilsløring involverer flere forskellige metoder. Ofte bruges flere teknikker til at skabe en lagdelt effekt.
programmer skrevet på programmeringssprog, der er kompileret, såsom C# og Java, er lettere at tilsløre. Dette skyldes, at de opretter instruktioner på mellemniveau, der generelt er lettere at læse. I modsætning hertil er C++ vanskeligere at tilsløre, fordi den kompilerer til maskinkode, hvilket er vanskeligere for folk at arbejde med.
nogle almindelige tilsløringsteknikker inkluderer følgende:
- omdøbning. Obfuscator ændrer metoder og navne på variabler. De nye navne kan indeholde ikke-udskrivbare eller usynlige tegn.
- pakning. Dette komprimerer hele programmet for at gøre koden ulæselig.
- Kontrolstrøm. Den dekompilerede kode er lavet til at ligne spaghetti logik, som er ustruktureret og svært at opretholde kode, hvor tankegangen er skjult. Resultater fra denne kode er ikke klare, og det er svært at fortælle, hvad kodens punkt er ved at se på det.
- instruktion mønster transformation. Denne tilgang tager almindelige instruktioner oprettet af kompilatoren og bytter dem til mere komplekse, mindre almindelige instruktioner, der effektivt gør det samme.
- indsættelse af Dummy-kode. Dummy kode kan føjes til et program for at gøre det sværere at læse og reverse engineering, men det påvirker ikke programmets logik eller resultat.
- Metadata eller fjernelse af ubrugt kode. Ubrugt kode og metadata giver læseren ekstra information om programmet, ligesom kommentarer på et orddokument, der kan hjælpe dem med at læse og debugge det. Fjernelse af metadata og ubrugt kode efterlader læseren med mindre information om programmet og dets kode.
- uigennemsigtig prædikatindsættelse. Et prædikat i kode er et logisk udtryk, der enten er sandt eller falsk. Uigennemsigtige prædikater er betingede grene – eller hvis-så-udsagn – hvor resultaterne ikke let kan bestemmes med statistisk analyse. Indsættelse af et uigennemsigtigt prædikat introducerer unødvendig kode, der aldrig udføres, men er forvirrende for læseren, der prøver at forstå den dekompilerede output.
- anti-debug. Legitime programmører og hackere bruger fejlfindingsværktøjer til at undersøge kode linje for linje. Med disse værktøjer kan programmører få øje på problemer med koden, og hackere kan bruge dem til at reverse engineering af koden. It-sikkerhedsprofessionelle kan bruge anti-debug-værktøjer til at identificere, hvornår en hacker kører et debug-program som en del af et angreb. Hackere kan køre anti-debug-værktøjer til at identificere, hvornår et debug-værktøj bruges til at identificere de ændringer, de foretager i koden.
- anti-manipulation. Disse værktøjer registrerer kode, der er blevet manipuleret med, og hvis den er blevet ændret, stopper den programmet.
- streng kryptering. Denne metode bruger kryptering til at skjule strengene i den eksekverbare og gendanner kun værdierne, når de er nødvendige for at køre programmet. Dette gør det vanskeligt at gennemgå et program og søge efter bestemte strenge.
- gennemførelse af kode. Dette er genbestilling af rutiner og grene i koden uden at have en synlig effekt på dens adfærd.
Sådan måles tilsløringssucces
succesen med tilsløringsmetoder kan måles ved hjælp af følgende kriterier:
- styrke. I hvilket omfang transformeret kode modstår automatiserede deobfuscation forsøg bestemmer styrke. Jo mere indsats, tid og ressourcer det tager, desto stærkere er koden.
- differentiering. I hvilken grad transformeret kode adskiller sig fra originalen er et andet mål for, hvor effektiv den er. Nogle af måderne, der bruges til at bedømme differentiering, inkluderer:
- antallet af prædikater, som den nye kode indeholder.
- dybden af arvetræet (DIT) – en metrik, der bruges til at angive kodens kompleksitet. En højere DIT betyder et mere komplekst program.
- udgifter. En omkostningseffektiv tilsløringsmetode vil være mere nyttig end en, der er dyr, især når det kommer til, hvor godt den skaleres til større applikationer.
- kompleksitet. Jo flere lag obfuscatoren tilføjer, jo mere komplekst vil programmet være, hvilket gør obfuscationen mere vellykket.
fordele ved tilsløring
de vigtigste fordele ved tilsløring er som følger:
- hemmeligholdelse. Tilsløring skjuler de værdifulde oplysninger, der er indeholdt i kode. Dette er en fordel for legitime organisationer, der ønsker at beskytte kode mod konkurrenter og angribere. Omvendt udnytter dårlige skuespillere hemmeligholdelsen af forvirring for at skjule deres ondsindede kode.
- effektivitet. Nogle tilsløringsteknikker, som fjernelse af ubrugt kode, har den virkning at krympe programmet og gøre det mindre ressourceintentivt at køre.
- sikkerhed. Formørkelse er en indbygget sikkerhed metode, undertiden benævnt ansøgning selvbeskyttelse. I stedet for at bruge en ekstern sikkerhedsmetode fungerer den inden for det, der beskyttes. Det er velegnet til at beskytte applikationer, der kører i et usikkert miljø, og som indeholder følsomme oplysninger.
ulemper ved formørkelse
en af de største ulemper ved formørkelse er, at den også bruges i ondsindet program. Skribenter bruger det til at undgå antivirusprogrammer, der scanner kode for specifikke funktioner. Ved at skjule disse funktioner, synes programmet legitimt for antivirusprogrammet.
almindelige teknikker:
- eksklusiv eller (R). En operation, der skjuler data ved at anvende KSOR værdier til kode, så kun et trænet øje ville være i stand til at dekryptere det.
- ROT-13. En instruktion, der erstatter kode for tilfældige tegn.
med tilsløring, i stedet for at udvikle nye ondsindede programmer, forfattere ompakning almindeligt anvendte, råvare angreb metoder til at skjule deres funktioner. I nogle tilfælde omfatter ondsindede aktører leverandørspecifikke teknikker.
en anden ulempe ved forvirring er, at det kan gøre kode vanskeligere at læse. For eksempel kræver kode, der bruger strengkrypteringsmetoden, dekryptering af strengene ved kørsel, hvilket bremser ydeevnen.
tilsløring og solvind
et angreb på solvind, en Austin, it-styrings-og overvågningsprogramproducent, som menes at have startet så langt tilbage som i September 2019, resulterede i, at en række andre virksomheder og regeringsorganer blev overtrådt. Angrebet blev opdaget i December 2020 og tilskrives russiske hackere. Det kompromitterede oprindeligt Solvindernes Orion IT management platform.
angriberne brugte Sunburst-ondsindet program, som kombinerede tilsløring, maskinlæring og AI-teknikker til at plante en bagdør i programopdateringer til Orion-platformen. For at skjule deres indsats og omgå forsvar ændrede de revisionslogger, slettede filer og programmer efter brug og forfalskede aktivitet for at få det til at fremstå som legitime applikationer på netværket.
dette forsyningskædeangreb mistænkes for at have været uopdaget i mere end et år. Programmet, der blev indsat i Orion-koden, lå i dvale og skjult, indtil brugerne hentede de inficerede opdateringer. Det spredte sig derefter gennem netværket uopdaget og inficerede en lang liste over organisationer, der brugte Orion.
tilsløring er en af mange teknikker hackere anvender til at bryde ind i IT-systemer. Lær mere om forsvar mod forskellige typer cybersikkerhedsangreb i TechTarget ‘ s dybdegående cybersikkerhedsplanlægningsvejledning.