zmatenost

co je to zmatenost?

Obfuskace znamená udělat něco obtížně pochopitelného. Programovací kód je často zamlžován, aby chránil duševní vlastnictví nebo obchodní tajemství a zabránil útočníkovi v reverzním inženýrství proprietárního softwarového programu.

šifrování některých nebo všech kódů programu je jednou z metod zmatení. Mezi další přístupy patří odstranění potenciálně odhalujících metadat, nahrazení názvů tříd a proměnných nesmyslnými štítky a přidání nepoužitého nebo bezvýznamného kódu do aplikačního skriptu. Nástroj nazvaný obfuscator automaticky převede přímý zdrojový kód na program, který funguje stejným způsobem, ale je obtížnější číst a rozumět.

bohužel autoři škodlivého kódu také používají tyto metody, aby zabránili detekci mechanismů útoku antimalwarovými nástroji. Útok SolarWinds 2020 je příkladem hackerů, kteří používají obfuskaci k vyhýbání se obraně.

Deobfuscation techniky mohou být použity k reverznímu inženýrství – nebo zpět-obfuscation. Tyto techniky zahrnují krájení programu, což zahrnuje zúžení programového kódu pouze na relevantní prohlášení v určitém bodě programu. Optimalizace kompilátoru a syntéza programu jsou dvě další deobfuskační techniky. Obfuskace si klade za cíl, aby reverzní inženýrství obtížné a nestojí za námahu.

jak obfuskace funguje?

Obfuskace v počítačovém kódu používá složité fráze kruhového objezdu a redundantní logiku, aby byl kód pro čtenáře obtížný pochopit. Cílem je rozptýlit čtenáře složitou syntaxí toho, co čtou, a ztěžovat jim určení skutečného obsahu zprávy.

s počítačovým kódem může být čtečkou osoba, výpočetní zařízení nebo jiný program. Obfuskace se také používá k oklamání antivirových nástrojů a dalších programů, které se při interpretaci kódu silně spoléhají na digitální podpisy. Dekompilátory jsou k dispozici pro jazyky, jako je Java, operační systémy, jako je Android a iOS, a vývojové platformy jako. NET. mohou automaticky zpětně analyzovat zdrojový kód; obfuskace si klade za cíl ztížit těmto programům také jejich dekompilaci.

Obfuskace kódu není o změně obsahu původního kódu programu, ale spíše o tom, že způsob doručení a prezentace tohoto kódu jsou matoucí. Obfuskace nemění způsob, jakým program funguje, ani jeho koncový výstup.

následuje příklad úryvku normálního kódu JavaScript:

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

stejný úryvek v zmatené podobě vypadá takto:

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;

zmatená verze je téměř nemožné sledovat pomocí lidského oka.

Obfuskační techniky

Obfuskace zahrnuje několik různých metod. K vytvoření vrstveného efektu se často používá více technik.

programy napsané v softwarových jazycích, které jsou kompilovány, jako je C# a Java, se snáze zamlžují. Je to proto, že vytvářejí pokyny střední úrovně, které jsou obecně čitelnější. Naproti tomu C++ je obtížnější zamlžit, protože se kompiluje do strojového kódu, se kterým je pro lidi obtížnější pracovat.

některé běžné techniky obfuskace zahrnují následující:

  • přejmenování. Obfuscator mění metody a názvy proměnných. Nová jména mohou obsahovat netisknutelné nebo neviditelné znaky.
  • balení. Tím se komprimuje celý program, aby byl kód nečitelný.
  • řízení toku. Dekompilovaný kód je vytvořen tak, aby vypadal jako špagetová logika, což je nestrukturovaný a těžko udržovatelný kód, kde je myšlenková linie zakrytá. Výsledky z tohoto kódu nejsou jasné a je těžké říci, jaký je smysl kódu, když se na něj podíváme.
  • transformace instrukčního vzoru. Tento přístup bere společné pokyny vytvořené kompilátorem a zaměňuje je za složitější, méně běžné pokyny, které účinně dělají totéž.
  • vložení fiktivního kódu. Dummy kód může být přidán do programu, aby bylo těžší číst a reverzní inženýr, ale to nemá vliv na logiku nebo výsledek programu.
  • Metadata nebo nepoužité odstranění kódu. Nepoužitý kód a metadata poskytují čtenáři další informace o programu, podobně jako anotace v dokumentu aplikace Word, které jim mohou pomoci číst a ladit. Odstranění metadat a nepoužívaného kódu ponechává čtenáři méně informací o programu a jeho kódu.
  • neprůhledné vložení predikátu. Predikát v kódu je logický výraz, který je buď pravdivý nebo nepravdivý. Neprůhledné predikáty jsou podmíněné větve-nebo If-then příkazy-kde výsledky nelze snadno určit statistickou analýzou. Vložení neprůhledného predikátu představuje zbytečný kód, který není nikdy proveden, ale je záhadný pro čtenáře, který se snaží pochopit dekompilovaný výstup.
  • Anti-debug. Legitimní softwaroví inženýři a hackeři používají ladicí nástroje ke zkoumání kódu řádek po řádku. Pomocí těchto nástrojů mohou softwaroví inženýři zjistit problémy s kódem a hackeři je mohou použít k zpětnému inženýrství kódu. Profesionálové v oblasti zabezpečení IT mohou pomocí nástrojů proti ladění identifikovat, kdy hacker v rámci útoku spouští ladicí program. Hackeři mohou spouštět nástroje proti ladění, aby zjistili, kdy se ladicí nástroj používá k identifikaci změn, které provádějí v kódu.
  • Anti-tamper. Tyto nástroje detekují kód, s nímž bylo manipulováno, a pokud byl upraven, program zastaví.
  • šifrování řetězců. Tato metoda používá šifrování ke skrytí řetězců ve spustitelném souboru a obnovuje hodnoty pouze tehdy, když jsou potřebné ke spuštění programu. To ztěžuje procházení programem a Hledání konkrétních řetězců.
  • transpozice kódu. Jedná se o přeskupení rutin a větví v kódu, aniž by to mělo viditelný vliv na jeho chování.

