Obrnuti inženjering
Predajte nam svoj softver i mi ga rastavljamo. Vašu SaaS, desktop ili mobilnu aplikaciju, binarnu datoteku, firmver uređaja, seciramo je kako bismo razumjeli kako zaista funkcionira, a zatim je natjeramo da učini ono za što nikada nije bila namijenjena: zaobiđemo zaštite, srušimo pretpostavke i otkrijemo što je skriveno unutra.
Jednostavnim riječima
Pogledajte svoj proizvod očima vještog napadača
Svaka aplikacija koju isporučite nosi sa sobom pretpostavke: da se klijentska strana ne može mijenjati, da se provjera licence ne može zaobići, da će tajna u kodu ostati tajna, da korisnik može učiniti isključivo ono što sučelje dopušta. Sposoban napadač ne prihvaća te pretpostavke, on rastavlja softver i testira svaku od njih. Obrnuti inženjering je način na koji mi radimo isto, namjerno i na vašoj strani, prije nego što to netko drugi učini protiv vas.
Riječ je o specijaliziranoj disciplini i pravoj diferencijaciji: većina sigurnosnih tvrtki staje kod mreže i web sučelja. Mi idemo dublje, u sam kompilirani kod. Ako vaše poslovanje ovisi o zaštiti intelektualnog vlasništva, provedbi licenciranja ili povjerenju u klijentsku aplikaciju ili povezani uređaj, ovo je način da saznate drži li se to povjerenje zaista.
Vrijedi jasno reći po čemu se ovo razlikuje od uobičajenog testiranja aplikacije. Web penetracijski test promatra vaš softver dok ga korisnik izvana ispituje. Obrnuti inženjering otvara kutiju: čitamo stvarni kompilirani kod, isti onaj koji se nalazi na telefonima i računalima vaših korisnika, i utvrđujemo što on zapravo radi, koje tajne nosi i koja se od njegovih pravila mogu tiho isključiti. Ako sigurnost vašeg proizvoda ovisi o ispravnom ponašanju klijentske strane, ovo je jedini način da saznate je li ta ovisnost sigurna.
Opseg i pokrivenost
Što rastavljamo
Web, SaaS i thick-client aplikacije
Ispitujemo dijelove vašeg proizvoda koji se izvršavaju na korisničkoj strani, gdje se često pogrešno pretpostavlja da se pravila poslužiteljske strane provode.
- Logika klijentske strane i skrivena funkcionalnost
- Zaobilaženje kontrola koje bi trebao provoditi poslužitelj
- Izložene krajnje točke, tajne i debug funkcionalnosti
- Neovlaštene izmjene zahtjeva, stanja i radnih procesa
Obrnuti inženjering mobilnih aplikacija
Android i iOS aplikacije isporučuju se izravno u ruke napadača. Raspakiravamo ih kako bismo vidjeli što otkrivaju i čemu vjeruju.
- Dekompilacija i statička analiza aplikacije
- Tvrdo kodirani ključevi, tokeni i API tajne
- Zaobilaženje certificate pinninga i root/jailbreak zaštite
- Instrumentacija u stvarnom vremenu i manipulacija prometom
Analiza binarnih datoteka i firmvera
Kompilirani softver i firmver uređaja, rastavljeni i razumljeni, uključujući dijelove koje ste možda naslijedili od trećih strana.
- Disasembliranje i dekompilacija nativnih binarnih datoteka
- Ekstrakcija i analiza firmvera
- Ranjivosti oštećenja memorije i logičke ranjivosti
- Nedokumentirane naredbe i backdoor pristupi
Zaobilaženje licenciranja, DRM-a i anti-tamper zaštite
Ako vaš prihod ovisi o provjeri koja se izvršava na tuđem uređaju, testiramo može li se ta provjera jednostavno ukloniti.
- Zaobilaženje provjere licence i aktivacije
- Zaobilaženje feature flagova i paywalla
- Pregled anti-tamper i zaštite integriteta
- Savjeti o zaštitama koje zaista usporavaju napadače
Analiza protokola i API-ja
Rastavljamo način na koji vaš softver komunicira, kako bismo utvrdili što izlaže i što će prihvatiti od zlonamjernog klijenta.
- Analiza prilagođenih i nedokumentiranih protokola
- Napadi ponavljanjem (replay), neovlaštenim izmjenama i lažiranim klijentom
- Skrivene ili privilegirane API operacije
- Curenje podataka tijekom prijenosa i u mirovanju
Zaobilaženje kontrola na klijentskoj strani
Srž posla: natjerati softver da učini upravo ono što ne bi smio, kako biste ispravili pogrešnu pretpostavku prije nego što je napadač iskoristi.
- Zaobilaženje ovlasti i uloga s klijentske strane
- Otključavanje ograničene ili skrivene funkcionalnosti
- Krivotvorenje pouzdanog stanja i identifikatora
- Pretvaranje nalaza u konkretne, prioritizirane popravke
Vrijednost
Što dobivate
Zaštita vašeg proizvoda i intelektualnog vlasništva
Saznajte drže li vaše licenciranje, klijentske kontrole i intelektualno vlasništvo doista protiv odlučnog, vještog napadača.
Uvid koji nijedan skener ne može pružiti
Automatizirani alati ne čitaju kompilirani kod onako kako to čini ljudski stručnjak za obrnuti inženjering. Riječ je o ručnom, stručnom radu koji pronalazi ono što drugi propuštaju.
Partner sa specifičnom sposobnošću
Duboko znanje obrnutog inženjeringa je rijetko. Imati ga na raspolaganju znači da teška pitanja o vašem softveru konačno dobivaju iskren odgovor.
Metodologija
Kako radimo
Opseg i ciljevi
Dogovaramo cilj, što za vas znači „probiti” ga, te pisano ovlaštenje za njegovu analizu i testiranje.
Statička analiza
Disasembliramo i dekompiliramo softver, mapirajući njegovu logiku, tajne, zaštite i granice povjerenja.
Dinamička analiza
Pokrećemo ga i instrumentiramo, kačeći se (hooking) na njega i manipulirajući njime u stvarnom vremenu kako bismo dokazali što se zaista može zaobići.
Izvješće i jačanje zaštite
Pokazujemo točno što smo probili, uz dokaze, i dajemo praktične smjernice kako bismo to sljedeći put znatno otežali.
Za tehničkog čitatelja
Pogled ispod haube
Kombiniramo statičku i dinamičku analizu. Statički, disasembliramo i dekompiliramo cilj kako bismo rekonstruirali njegovu logiku, pronašli tajne i razumjeli njegove zaštite. Dinamički, pokrećemo ga uz instrumentaciju, kačeći se na funkcije, presrećući promet i manipulirajući stanjem u stvarnom vremenu, tako da teorija o slabosti postane funkcionalno zaobilaženje koje možete sami vidjeti.
Obrnuti inženjering je važan jer velik dio sigurnosti tiho ovisi o ispravnom ponašanju klijentske strane. Provjera licence, ograničenje uloge, skrivena funkcionalnost, pinani certifikat: svaki od njih jak je onoliko koliko je jaka pretpostavka da se kod koji se izvršava na korisničkom uređaju ne može mijenjati. Tu pretpostavku testiramo izravno, a kada zakaže, ne samo da to dokazujemo, već savjetujemo o zaštitama, od provedbe na poslužiteljskoj strani do anti-tamper mjera, koje zaista podižu cijenu za sljedećeg napadača.
Svaki je angažman u potpunosti ovlašten i potpuno povjerljiv. Vaš izvorni kod, binarne datoteke i nalazi ostaju kod nas i tretiraju se kao osjetljivo intelektualno vlasništvo, što i jesu.
Tipičan angažman kreće se između dva načina rada. Statička analiza rekonstruira program bez njegovog pokretanja, kroz disasembliranje, dekompilaciju, ekstrakciju stringova i tajni, mapirajući logiku i njezine zaštite. Dinamička analiza zatim pokreće cilj pod debuggerom ili instrumentacijskim okvirom, kačeći se na funkcije, presrećući mrežne pozive i prepisujući vrijednosti u memoriji kako bi se dokazalo da se kontrola može zaobići u praksi, ne samo u teoriji. Ta dva pristupa nadopunjuju se: statička analiza govori nam gdje gurati, dinamička analiza potvrđuje što zaista popušta.
Isporuke
Što dobivate
Sažetak za rukovodstvo
Prikaz jednostavnim jezikom onoga što se moglo zaobići ili izvući, te što to znači za vaš proizvod i prihod.
Nalazi s dokazima
Svaka slabost demonstrirana funkcionalnim dokazom koncepta, tako da je učinak konkretan i neupitan.
Problemi ocijenjeni prema riziku
Svaki nalaz ocijenjen prema ozbiljnosti i potrebnom naporu, tako da znate koje pretpostavke prvo ojačati.
Smjernice za jačanje zaštite
Praktični savjeti o provedbi na poslužiteljskoj strani, obfuskaciji i anti-tamper mjerama koje zaista usporavaju stvarne napadače.
Tehnički pregled
Jasan prikaz načina na koji smo rastavili softver, koristan za vaše vlastite razvojne programere i buduće preglede.
Ponovno testiranje ključnih popravaka
Potvrda da zaštite koje ste dodali doista zatvaraju propuste koje smo pronašli.
Za koga je namijenjeno
Kada je obrnuti inženjering pravi izbor
Rijetka vještina, prava specijalizacija
Obrnuti inženjering je područje na kojem ofenzivna sigurnost postaje istinski zahtjevna, a većina tvrtki jednostavno je ne nudi. Ujedno je prirodan partner našem red team radu, gdje prilagođeno zaobilaženje vašeg vlastitog softvera može biti ključ koji otvara širi cilj.
Pitanja i odgovori
Obrnuti inženjering: pitanja i odgovori
Trebate li naš izvorni kod?
Ne. Radimo na temelju kompilirane aplikacije, binarne datoteke ili firmvera, dakle onoga što bi imao i napadač. Izvorni kod nije potreban, no ako odlučite podijeliti ga, to može ubrzati rad i produbiti pokrivenost.
Možete li zaista zaobići naše licenciranje ili zaštite?
Vrlo često, da, jer se mnoge zaštite u konačnici izvršavaju na korisničkom uređaju gdje ih je moguće izmijeniti. Precizno vam pokazujemo kako se kontrola može poraziti, uz funkcionalan dokaz koncepta, a zatim savjetujemo o mjerama na poslužiteljskoj strani i anti-tamper mjerama koje to znatno otežavaju.
Je li naš softver i intelektualno vlasništvo sigurno kod vas?
Da. Svaki je angažman u potpunosti ovlašten i potpuno povjerljiv, pokriven ugovorom o povjerljivosti (NDA). Vaše binarne datoteke, svaki izvorni kod koji podijelite i svi nalazi tretiraju se kao osjetljivo intelektualno vlasništvo, što i jesu, te nikada ne izlaze iz naše kontrole.
Kakav softver možete analizirati?
Web i SaaS sučelja, thick-client desktop aplikacije, Android i iOS mobilne aplikacije, nativne binarne datoteke i firmver uređaja. Ako izvršava kod, obično ga možemo rastaviti i reći vam gdje puca.
Po čemu se ovo razlikuje od uobičajenog penetracijskog testiranja?
Penetracijsko testiranje ispituje vaš softver izvana, onako kako bi to činio korisnik. Obrnuti inženjering ulazi u sam kompilirani kod kako bi porazio pretpostavke do kojih vanjski pogled ne može doprijeti, poput provjera licence, ograničenja na klijentskoj strani i skrivene funkcionalnosti.
Što dobivamo na kraju?
Jasno izvješće sa sažetkom za rukovodstvo, svakom slabošću demonstriranom dokazom koncepta, ocjenama rizika, praktičnim smjernicama za jačanje zaštite i ponovnim testiranjem kojim se potvrđuje da zaštite koje dodate doista zatvaraju propuste.

