16/02/2024
Frida: Et Essentielt Værktøj til Dynamisk Analyse af Android-applikationer
I en verden hvor mobilapplikationer bliver stadig mere komplekse og indeholder følsomme data, er sikkerhedstest afgørende. Penetrationstest af Android-applikationer kræver avancerede værktøjer, der kan give indsigt i appens interne funktioner under kørsel. Et af de mest kraftfulde og alsidige værktøjer til dette formål er Frida. Frida er et open-source dynamisk analyse-framework, der gør det muligt for sikkerhedsforskere og udviklere at injicere brugerdefinerede scripts ind i kørende processer. Dette giver en unik mulighed for at observere, manipulere og forstå applikationers adfærd i realtid.

Dette skriv vil dykke ned i, hvordan Frida kan anvendes til penetrationstest af Android-applikationer. Vi vil udforske dets kernekoncepter, installation, og hvordan man kan udnytte et bredt udvalg af tilgængelige scripts til at identificere sårbarheder. Uanset om du er nybegynder inden for mobil sikkerhed eller en erfaren penetrationstester, vil denne guide give dig den nødvendige viden til at komme i gang med Frida og forbedre dine sikkerhedstest-evner.
Hvad er Frida, og hvordan fungerer det?
Frida er i sin kerne et fleksibelt framework, der gør det muligt at injicere JavaScript-kode ind i native applikationer. Kernen af Frida er skrevet i C, men den interagerer typisk med dine scripts via JavaScript. Denne kombination giver en utrolig fleksibilitet, da JavaScript er let at arbejde med og giver hurtig udvikling. Frida muliggør en tovejskommunikation mellem din computer og den kørende proces på enheden, hvilket betyder, at du kan sende kommandoer til dine scripts og modtage data tilbage.
Frida kan køre i tre forskellige tilstande:
- Injected (Injektion): Dette er den mest almindelige metode, hvor Frida-serveren kører på enheden, og dine scripts injiceres ind i målprocessen.
- Embedded (Integreret): Her integreres Frida's Gadget (et delt bibliotek) direkte i applikationen, enten under udviklingen eller ved at modificere APK'en.
- Preloaded (Forudindlæst): Gadget kan også forudindlæses i processen, hvilket giver en lignende funktionalitet som injektion, men ofte med lidt mere kontrol over initialiseringen.
Når Frida injiceres i en proces, får dine JavaScript-scripts fuld adgang til hukommelsen, muligheden for at hooke (aflytte og modificere) funktioner samt kalde native funktioner. Dette er fundamentalt for at forstå og manipulere appens adfærd.
Installation af Frida
Før du kan begynde at bruge Frida til penetrationstest, skal det installeres på dit system. Installationen er typisk ligetil ved hjælp af pip, Python's pakkehåndtering:
pip3 install frida-tools Udover Frida-værktøjerne på din computer, skal du også have Frida-serveren kørende på din Android-enhed. Du kan downloade den seneste version af Frida-serveren fra Frida's GitHub-repository under "releases". Serveren skal typisk placeres i `/data/local/tmp` på enheden og gøres eksekverbar.
For at teste om din installation er korrekt, kan du køre følgende kommando i din terminal:
frida-ps -Uai Hvis alt er konfigureret korrekt, vil denne kommando vise en liste over alle installerede applikationer på din Android-enhed. Hvis du ønsker at køre Frida på en emuleret enhed eller via ADB, kan du bruge:
frida-ps -D <device_id> Frida Scripts til Android Penetrationstest
Et af de mest værdifulde aspekter ved Frida er det store økosystem af scripts, der er udviklet af fællesskabet. Disse scripts er designet til at automatisere og forenkle komplekse opgaver inden for mobil sikkerhedstest. En fremragende ressource til at finde disse scripts er GitHub-repository'et t0thkr1s/frida, som indeholder et bredt udvalg af scripts til Android-penetrationstest.

Nogle af de mest almindelige anvendelser af Frida-scripts inkluderer:
- Omgåelse af Certifikat-Pinning: Mange applikationer implementerer certifikat-pinning for at forhindre man-in-the-middle angreb. Frida kan bruges til at hooke de funktioner, der håndterer SSL/TLS-certifikater, og dermed omgå denne sikkerhedsforanstaltning. Dette er afgørende for at kunne inspicere HTTPS-trafik med værktøjer som Burp Suite.
- Hooking af Funktioner: Du kan hooke specifikke Java- eller native-funktioner i en applikation for at observere deres input og output, ændre deres adfærd eller kalde dem med egne parametre. Dette er uvurderligt for at forstå appens logik og finde sårbarheder.
- Dumping af Data: Frida-scripts kan bruges til at dumpe hukommelsesindhold, herunder krypterede data, nøgler eller konfigurationsfiler, der er gemt i hukommelsen.
- Omgåelse af Obfuskering: Nogle scripts kan hjælpe med at deobfuscere kode eller afkode data, der er blevet obfuskeret for at gøre reverse engineering sværere.
- Runtime Manipulering: Du kan ændre appens tilstand under kørsel, f.eks. ved at ændre værdier i hukommelsen eller aktivere skjulte funktioner.
Omgåelse af Certifikat-Pinning med Frida
Certifikat-pinning er en almindelig sikkerhedsforanstaltning, der forhindrer applikationer i at stole på vilkårlige root-certifikater. Dette gør det svært at inspicere netværkstrafikken. Frida tilbyder en elegant løsning på dette problem. Ved at injicere et script, der hooker relevante Java-metoder som `checkServerTrusted` eller `isChainValid`, kan du instruere appen til at acceptere alle certifikater. Dette giver dig mulighed for at bruge en proxy som Burp Suite til at analysere den krypterede kommunikation.
Et simpelt eksempel på et Frida-script til omgåelse af certifikat-pinning kunne se således ud:
Java.perform(function() { var TrustManager = Java.use('javax.net.ssl.X509TrustManager'); var BasicTrustManager = Java.extend(TrustManager, { checkClientTrusted: function (chain, authType) { console.log('checkClientTrusted called'); }, checkServerTrusted: function (chain, authType) { console.log('checkServerTrusted called'); }, getAcceptedIssuers: function () { console.log('getAcceptedIssuers called'); return []; } }); var sn = Java.use('android.net.SslError'); sn.$init(null, null, null, null); sn.getPrimaryError.implementation = function() { return 0; }; var OkHttpClient = Java.use('okhttp3.OkHttpClient$Builder'); OkHttpClient.sslSocketFactory.implementation = function(sf, sm) { var socketFactory = sf; var trustManager = sm; try { var sslContext = Java.use('javax.net.ssl.SSLContext').getInstance('TLS'); sslContext.init(null, Java.array('javax.net.ssl.TrustManager', [ BasicTrustManager.$new() ]), Java.use('java.security.SecureRandom').$new()); socketFactory = sslContext.getSocketFactory(); trustManager = Java.array('javax.net.ssl.TrustManager', [ BasicTrustManager.$new() ]); } catch (e) { console.error('[!] Error setting up custom trust manager: ' + e.message); } return this.sslSocketFactory(socketFactory, trustManager); }; }); Dette script erstatter standard TrustManager med en brugerdefineret, der accepterer alle certifikater. Det er vigtigt at bemærke, at API'er og implementeringer kan variere mellem Android-versioner og applikationer, så scripts kan kræve tilpasning.
FridaLab og Andre Læringsressourcer
For dem, der er nye inden for Frida, er FridaLab en fremragende og begyndervenlig ressource. FridaLab er et sæt af otte udfordringer designet til at øve dine Frida-færdigheder. De tidlige udfordringer er meget enkle, mens de senere bliver mere komplekse, hvilket giver en gradvis læringskurve. At arbejde sig igennem disse udfordringer er en fantastisk måde at opbygge en solid forståelse for Frida's muligheder.
Udover FridaLab findes der en række blogindlæg og vejledninger, der dækker specifikke anvendelser af Frida:
- Introduktion til Frida: Forstå de grundlæggende koncepter og hvordan man kommer i gang.
- Sniffing af HTTPS-trafik: Lær at inspicere krypteret trafik ved at omgå certifikat-pinning.
- Løsning af CTF-udfordringer: Mange Capture The Flag (CTF) konkurrencer har mobile udfordringer, der er designet til at blive løst med Frida, såsom dem fra NahamCon CTF, hpAndro, Cybergym og DEFCON Quals.
- Reverse Engineering: Brug Frida til at analysere native kode, dumpe data og forstå applikationers interne logik.
Sammenligning af Frida med Andre Værktøjer
Mens der findes andre værktøjer til dynamisk analyse af mobilapplikationer, skiller Frida sig ud på flere punkter:
| Værktøj | Primær Anvendelse | Styrker | Svagheder |
|---|---|---|---|
| Frida | Dynamisk analyse, hooking, runtime manipulering | Meget fleksibel, cross-platform, stort script-økosystem, JavaScript-baseret | Kræver viden om JavaScript, installation på enhed kan være udfordrende for begyndere |
| Xposed Framework | Modificering af Android-systemet og apps (kræver root) | Dyb integration med Android OS, mange moduler tilgængelige | Kræver root-adgang, ikke så fleksibel til ad-hoc analyse som Frida |
| Objection | Framework bygget oven på Frida, simplificerer mange opgaver | Bruger-venlig, mange prædefinerede kommandoer til almindelige opgaver | Abstraherer Frida, kan begrænse dybdegående tilpasning for avancerede brugere |
| MobSF (Mobile Security Framework) | Statisk og dynamisk analyse, malware analyse | Automatiseret, omfattende rapporter, god til hurtig scanning | Mindre fleksibel til specifikke, dybdegående manuelle tests end Frida |
Frida tilbyder en unik balance mellem kraft og fleksibilitet, hvilket gør det til et uundværligt værktøj for enhver, der arbejder seriøst med sikkerhedstest af Android-applikationer.
Ofte Stillede Spørgsmål (FAQ)
Kan Frida bruges på iOS?
Ja, Frida understøtter også iOS. Processen ligner den for Android, men kræver typisk en jailbroken enhed.

Kræver Frida root-adgang på Android?
Frida-serveren skal køre på enheden. Mens det ofte er nemmest at gøre med root-adgang, kan Frida også bruges på enheder uden root, især hvis du integrerer Frida's Gadget direkte i applikationen.
Er Frida lovligt at bruge?
Frida er et værktøj til sikkerhedstest og forskning. Det er afgørende, at du kun bruger Frida på applikationer, hvor du har eksplicit tilladelse til at udføre sikkerhedstest. Uautoriseret brug kan være ulovligt.
Hvor kan jeg finde flere Frida-scripts?
Udover det nævnte t0thkr1s/frida repository, findes der mange andre GitHub-repositories og blogs dedikeret til Frida-scripts. Søg på platforme som GitHub efter "Frida scripts" eller "Android Frida" for at finde flere ressourcer.
Konklusion
Frida er et uundværligt værktøj i arsenalet for enhver, der beskæftiger sig med sikkerhedstest af Android-applikationer. Dets evne til at injicere scripts i kørende processer, hooke funktioner og manipulere appens adfærd giver en dybdegående indsigt, der er svær at opnå med andre metoder. Fra omgåelse af certifikat-pinning til analyse af native kode, Frida åbner op for en verden af muligheder for at identificere og afhjælpe sikkerhedsrisici. Ved at udnytte tilgængelige scripts og læringsressourcer som FridaLab kan du hurtigt blive dygtig til at bruge Frida og dermed styrke sikkerheden af dine egne eller dine kunders mobilapplikationer.
Hvis du vil læse andre artikler, der ligner Frida: Dynamisk Analyse til Android Penetrationstest, kan du besøge kategorien Mobil.