jak měřit úspěšnost obfuskace

úspěšnost obfuskačních metod lze měřit pomocí následujících kritérií:

  • síla. Rozsah, v jakém transformovaný kód odolává automatizovaným pokusům o deobfuskaci, určuje sílu. Čím více úsilí, času a zdrojů to vyžaduje, tím silnější je Kód.
  • diferenciace. Míra, do jaké se transformovaný kód liší od originálu, je dalším měřítkem toho, jak efektivní je. Některé ze způsobů používaných k posouzení diferenciace zahrnují:
    • počet predikátů, které nový kód obsahuje.
    • hloubka stromu dědičnosti (DIT) – metrika používaná k označení složitosti kódu. Vyšší DIT znamená složitější program.
  • náklady. Nákladově efektivní metoda obfuskace bude užitečnější než ta, která je drahá, zejména pokud jde o to, jak dobře se měří pro větší aplikace.
  • složitost. Čím více vrstev přidá obfuscator, tím složitější bude program, čímž bude obfuscation úspěšnější.

výhody obfuskace

hlavní výhody obfuskace jsou následující:

  • utajení. Obfuskace skrývá cenné informace obsažené v kódu. To je výhoda pro legitimní organizace, které chtějí chránit kód před konkurencí a útočníky. Naopak špatní herci vydělávají na utajení mlžení, aby skryli svůj škodlivý kód.
  • účinnost. Některé techniky obfuskace, jako je nepoužité odstranění kódu, mají za následek zmenšení programu a jeho méně náročné na zdroje.
  • bezpečnost. Obfuskace je vestavěná bezpečnostní metoda, někdy označovaná jako sebeochrana aplikace. Místo použití metody externího zabezpečení funguje v rámci toho, co je chráněno. Je vhodný pro ochranu aplikací, které běží v nedůvěryhodném prostředí a které obsahují citlivé informace.

nevýhody obfuskace

jednou z hlavních nevýhod obfuskace je, že se také používá v malwaru. Spisovatelé malwaru jej používají k vyhýbání se antivirovým programům, které skenují kód pro specifické funkce. Zakrytím těchto funkcí se malware jeví jako legitimní pro antivirový software.

mezi běžné techniky, které autoři malwaru používají, patří:

  • exkluzivní nebo (XOR). Operace, která skryje data použitím hodnot XOR na kód tak, aby je dešifrovalo pouze vyškolené oko.
  • hniloba-13. Instrukce, která nahrazuje kód náhodnými znaky.

s obfuskací namísto vývoje nového malwaru autoři přebalují běžně používané metody komoditního útoku, aby zamaskovali své rysy. V některých případech zahrnují škodlivé aktéry techniky specifické pro dodavatele.

další nevýhodou obfuskace je, že může ztěžovat čtení kódu. Například kód, který používá metodu obfuskace šifrování řetězců, vyžaduje dešifrování řetězců za běhu, což zpomaluje výkon.

Obfuskace a SolarWinds

útok na SolarWinds, výrobce softwaru pro správu a monitorování it v Austinu v Texasu, o kterém se předpokládá, že začal již v září 2019, vyústil v porušení řady dalších společností a vládních agentur. Útok byl objeven v prosinci 2020 a je připisován ruským hackerům. Zpočátku kompromitovala platformu pro správu IT společnosti SolarWinds Orion.

útočníci použili Malware Sunburst, který kombinoval obfuskaci, strojové učení a techniky AI, aby zasadil zadní vrátka do aktualizací softwaru pro platformu Orion. Aby zamaskovali své úsilí a obcházeli obranu, pozměnili protokoly auditu, smazané soubory a programy po použití a předstírali aktivitu, aby se v síti objevily jako legitimní aplikace.

je podezření, že tento útok dodavatelského řetězce zůstal nezjištěn déle než rok. Malware vložený do kódu Orion ležel spící a skrytý, dokud uživatelé nestáhli infikované aktualizace. Poté se nepozorovaně šířil sítí a infikoval dlouhý seznam organizací využívajících Orion.

Obfuskace je jednou z mnoha technik, které hackeři používají k proniknutí do IT systémů. Další informace o obraně proti různým typům útoků na kybernetickou bezpečnost naleznete v podrobném průvodci plánováním kybernetické bezpečnosti společnosti TechTarget.

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna.