Kodeforsløringsteknikker mod reverse engineering

  • Obfuskation omdanner kildekoden til en kompleks struktur for at gøre analysen vanskeligere uden at ændre softwarens funktionalitet.
  • Metoder spænder fra omdøbning af variable til brug af polymorfe og metamorfe motorer anvendes til at undgå detektion.
  • Selvom det er et vigtigt værktøj til at beskytte intellektuel ejendomsret, er det ikke ufejlbarligt og skal integreres i en strategi for dybdegående forsvar.

Kodeforsløringsteknikker mod reverse engineering

Forestil dig, at du har brugt måneder på at perfektionere en revolutionerende algoritme, men når du udgiver din applikation, kan enhver svindler med en gratis decompiler tage et kig og stjæle din hemmelighed. Det er her, kodeforvirring kommer ind i billedet , en praksis, der har udviklet sig i årtier for at gøre tingene vanskelige for alle, der forsøger at snuse ind i et programs indre funktioner. Det er ikke magi, men kunsten at omdanne klar, læsbar tekst til en sand logisk labyrint, der, selvom den er fuldt forståelig for en computer, ville drive et menneske til vanvid.

Tilbage i 80'erne og 90'erne, da C og assemblersprog var det afgørende, at disse teknikker blev brugt af behovet for at beskytte intellektuel ejendom . I dag, med den massive udrulning af web- og mobilapplikationer, er kampen konstant. Det er vigtigt at præcisere, at obfuskation ikke er kryptering; mens kryptering kræver en nøgle for at være nyttig, tillader obfuskation koden at fortsætte med at køre normalt, men gør det utroligt langsomt og dyrt for en angriber at forstå den.

Hvad består forvirring præcist af?

Det handler i bund og grund om at transformere kildekoden til en kryptisk version. Målet er at afskrække ondsindede aktører fra at søge sårbarheder eller kopiere funktionaliteter. I sikker udvikling anvendes dette, efter at fejl er blevet rettet gennem statisk analyse, hvilket tilføjer et ekstra lag af beskyttelse. Grundlæggende er målet at gøre den tid og indsats, der kræves til reverse engineering, så høj, at angriberen giver op.

Detaljerede metoder og teknikker til obfuskation

Der er mange måder at komplicere et program på, nogle enklere end andre, men alle med det samme mål: at forvirre analytikeren.

  • Omdøbning af identifikatorer: Det er selve essensen af ​​forvirring. Det består af at ændre beskrivende navne som calcularImpuesto() for meningsløse ting som a1_z9(). Dette gør det umuligt at udlede formålet af en variabel eller funktion ved første øjekast.
  • Omstrukturering af flow: Instruktionernes struktur ændres uden at ændre logikken. Flytning af kodeblokke eller ændring af rækkefølgen af ​​sætningerne forårsager Sekventiel læsning er kaos.
  • Død kodeindsprøjtning: Der tilføjes linjer, der absolut ingenting gør (redundante instruktioner), eller der tilføjes falsk kode, der leder analytikeren ned ad den forkerte vej. Det er ligesom at sætte fælder undervejs så angriberen spilder tiden.
  • Transformation af kontrolstrukturer: Ændre en if-else Klassisk udførelse med en kompleks ternær operator eller indbyggede strukturer skaber et flow i udførelsesprocessen. meget mindre forudsigelig.
  • Substitution af konstanter: I stedet for at bruge et direkte tal, som f.eks. 5, bruges et tilsvarende udtryk, f.eks. (100 / 20)Således forbliver den reelle værdi skjult bag en operation.
  • Datakryptering og kodning: Du kan skjule tekststrenge ved hjælp af Base64 eller XOR og kun fjerne obfuskeringen i det præcise øjeblik, de udføres, så de ikke vises i en statisk analyse.
  • Data- og metadatamanipulation: At omvende tegn i en streng eller fjerne al fejlfindingsinformation hjælper med at gøre koden mere læsbar. meget mere kryptisk når den dekompileres.
