29/10/2023
For mange entusiaster og udviklere repræsenterer en jailbroken iOS-enhed et vindue til en verden af muligheder, der strækker sig langt ud over Apples standardbegrænsninger. Det åbner døren for dybdegående tilpasning, automatisering af opgaver og adgang til systemfiler, som ellers er utilgængelige. Men med denne frihed følger også en række udfordringer, især når det kommer til at opnå og vedligeholde root-adgang for applikationer eller fejlfinding af forbindelsesproblemer. Denne artikel vil udforske de komplekse aspekter ved at køre root-apps på iOS og navigere i SSH-landskabet, herunder hvordan man håndterer rodadgangskoder.

Uanset om du forsøger at udvikle en app, der kræver systembrede privilegier, eller blot ønsker at fejlfinde en SSH-forbindelse, er forståelsen af disse mekanismer afgørende. Vi vil dykke ned i de tekniske detaljer bag adgangstilladelser, hvorfor selv tilsyneladende enkle operationer kan fejle, og hvordan du kan genoprette kontrol over din enhed, når SSH driller.
- Udfordringen med root-apps på iOS
- SSH og root-adgangskoder på jailbroken iOS
- Ofte Stillede Spørgsmål (FAQ)
- Hvad er en jailbreak, og hvorfor er det relevant for root-adgang?
- Kan jeg få root-adgang på en ikke-jailbroken iPhone?
- Hvorfor crasher min app, når den forsøger at skrive til /private/var/mobile/Library, selv efter jailbreak?
- Hvad er standard root-adgangskoden for jailbroken iOS-enheder?
- Hvad gør Filza File Manager, og hvorfor er den nyttig?
- Hvad er forskellen mellem OpenSSH og Dropbear?
- Konklusion
Udfordringen med root-apps på iOS
At udvikle applikationer til jailbroken iOS-enheder, der kræver root-privilegier, lyder måske ligetil, men virkeligheden er ofte mere nuanceret. Selvom en enhed er jailbroken, og du har tilsyneladende fuld kontrol, er iOS's sikkerhedsarkitektur dybt indlejret, og applikationer kører stadig inden for sandkasser, selvom disse sandkasser er svækket. Dette betyder, at selvom du har root-adgang på systemniveau, kan individuelle applikationer stadig være begrænset i deres evne til at interagere med bestemte dele af filsystemet, især systemkritiske mapper.
Forestil dig, at du udvikler en app ved navn 'CreateFile', der skal oprette en simpel tekstfil (eller .lua-fil) i mappen /private/var/mobile/Library. Under normale omstændigheder vil en sådan operation i en standard iOS-app øjeblikkeligt udløse en 'adgang nægtet'-undtagelse. Med en jailbreak forventer man måske, at dette problem forsvinder, men som erfaringen viser, er det ikke altid tilfældet.
Forsøg på at opnå root-adgang og hvorfor det fejler
Et almindeligt forsøg på at give en app root-privilegier involverer at manipulere applikationsbundtet og dets eksekverbare filer. Processen kan se sådan ud:
- Byg appen normalt.
- Opret en kopi af den eksekverbare fil inde i app-bundtet.
- Erstat indholdet af den originale eksekverbare fil med et shell-script, der lancerer den kopierede, 'rodfæstede' eksekverbare fil. Eksempelvis:
#!/bin/bash
dir=$(dirname "$0")
exec "${dir}"/CreateFile "$@" - Naviger til app-bundtet i terminalen.
- Kør
chmod 0775på den originale eksekverbare fil ogchmod 6775på den kopierede eksekverbare fil (6775inkluderer setuid-biten, der potentielt giver root-privilegier). - Kopiér app-bundtet til
/Applicationspå enheden og genstart SpringBoard.
Selvom denne metode kan få appen til at starte fra /Applications-mappen, oplever man ofte stadig nedbrud, så snart appen forsøger en skriveoperation til en beskyttet mappe. Fejlen er typisk en System.UnauthorizedAccessException: Access to the path "/private/var/mobile/Library/test.txt" is denied.
Hvorfor sker dette? Selvom chmod 6775 sætter setuid-biten, hvilket normalt ville give processen ejerens rettigheder (i dette tilfælde root), er iOS's sikkerhedsmodel mere kompleks end blot filtilladelser. Applikationer, der kører i /Applications, er stadig underlagt Apples sandkasse-begrænsninger, selv på en jailbroken enhed. For at en app virkelig kan bryde ud af sin sandkasse og få systembrede skriveprivilegier i beskyttede mapper, kræves der ofte mere end blot at sætte setuid-biten. Det kan kræve specifikke rettigheder (entitlements), der normalt kun tildeles systemdaemons, eller at appen kører som en tweak/daemon uden for den traditionelle app-sandkasse. En simpel app-pakke, selvom den er placeret i /Applications, er designet til at køre under en brugers (typisk mobile-brugerens) privilegier, og systemet forhindrer den stadig i at skrive til visse systemkritiske steder, medmindre den er korrekt signeret med de nødvendige rettigheder eller kører som en dybere systemproces.
Test har vist, at filoprettelse fungerer fint i appens egne sandkasse-mappe (f.eks. appens dokumentmappe), hvilket bekræfter, at problemet ikke er selve filoprettelsen, men derimod adgangstilladelserne til de specifikke stier. Dette understreger vigtigheden af at forstå sandkassemekanismen, selv i et jailbroken miljø.
SSH og root-adgangskoder på jailbroken iOS
For retsmedicinske analyser, udvikling og dybdegående fejlfinding er SSH (Secure Shell) et uundværligt værktøj på jailbroken iOS-enheder. Det giver lavniveau-adgang til enhedens filsystem og en kommandolinjegrænseflade, hvilket er afgørende for næsten ubegrænset kontrol over systemet. Dog kan SSH-forbindelser være kilden til frustrerende problemer, ofte relateret til manglende SSH-serverinstallation eller en ukendt root-adgangskode.
Mange moderne jailbreaks fjerner ikke kun iOS-restriktioner (f.eks. deaktivering af signaturverifikation, eskalering af privilegier eller omgåelse af sandkassen), men installerer også en OpenSSH- eller Dropbear-server med det samme. Hvis ikke, kan SSH installeres manuelt fra Cydia-arkivet (OpenSSH-pakken). Lad os se på almindelige SSH-relaterede problemer og deres løsninger.
Er SSH installeret og fungerer det?
Første skridt er at verificere, om SSH-serveren overhovedet er installeret og kører på din enhed. Der er flere måder at tjekke dette på:
1. Prøv at oprette forbindelse direkte:
Åbn din terminal på en computer og prøv at oprette forbindelse til enheden. Standard root-adgangskoden for jailbroken enheder er ofte "alpine".
ssh -p <PORT> root@<ip_adresse>Normalt lytter SSH på port 22. Dog bruger nogle jailbreaks (inklusive Meridian og checkra1n) port 44 i stedet. Efter at have indtastet kommandoen kan du forvente et af tre resultater:
| Resultat | Betydning | Løsning |
|---|---|---|
Connection successful | Du har shell-adgang på enheden. SSH fungerer. | Ingen handling nødvendig. |
Connection refused | SSH er sandsynligvis ikke installeret, eller enheden er ikke jailbroken. | Installer OpenSSH fra Cydia, eller jailbreak enheden. |
Permission denied, please try again. | SSH er installeret, men standardadgangskoden er ikke "alpine" (eller den er blevet ændret). | Nulstil root-adgangskoden (se nedenfor). |
2. Brug nmap-værktøjet til portscanning:
nmap kan scanne porte på målenheden og liste tjenester, der lytter på disse porte. Dette er en god måde at bekræfte, om SSH-serveren kører på en bestemt port.
nmap -p 1-100 <ip_adresse> (scanner porte 1 til 100)
nmap -p- <ip_adresse> (scanner alle porte)Hvis nmap viser, at port 22 (eller 44) er åben og lytter, ved du, at SSH-serveren er aktiv, selvom du stadig måtte have problemer med adgangskoden.
Ændring af root-adgangskoden
Når du har SSH-adgang, er det en god sikkerhedspraksis at ændre standard root-adgangskoden fra "alpine" til noget mere sikkert. Dette gøres nemt ved at logge ind via SSH og indtaste kommandoen passwd. Systemet vil bede dig om at indtaste den nye adgangskode to gange.
passwd
Changing password for root.
New password:
Retype new password:Vælg en stærk adgangskode, der er svær at gætte, for at beskytte din enhed mod uautoriseret adgang.

