obfuscation

Vad är obfuscation?

Obfuscation betyder att göra något svårt att förstå. Programmeringskoden är ofta förvrängd för att skydda immateriella rättigheter eller affärshemligheter, och för att förhindra en angripare från reverse engineering ett proprietärt program.

kryptering av en del eller hela programmets kod är en obfuscation-metod. Andra tillvägagångssätt inkluderar att avlägsna potentiellt avslöjande metadata, ersätta klass-och variabelnamn med meningslösa etiketter och lägga till oanvänd eller meningslös kod i ett applikationsskript. Ett verktyg som kallas en obfuscator konverterar automatiskt enkel källkod till ett program som fungerar på samma sätt, men är svårare att läsa och förstå.

tyvärr använder skadliga kodförfattare också dessa metoder för att förhindra att deras attackmekanismer upptäcks av antimalware tools. SolarWinds-attacken 2020 är ett exempel på hackare som använder förvirring för att undvika försvar.

Deobfuscation tekniker kan användas för att dekonstruera-eller ångra-obfuscation. Dessa tekniker inkluderar programskivning, vilket innebär att programkoden minskas till bara relevanta uttalanden vid en viss punkt i programmet. Kompilatoroptimering och programsyntes är två andra deobfuscationstekniker. Obfuscation syftar till att göra omvänd teknik svår och inte värt besväret.

hur fungerar obfuscation?

Obfuscation i datorkod använder komplexa rondellfraser och överflödig logik för att göra koden svår för läsaren att förstå. Målet är att distrahera läsaren med den komplicerade syntaxen för vad de läser och göra det svårt för dem att bestämma meddelandets sanna innehåll.

med datorkod kan läsaren vara en person, en datorenhet eller ett annat program. Obfuscation används också för att lura antivirusverktyg och andra program som är starkt beroende av digitala signaturer för att tolka kod. Decompilers är tillgängliga för språk som Java, operativsystem som Android och iOS och utvecklingsplattformar som .NET. de kan automatiskt omvända källkod; obfuscation syftar till att göra det svårt för dessa program att göra deras dekompilering också.

Kodfördunstning handlar inte om att ändra innehållet i ett programs ursprungliga kod, utan snarare om att göra leveransmetoden och presentationen av den koden mer förvirrande. Obfuscation förändrar inte hur programmet fungerar eller dess slututgång.

det som följer är ett exempel på normal JavaScript-kod:

var greeting = 'Hello World';greeting = 10;var product = greeting * greeting;

samma Utdrag i obfuscated form ser ut så här:

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 versionen är nästan omöjlig att följa med det mänskliga ögat.

Obfuscation tekniker

Obfuscation involverar flera olika metoder. Ofta används flera tekniker för att skapa en skiktad effekt.

program skrivna på programspråk som sammanställs, till exempel C# och Java, är lättare att fördunkla. Detta beror på att de skapar instruktioner på mellannivå som i allmänhet är lättare att läsa. Däremot är C++ svårare att fördunkla, eftersom det kompilerar till maskinkod, vilket är svårare för människor att arbeta med.

några vanliga obfuscation tekniker inkluderar följande:

  • byta namn. Obfuscator ändrar metoder och namn på variabler. De nya namnen kan innehålla otryckliga eller osynliga tecken.
  • förpackning. Detta komprimerar hela programmet för att göra koden oläslig.
  • kontrollflöde. Den dekompilerade koden är gjord för att se ut som spaghettilogik, som är ostrukturerad och svår att behålla kod där tankelinjen är dold. Resultaten från den här koden är inte tydliga, och det är svårt att berätta vad kodens punkt är genom att titta på den.
  • instruktion mönster transformation. Detta tillvägagångssätt tar vanliga instruktioner som skapats av kompilatorn och byter dem mot mer komplexa, mindre vanliga instruktioner som effektivt gör samma sak.
  • Dummy kod insättning. Dummy kod kan läggas till ett program för att göra det svårare att läsa och bakåtkompilera, men det påverkar inte programmets logik eller resultat.
  • metadata eller oanvänd kod borttagning. Oanvänd kod och metadata ger läsaren extra information om programmet, ungefär som anteckningar på ett Word-dokument, som kan hjälpa dem att läsa och felsöka det. Om du tar bort metadata och oanvänd kod får läsaren mindre information om programmet och dess kod.
  • ogenomskinlig predikatinsättning. Ett predikat i kod är ett logiskt uttryck som är antingen sant eller falskt. Opaka predikat är villkorliga grenar-eller om-då uttalanden-där resultaten inte lätt kan bestämmas med statistisk analys. Att infoga ett ogenomskinligt predikat introducerar onödig kod som aldrig exekveras men är förbryllande för läsaren som försöker förstå den dekompilerade utmatningen.
  • Anti-debug. Legitima programvaruingenjörer och hackare använder felsökningsverktyg för att undersöka kod rad för rad. Med dessa verktyg kan programvaruingenjörer upptäcka problem med koden, och hackare kan använda dem för att omvända koden. It-säkerhetsproffs kan använda felsökningsverktyg för att identifiera när en hackare kör ett felsökningsprogram som en del av en attack. Hackare kan köra anti-debug-verktyg för att identifiera när ett felsökningsverktyg används för att identifiera de ändringar de gör i koden.
  • Anti-manipulering. Dessa verktyg upptäcker kod som har manipulerats, och om den har ändrats stoppar den Programmet.
  • Strängkryptering. Denna metod använder kryptering för att dölja strängarna i den körbara och återställer bara värdena när de behövs för att köra programmet. Detta gör det svårt att gå igenom ett program och söka efter vissa strängar.
  • kod införlivande. Detta är omarrangering av rutiner och grenar i koden utan att ha en synlig effekt på dess beteende.