Hvad er en .dex-fil i Android?
Relateret artikel:
Hvad er en .dex-fil på Android? Fuld forklaring og eksempler

Dualiteten af ​​obfuskation: Forsvarere vs. Angribere

Det er ikke kun solskin og roser; obfuskation er et tveægget sværd. På den ene side bruger udviklere det til at forhindre piratkopiering og beskytte deres licenser. På den anden side bruger malware-udviklere det til at gøre deres vira usynlige for antivirussoftware. Det er her, mere avancerede koncepter kommer ind i billedet:

  • Polymorf malware: Dette ændrer sit udseende med hver ny infektion ved hjælp af variable krypteringsnøgler, hvilket gør det muligt der er ingen fast signatur som scannerne kan registrere.
  • Metamorfisk kode: Den går et skridt videre og omskriver sin egen interne struktur i hver generation, hvilket gør den hver instans er unik.
  • Filløse teknikker: Den skadelige kode køres direkte i RAM'en, undgår kontakt med harddisken og omgår dermed det meste af traditionelle sikkerhedskontroller.

Den unikke udfordring ved JavaScript og internettet

I webmiljøet er problemet, at koden kører på klienten, altså i brugerens browser. At delegere for meget kritisk logik til frontend'en er en alvorlig arkitektonisk fejl. Angribere kan bruge værktøjer som Chrome DevTools eller JSNice til at deobfuscere koden og finde fejl i datavalideringen. Derfor er den gyldne regel, at al kritisk validering skal ligge på serveren , og kun bruge obfuskering som et supplement for at gøre scripttyveri vanskeligere.

Hvad bruges Android Runtime-0 .art-filer til?
Relateret artikel:
Alt om Android Runtime .art-filer: hvad de er, hvad de bruges til, og de vigtigste forskelle mellem Dalvik og ODEX.

Professionelle værktøjer til sikring af kode

At gøre alt dette manuelt ville være vanvittigt, så der findes meget kraftfulde automatiserede værktøjer. Til Java- og Android-økosystemerne skiller ProGuard sig ud, mens Dotfuscator er meget almindeligt i .NET-verdenen . For dem, der arbejder med C eller C++, er LLVM Obfuscator det ideelle valg. Inden for Python har vi PyArmor , og til JavaScript tilbyder Jscrambler avancerede selvforsvars- og anti-debugging-funktioner.

Udviklingen og fremtiden for softwarebeskyttelse

Teknologien står ikke stille, og AI begynder at spille en afgørende rolle. Der tales allerede om AI-drevet obfuscation , hvor algoritmer lærer, hvilke dele af koden der er mest sårbare, og dynamisk anvender den mest effektive teknik. Uigennemsigtige prædikater (udtryk, hvis sandhed er kendt på kompileringstidspunktet, men er tvetydige for en angriber) og fortrolig databehandling, som muliggør behandling af krypterede data uden dekryptering, er også ved at dukke op. Der udvikles endda metoder til at modstå kvanteberegning , idet man foregriber processorkraften i fremtidige maskiner.

Sådan beskytter du dig mod ondsindet, forvirret kode

For sikkerhedsanalytikere kræver bekæmpelse af obfuskation et skift fra signaturbaseret detektion til adfærdsanalyse . Det er ikke, hvordan koden ser ud, der betyder noget, men hvad den gør. Implementering af en omfattende logføringsinfrastruktur, udførelse af hukommelsesforensik for at detektere injektioner og forlængelse af sandbox-analysetiden (ud over 30 minutter) er nøglestrategier til at opdage malware, der forsøger at gemme sig bag lag af kompleksitet.

Sådan dekompilerer du en Android-2-app
Relateret artikel:
Sådan dekompilerer du en Android-app: Avanceret guide, værktøjer og komplette trin

Tilføj som foretrukken kilde i Google