Skip to content

Archives

  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember

Categories

  • Nincs kategória
Trend RepositoryArticles and guides
Articles

Mi az Obfuscation?

On október 25, 2021 by admin
  • Mi a Code Obfuscation?
  • Miért használjon kódelhomályosítót?
  • Hogyan működik az elhomályosítás?
  • Rename Obfuscation
  • String titkosítás
  • Control Flow Obfuscation
  • Instrukcióminták átalakítása
  • Dummy kód beszúrása
  • Fel nem használt kód és metaadatok eltávolítása
  • Bináris összekapcsolás/összevonás
  • Opaque Predicate Insertion
  • Anti-Tamper
  • Anti-Debug
  • Tömbösítsem-e az alkalmazásomat?

Mi a Code Obfuscation?

A Code Obfuscation egy futtatható program olyan módosítása, amely a hacker számára már nem hasznos, de továbbra is teljesen működőképes. Bár a folyamat módosíthatja a tényleges módszerutasításokat vagy metaadatokat, a program kimenetét nem változtatja meg. Tisztázzuk, hogy elegendő idővel és erőfeszítéssel szinte minden kód visszafejthető. Egyes platformokon azonban, mint például a Java, az Android, az iOS vagy a .NET (pl. Xamarin, C#, VB.NET, F#) ingyenes dekompilátorok segítségével gyakorlatilag idő és erőfeszítés nélkül könnyedén visszafejthető a forráskód egy futtatható fájlból vagy könyvtárból. Az automatizált kódelhomályosítás megnehezíti és gazdaságilag kivitelezhetetlenné teszi a program visszafejtését.

Miért használjon kódelhomályosítót?

Az alkalmazás visszafejtésének megnehezítésével védelmet nyújthat az üzleti titok (szellemi tulajdon) ellopása, a jogosulatlan hozzáférés, a licencelés vagy más ellenőrzések megkerülése és a sebezhetőségek felfedezése ellen.

Hogyan működik az elhomályosítás?

A kódelhomályosítás számos különböző technikából áll, amelyek egymást kiegészítve többszintű védelmet hozhatnak létre. A leghatékonyabb olyan nyelvek esetében, amelyek valamilyen középszintű utasítást hoznak létre, mint például a Java vagy a .NET nyelvek, mint a C#, VB.NET, Managed C++, F# stb. Az obfuszkálási és alkalmazásbiztonsági technikák néhány tipikus példája:

Rename Obfuscation

Az átnevezés megváltoztatja a módszerek és változók nevét. A dekompilált forrást nehezebben érthetővé teszi az ember számára, de nem változtatja meg a program végrehajtását. Az új nevek különböző sémákat használhatnak, mint például “a”, “b”, “c”, vagy számokat, nyomtathatatlan karaktereket vagy láthatatlan karaktereket. A nevek pedig túlterhelhetők, amíg különböző hatókörrel rendelkeznek. A névtorzítás egy alapvető átalakítás, amelyet a legtöbb .NET (C# stb.), iOS, Java és Android obfuszkátor használ.

String titkosítás

A kezelt futtatható programban minden karakterlánc egyértelműen felfedezhető és olvasható. Még a metódusok és változók átnevezése esetén is a karakterláncok felhasználhatók a kritikus kódrészletek felkutatására a bináris programon belüli karakterlánc-hivatkozások keresésével. Ez magában foglalja a felhasználó számára megjelenő üzeneteket (különösen a hibaüzeneteket). Az ilyen típusú támadások elleni hatékony védekezés érdekében a karakterlánc-titkosítás elrejti a karakterláncokat a futtatható állományban, és csak szükség esetén állítja vissza eredeti értéküket. A karakterláncok futásidejű visszafejtése általában csekély futásidőbeli teljesítménycsökkenéssel jár.

Control Flow Obfuscation

A vezérlésfolyam-obfuscation olyan feltételes, elágazó és iteratív konstrukciókat szintetizál, amelyek érvényes futtatható logikát eredményeznek, de dekompiláláskor nem determinisztikus szemantikai eredményeket adnak. Egyszerűbben fogalmazva, a dekompilált kódot spagetti logikának tünteti fel, amit egy hacker számára nagyon nehéz megérteni. Ezek a technikák befolyásolhatják a módszer futásidejű teljesítményét.

Instrukcióminták átalakítása

A fordító által létrehozott gyakori utasítások átalakítása más, kevésbé nyilvánvaló konstrukciókká. Ezek teljesen legális gépi nyelvi utasítások, amelyek nem feltétlenül képeznek le tisztán olyan magas szintű nyelvekre, mint a Java vagy a C#. Egy példa erre a tranziens változók gyorsítótárazása, amely kihasználja a Java és a .NET futási rendszerek veremalapú jellegét.

Dummy kód beszúrása

Kód beszúrása a futtatható állományba, amely nem befolyásolja a program logikáját, de megtöri a dekompilátorokat, vagy sokkal nehezebbé teszi a visszafejtett kód elemzését.

Fel nem használt kód és metaadatok eltávolítása

A hibakeresési információk, a nem lényeges metaadatok és a használt kód eltávolítása az alkalmazásokból kisebbé teszi azokat, és csökkenti a támadó számára elérhető információkat. Ez az eljárás némileg javíthatja a futásidejű teljesítményt.

Bináris összekapcsolás/összevonás

Ez az átalakítás több bemeneti futtatható állományt/könyvtárat egy vagy több kimeneti bináris állományban egyesít. Az összekapcsolással kisebbé tehető az alkalmazás, különösen, ha átnevezéssel és metszéssel együtt használják, Egyszerűsítheti a telepítési forgatókönyveket, és csökkentheti a hackerek számára elérhető információkat.

Opaque Predicate Insertion

Elhomályosít olyan feltételes ágak hozzáadásával, amelyek mindig ismert eredményekre értékelődnek ki – olyan eredményekre, amelyeket statikus elemzéssel nem lehet könnyen meghatározni. Ez egy módja a potenciálisan hibás kód bevezetésének, amely valójában soha nem fog végrehajtásra kerülni, de zavaró a támadók számára, akik megpróbálják megérteni a dekompilált kimenetet.

Anti-Tamper

Az obfuszkátor képes az alkalmazás önvédelmét a kódba injektálni, hogy ellenőrizze, hogy az alkalmazást semmilyen módon nem manipulálták. Ha manipulációt észlel, leállíthatja az alkalmazást, korlátozhatja a funkcionalitást, véletlenszerű összeomlásokat idézhet elő (az összeomlás okának álcázása érdekében), vagy bármilyen más egyéni műveletet végezhet. Üzenetet is küldhet egy szolgáltatásnak, hogy részleteket közöljön az észlelt manipulációról.

Anti-Debug

Amikor egy hacker megpróbálja kalózkodni vagy hamisítani az alkalmazást, ellopni az adatokat, vagy megváltoztatni az infrastruktúra egy kritikus fontosságú szoftverének viselkedését, szinte biztosan azzal kezdi, hogy visszafejti az alkalmazást, és hibakeresővel lépked végig rajta. Egy obfuscator képes az alkalmazás önvédelmét olyan kód befecskendezésével beépíteni, amely érzékeli, ha a gyártott alkalmazás egy hibakeresőn belül hajtódik végre. Ha egy hibakeresőt használnak, az megrongálhatja az érzékeny adatokat (megvédve azokat a lopástól), véletlenszerű összeomlásokat idézhet elő (annak álcázására, hogy az összeomlás egy hibakeresési ellenőrzés eredménye), vagy bármilyen más egyéni műveletet végezhet. Ezenkívül üzenetet is küldhet egy szolgáltatásnak, hogy figyelmeztető jelzést adjon.

Tömbösítsem-e az alkalmazásomat?

Keményen fontolja meg az obfuszkáció és a futásidejű alkalmazás önvédelmének alkalmazását, ha olyan szoftvert ad ki, amely nem megbízható környezetben fut, és szellemi tulajdonnal rendelkezik, hozzáférést biztosít érzékeny adatokhoz, vagy korlátozott funkciókkal rendelkezik. Az obfuszkálás sokkal nehezebbé teszi a támadók számára a kód áttekintését és az alkalmazás elemzését. A hackerek számára is megnehezíti az alkalmazás hibakeresését és meghamisítását. A végső cél egy olyan védelmi réteg hozzáadása, amely diffizívvá teszi hasznos információk, például üzleti titkok (IP), hitelesítő adatok vagy biztonsági rések kinyerését vagy felfedezését az alkalmazásból. Emellett meg kell nehezítenie az alkalmazás logikájának módosítását vagy az alkalmazás rosszindulatú kóddal való átcsomagolását.

Vélemény, hozzászólás? Kilépés a válaszból

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Archívum

  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember

Meta

  • Bejelentkezés
  • Bejegyzések hírcsatorna
  • Hozzászólások hírcsatorna
  • WordPress Magyarország
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress