+ All Categories
Home > Technology > Softwarove protektory / KAREL LEJSKA, MILAN BARTOŠ [DEFENDIO]

Softwarove protektory / KAREL LEJSKA, MILAN BARTOŠ [DEFENDIO]

Date post: 11-Apr-2017
Category:
Upload: security-session
View: 228 times
Download: 1 times
Share this document with a friend
29
Softwarové protektory Dvojsečná zbraň zabezpečení kódu Karel Lejska, Milan Bartoš
Transcript

Softwarové protektoryDvojsečná zbraň zabezpečení kódu

Karel Lejska, Milan Bartoš

Co můžeme ochránit?● Technický prostředek chránící například:● omezení redistribuce● dodržení zkušební lhůty zdarma● omezení funkcionality aplikace po uplynutí zkušební lhůty● ochrana kódu hry proti cheaterům

Jiné způsoby● Copyright

– Jedna z netechnických možností ochrany– V praxi nevynutitelný – morálka

● Software jako služba– kód je na serveru

● Free to play– nejdřív hraj, potom plať (nákupy v aplikaci)

● Reklama v aplikaci– cílená na uživatele

Motivace● Kvůli pirátství unikají peníze

– hausnumero: $63 miliard v roce 2014– 2 z 5 kopií jsou pirátské

● Ochrana know-how (algoritmy, kód)● Ochrana důvěryhodnosti● Studium protektorů ukazuje rovněž techniky používané i malwarem● Copy protection je prý nesmysl

Životnost protekce● Životní cyklus klientského SW je krátký● Např. mobilní hry 3-4 měsíce● Největší prodeje těsně po vydání nové verze SW● Za úspěch se považuje, pokud protekce vydrží několik měsíců

Dvojsečnost● Prodražení deploymentu a supportu● Zneužívání malwarem● Antiviry mají problém s protektory a packery

Software Taggant System● Umožňuje protektoru podepsat ochráněný program● Standard IEEE z roku 2011● IEEE v systému funguje jako root of trust, uznávající producenty protektorů● Antiviry díky podpisu rozeznají, že jde o "program ze známého zdroje"

Taggant vs. Authenticode● Authenticode: ověření vydavatele softwaru a neporušenost souboru● Navzájem se nevylučují● Taggant hash by měl být rychlejší● Taggant system je určený producentům protektorů, samotní uživatelé protektorů to nemusí řešit

Intel Tamper Protection● Toolkit● Má chránit "kritický kód a hodnotná data" před reverzováním a manipulací● Windows a Android binárky (.DLL a .SO soubory)● Obfuskátor umožňuje silnou obfuskaci: techniky sebemodifikujícího a zašifrovaného kódu

Protektory pro Windows● Tradiční: packer (kompresor) s přidanou funkcionalitou● S použitím VM● S aktivními prvky● Bez aktivních prvků

Rozšířená funkcionalita● API: např. ověření, že protekce nebyla odstraněna● Integrace licenčního manageru (DRM)● Kontejner obsahující soubory aplikace● HW dongle● Kontrola integrity

Metody● Obrana proti disassemblingu a dekompilaci:

– obfuskace, transformace do vlastního bytekódu, šifrování, komprese kódu● Detekce debuggeru (dynamická analýza)● Detekce virtualizovaného OS a emulátoru● Šifrování datových sekcí a resources● Skrytí importů● Přesun kódu aplikace (do loaderu či jinam)

Tradiční protektory● Transformují originální soubor a obalují ho● Protektorem přidaný kód („loader”) postupně dešifruje originální kód a spouští ho● ASProtect● DotFix NiceProtect● Enigma Protector

S použitím VM● Převede původní kód do vlastního bytekódu, kterému rozumí jenom přidaný virtuální stroj● Začíná být běžnou součástí všech protektorů● Zpomalení kódu ve virtualizační vrstvě● VMProtect● Denuvo

VMProtect

Nativní kód Transformovaný bytekód

CPU

Tenký virtuální stroj - interpreter

CPU

S aktivními prvky● S instalací ochráněné aplikace dojde k nainstalování systémového driveru● StarForce: nechvalně se proslavil jako aktivní ochrana pro hry: systém driverů kontrolujících čtení a zápis na disk na nejnižší úrovni vedl k poškození dat

Bez aktivních prvků● Pasivní ochrana:● Staví hradbu s různorodými obrannými mechanismy, nepoužívá „zvědy v terénu”

Android Java aplikace● Dá se snadno získat přímo ze zařízení● Soubor <apk>/classes.dex● DEX dekompilery (JEB, JADX), ● .dex → .class a pak Java dekompilery● Java (DEX) bytecode se dá jednoduše dekompilovat do původní podoby – do zdrojového kódu● Menšina aplikací také v C/C++ a C#

Android C/C++ aplikace● Standardní JNI – nativní kód se natahuje jako shared library● Jde vytvořit i čistě nativní app (android:hasCode="false")● Soubory <apk>/lib/lib*.so● Disassembling, dekompilace:

tradiční nástroje pro nativní kód jako objdump, IDA, gdb

Android C# aplikace● Mono runtime (Xamarin) jako knihovna

<apk>/lib/<jméno>.so● CLI (ECMA-335) standard● Opět jednoduše dekompilovatelný bytecode● Dekompilace: bězné CLI dekompilery:● dotPeek, ILSpy, dnSpy, ...

Android App Encryption● Google● Android 4.1 (Jelly Bean, vydán 2012)● Ochrana proti kopírování: placená aplikace se nainstaluje jenom na konkrétní zařízení● Během instalace dojde k dešifrování APK a jeho instalaci do /mnt/asec/ ("encrypted container")

Android App Encryption● Systém se ale pokoušel některé aplikace (např. služby) spouštět dřív, než došlo k mountnutí /mnt/asec/● Reakce: nejdřív Google Play app "dočasně" vypnula instalace do /mnt/asec/● Celá technologie potichu skončila

Protektory pro Android● Vesměs pasivní● DexGuard (vymakaná verze ProGuard z Android SDK)● Arxan● DexProtector● SecNeo (Bangcle)

Metody● Java obfuskátory:● Obfuskace kódu● Reflection namísto přímého volání metod● Dynamické načítání „schovaných” tříd● Přejmenování názvů tříd, metod a proměnných● Odstraňování debug info● Šifrování řetězců

Specificky pro Android● Obfuskace AndroidManifest● Testování „rootnutého” zařízení● Testování běhu na emulátoru● Certificate pinning – podepisovací certifikát apk

Zvláštní pozornost● DexProtector

– umožňuje chránit i nativní kód– skrývá kód jeho přesunutím z classes.dex do jiného souboru

● SecNeo (Bangcle)– původní kód schovává do nativních knihoven libsecexe a libsecmain

Závěr● Existuje poptávka po SW protektorech● Nezanedbatelné množství Windows aplikací nějakou ochranu používá● Android aplikace se dají snadno cracknout● Jenom minimum Android aplikací používá ochranu

[email protected]@defendio.net

defendio.netbytor.barebit.com

Pozvánka● Workshop v 13:00● Link na stažení materiálů na

security-session.cz


Recommended