Nulstilling af root-adgangskoden
I nogle tilfælde kan root-adgangskoden være blevet ændret, og du kender ikke den nye. Uden den korrekte adgangskode kan du ikke bruge SSH. Heldigvis er der måder at nulstille root-adgangskoden tilbage til dens standardværdi ("alpine") på.
Metode 1: Brug af Filza File Manager
Filza File Manager er en populær filhåndtering til jailbroken iOS-enheder, der giver dig mulighed for at få adgang til hele filsystemet. Du kan downloade og installere den fra Cydia.
- Jailbreak din enhed og installer Filza File Manager fra Cydia.
- Åbn Filza og naviger til filen
/private/etc/master.passwd. - Rediger denne fil. Den indeholder hashes til alle adgangskoder for iOS-brugere.
- Find
root-posten. Den vil se ud som noget i stil med:root:XXXXXXXXXXXXXX:0:0::0:0:System Administrator:/var/root:/bin/sh(hvor XXXXXXX er den nuværende hashed adgangskode). - Ændr
root-posten til følgende værdi:root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/shDenne hash/smx7MYTQIi2Mkorresponderer med adgangskoden "alpine". - Gem ændringerne i Filza.
- Genstart din enhed eller SpringBoard. Adgangskoden for root-brugeren skal nu være "alpine".
Metode 2: Brug af Apple File Conduit "2" (AFC2)
Apple File Conduit "2" er en uofficiel udvidelse af Apples native AFC-tjeneste. Hvor den originale AFC kun kan få adgang til /var/mobile/Media/-mappen, giver AFC2 adgang til hele filsystemet fra din computer. Dette giver dig mulighed for at redigere systemfiler via en desktop-filhåndtering.
- Jailbreak din enhed og installer Apple File Conduit "2" fra Cydia (den er tilgængelig i BigBoss-arkivet).
- Efter installationen kan du forbinde din iOS-enhed til din computer og bruge et desktop-filhåndteringsværktøj som iFunBox (på Windows) eller en lignende filbrowser til macOS, der understøtter AFC2.
- Naviger til
/private/etc/master.passwdpå enheden via din desktop-filhåndtering. - Rediger filen som beskrevet i Metode 1, og erstat root-posten med den, der nulstiller adgangskoden til "alpine" (
root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/sh). - Gem filen og genstart din enhed eller SpringBoard.
Vigtig bemærkning: Du skal absolut have adgang til enheden for at installere disse pakker fra Cydia. Hvis iOS-enheden er låst, og du ikke kan komme forbi låseskærmen, vil du ikke kunne nulstille root-adgangskoden ved hjælp af disse metoder. I sådanne tilfælde kan mere avancerede retsmedicinske teknikker være nødvendige, som ligger uden for rammerne af denne artikel.
Ofte Stillede Spørgsmål (FAQ)
Hvad er en jailbreak, og hvorfor er det relevant for root-adgang?
En jailbreak er en proces, der fjerner softwarebegrænsninger på iOS-enheder, hvilket giver brugeren adgang til root-filsystemet. Dette er relevant for root-adgang, fordi det tillader installation af apps og tweaks uden for App Store, og giver et højere niveau af privilegier, der kan udnyttes til systemtilpasning og debugging, som ellers ville være umuligt.
Kan jeg få root-adgang på en ikke-jailbroken iPhone?
Nej, det er ikke muligt at få fuld root-adgang til filsystemet på en ikke-jailbroken iPhone. Apples sikkerhedsmodel er designet til at forhindre dette for at beskytte brugerdata og systemintegritet. Kun via en jailbreak kan disse begrænsninger omgås.
Hvorfor crasher min app, når den forsøger at skrive til /private/var/mobile/Library, selv efter jailbreak?
Selvom en enhed er jailbroken, kører apps stadig inden for en form for sandkasse. At placere en app i /Applications og sætte setuid-biten er ofte ikke nok til at overvinde de dybere sandkasse- og rettighedsbegrænsninger, der forhindrer apps i at skrive til kritiske systemmapper. For at opnå sådanne privilegier kræves der typisk specifikke rettigheder (entitlements) eller at appen kører som en systemtjeneste (daemon) eller tweak.
Hvad er standard root-adgangskoden for jailbroken iOS-enheder?
Standard root-adgangskoden for de fleste jailbroken iOS-enheder er "alpine". Det anbefales kraftigt at ændre denne adgangskode af sikkerhedsmæssige årsager, så snart du har opnået SSH-adgang.
Hvad gør Filza File Manager, og hvorfor er den nyttig?
Filza File Manager er en kraftfuld filhåndtering til jailbroken iOS-enheder, der giver dig mulighed for at gennemse, redigere, kopiere, flytte og slette filer og mapper over hele filsystemet, inklusive systemfiler, der normalt er skjult. Den er yderst nyttig til fejlfinding, tilpasning og til at nulstille root-adgangskoder som beskrevet i denne artikel.
Hvad er forskellen mellem OpenSSH og Dropbear?
Både OpenSSH og Dropbear er SSH-serverimplementeringer. OpenSSH er den mest udbredte og funktionsrige, ofte brugt på større systemer. Dropbear er en lettere, mindre ressourcekrævende SSH-server, der er ideel til indlejrede systemer som iOS-enheder. Begge tjener det samme formål: at muliggøre sikre shell-forbindelser.
Konklusion
At navigere i verden af root-apps og SSH på jailbroken iOS-enheder kræver en dyb forståelse af Apples sikkerhedsarkitektur, selv når den er kompromitteret. Som vi har set, er det ikke altid nok at sætte en app i /Applications og tildele den setuid-privilegier for at omgå alle sandkassebegrænsninger. Systemet har stadig indbyggede forsvarsmekanismer, der forhindrer uautoriseret adgang til kritiske systemstier, selv for en "root-app".
På den anden side er SSH et uvurderligt værktøj for at opnå lavniveau-adgang, men det kræver korrekt opsætning og fejlfinding, især når det kommer til adgangskoder. Ved at følge de trin, der er beskrevet for at verificere SSH-installation og nulstille root-adgangskoder, kan brugere og udviklere genvinde kontrol over deres enheder. Husk altid at prioritere sikkerhed ved at ændre standardadgangskoder og være opmærksom på de begrænsninger, der stadig eksisterer, selv i et jailbroken miljø. Den viden, du har opnået her, vil give dig et solidt fundament for yderligere udforskning og udvikling på dine iOS-enheder.
Hvis du vil læse andre artikler, der ligner Root-adgang på iOS: Apps, SSH & Sikkerhed, kan du besøge kategorien Mobil.