hur man mäter obfuscation framgång

framgången med obfuscation metoder kan mätas med hjälp av följande kriterier:

  • styrka. I vilken utsträckning transformerad kod motstår automatiserade deobfuscation försök bestämmer styrka. Ju mer ansträngning, tid och resurser det tar desto starkare är koden.
  • differentiering. Graden till vilken transformerad kod skiljer sig från originalet är ett annat mått på hur effektiv den är. Några av de sätt som används för att bedöma differentiering inkluderar:
    • antalet predikat som den nya koden innehåller.
    • djupet av arvsträdet (DIT) – ett mått som används för att indikera kodens komplexitet. En högre DIT betyder ett mer komplext program.
  • kostnad. En kostnadseffektiv obfuscation-metod kommer att vara mer användbar än en som är dyr, särskilt när det gäller hur bra den skalar för större applikationer.
  • komplexitet. Ju fler lager obfuscator lägger till, desto mer komplext blir programmet, vilket gör obfuscationen mer framgångsrik.

fördelar med obfuscation

de främsta fördelarna med obfuscation är följande:

  • Sekretess. Obfuscation döljer den värdefulla informationen i koden. Detta är en fördel för legitima organisationer som vill skydda kod från konkurrenter och angripare. Omvänt utnyttjar dåliga aktörer hemligheten för förvirring för att dölja sin skadliga kod.
  • effektivitet. Vissa obfuscation tekniker, som oanvänd kod borttagning, har effekten av att krympa programmet och göra det mindre resurskrävande att köra.
  • säkerhet. Obfuscation är en inbyggd säkerhetsmetod, ibland kallad applikationens självskydd. Istället för att använda en extern säkerhetsmetod fungerar den inom det som skyddas. Den är väl lämpad för att skydda applikationer som körs i en otillförlitlig miljö och som innehåller känslig information.

nackdelar med obfuscation

en av de största nackdelarna med obfuscation är att den också används i skadlig kod. Malware författare använder den för att undvika antivirusprogram som skannar kod för specifika funktioner. Genom att dölja dessa funktioner verkar skadlig programvara legitim för antivirusprogrammet.

vanliga tekniker malware författare använder inkluderar:

  • exklusiv eller (XOR). En operation som döljer data genom att använda xor-värden för att koda så att endast ett tränat öga skulle kunna dekryptera det.
  • ROT-13. En instruktion som ersätter kod för slumpmässiga tecken.

med förvirring, istället för att utveckla nya skadliga program, författare ompaketera vanligen används, råvaru attack metoder för att dölja sina funktioner. I vissa fall inkluderar skadliga aktörer leverantörsspecifika tekniker.

en annan nackdel med förvirring är att det kan göra kod svårare att läsa. Till exempel kräver kod som använder strängkrypteringsfördunstningsmetoden dekryptering av strängarna vid körning, vilket saktar prestanda.

Obfuscation och SolarWinds

en attack mot SolarWinds, en Austin, Texas, IT management and monitoring Software maker, som tros ha börjat så långt tillbaka som September 2019, resulterade i att en mängd andra företag och myndigheter bryts. Attacken upptäcktes i December 2020 och tillskrivs ryska hackare. Det komprometterade initialt SolarWinds Orion IT-hanteringsplattform.

angriparna använde skadlig programvara från Sunburst, som kombinerade förvirring, maskininlärning och AI-tekniker för att plantera en bakdörr i programuppdateringar för Orion-plattformen. För att dölja sina ansträngningar och kringgå försvar ändrade de revisionsloggar, raderade filer och program efter användning och förfalskad aktivitet för att få det att visas som legitima applikationer i nätverket.

denna supply chain attack misstänks ha förblivit oupptäckt i mer än ett år. Skadlig programvara som sätts in i Orion-koden låg vilande och dold tills användare laddade ner de infekterade uppdateringarna. Det spred sig sedan genom nätverket oupptäckt och smittade en lång lista över organisationer som använder Orion.

Obfuscation är en av många tekniker som hackare använder för att bryta sig in i IT-system. Läs mer om att försvara sig mot olika typer av cybersäkerhetsattacker i Techtargets djupgående planeringsguide för cybersäkerhet.

Leave a Reply

Din e-postadress kommer inte publiceras.