Toegang tot de systeemshell krijgen op elk Samsung Galaxy-apparaat

Snelle koppelingen

  • Vereisten
  • Hoe u een Samsung Galaxy-apparaat kunt exploiteren om toegang tot de systeemshell te krijgen
  • Verificatie
  • Conclusie

Elke eerste maandag van de maand publiceert Google de Android-beveiligingsbulletin. Het onthult alle beperkte beveiligingsproblemen in verschillende componenten van het Android-besturingssysteem evenals de Linux-kernel en hun patches die door Google zelf of andere derde partijen daarbij zijn ingediend datum. Grote OEM's zoals Samsung hebben hun eigen kijk op Android, dus kiezen ze ervoor om hun eigen patches en updates ook in beveiligingsupdates te verwerken.

Dat gezegd hebbende, is het behoorlijk moeilijk om voor elke maas in de wet te zorgen. Er bestaat een overvloed aan aanvalsvectoren, en soms kun je op basis daarvan je eigen exploitketen samenstellen een eerder bekende kwetsbaarheid alleen maar omdat u een nieuwe methode heeft om een ​​van de kwetsbaarheden te omzeilen waarborgen. Dit is precies wat XDA Senior Member K0mraid3 deed dat met een vier jaar oude kwetsbaarheid, waardoor hij systeemshell-toegang kon krijgen op elk Samsung Galaxy-apparaat – inclusief de nieuwste vlaggenschipapparaten – die er zijn. Terwijl het niet hetzelfde is als

rootrechten hebben, het is een voldoende hoge escalatie van lokale privileges.

Het primaire toegangspunt van het beveiligingslek ligt in Samsung Text-To-Speech (pakketnaam: com.samsung. SMT), een vooraf geladen systeemapp die op elk Samsung Galaxy-apparaat te vinden is. Het idee is om de geïnstalleerde versie van de app te downgraden naar een specifieke kwetsbare build (v3.0.02.2 om precies te zijn), en dwing het vervolgens om een ​​bibliotheek te laden, die op zijn beurt een shell opent met systeemrechten (UID 1000).

Als je meer wilt weten over de exploit, ga dan zeker eens kijken XDA hoofd technisch redacteur Adam Conway's uitlegger. Hij sprak met K0mraid3 om de volledige reikwijdte van deze exploit te begrijpen en hoe deze werkt.

  1. Nogmaals: dit is geen root-toegang (UID 0), maar de systeemshell-toegang is krachtig genoeg om een ​​aantal anderszins beperkte binaire bestanden uit te voeren.
  2. Voor het proof of concept van K0mraid3 is een helper-APK vereist, en je moet deze minstens één keer uitvoeren voordat je de exploit-keten start.
  3. Eén gebruikersinterface, dat wil zeggen de ingebouwde energiebesparende routines van de aangepaste Android-skin van Samsung, kan lastig zijn, omdat ze de communicatie tussen de TTS-app, de helper-APK en de shell kunnen belemmeren. We raden daarom aan om vooraf het energiebesparende profiel voor de apps in te stellen op 'Onbeperkt'.

Vereisten

  1. Download de vooraf gecompileerde versie van de exploit van de XDA-forumthread of de officiële GitHub-repository hieronder gelinkt: K0mraid3s systeemshell-exploit
  2. Pak het archief ergens uit en je zou de kwetsbare versie van de Samsung Text-To-Speech APK moeten vinden (samsungTTSVULN2.apk), de helper-app (Komraid3s_POC_Vx.x.apk) en een Windows-uitvoerbaar bestand met de naam systemshell-vx.x.exe.
  3. Zorg ervoor dat de nieuwste versie van ADB is geïnstalleerd op uw pc/Mac/Chromebook. Vergeet ook niet om installeer/update de Samsung USB-stuurprogramma's als u een Windows-gebruiker bent.

Hoe u een Samsung Galaxy-apparaat kunt exploiteren om toegang tot de systeemshell te krijgen

Handmatige methode

  1. Sluit het doel-Galaxy-apparaat aan op uw pc terwijl USB-foutopsporing is ingeschakeld, zorg ervoor dat het detecteerbaar is door ADB en installeer vervolgens de helper-app.
    adb install Komraid3s_POC_Vx.x.apk
    • Zoals eerder vermeld, open de helper-app minstens één keer voordat u doorgaat naar de volgende stap.
  2. Duw nu de kwetsbare versie van de Samsung TTS-app naar /data/local/tmp en wijzig de rechten:
    adb push samsungTTSVULN2.apk /data/local/tmp
    adb shell chmod 777 /data/local/tmp/samsungTTSVULN2.apk
  3. Start het apparaat opnieuw op. Zodra je op het startscherm bent, voer je de volgende opdracht uit om de reeds geïnstalleerde versie van de Samsung TTS-app te vervangen door de kwetsbare versie:
    adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk
    • Als alles goed gaat, zou je een bericht "Succes" op de console moeten zien.
  4. Open een shell op het doelapparaat door een ander terminalvenster te openen en uit te voeren adb-schaal, voer vervolgens het binaire bestand Netcat uit en luister naar een inkomende verbinding op poort 9997 met de volgende opdracht:
    adb shell nc -lp 9997
  5. In dit stadium moeten we een specifieke activiteit van de Samsung TTS-app uitvoeren, die de systeemshell voor ons zal openen.
    • Gebruik een app van derden, zoals dit om een ​​snelkoppeling te maken naar het bestand “com.samsung. SMT/.gui. DownloadLijst”-activiteit.
    • Je kunt ook de eigen activiteitenmanager van Android (am) gebruiken om hetzelfde te doen. In dat geval kunt u het uitvoeren via ADB (adb shell am start -n com.samsung. SMT/.gui. DownloadList) of gebruik een terminalemulator-app op uw telefoon/tablet zoals Termux en voer de volgende opdracht uit:
      am start -n com.samsung.SMT/.gui.DownloadList
  6. Schakel terug naar de eerste shell en u zou een nieuwe prompt met systeemrechten (UID 1000) moeten zien.

Geautomatiseerde methode

Om het u gemakkelijker te maken, biedt K0mraid3 ook een eenvoudig te gebruiken GUI-applicatie om de meeste taken te automatiseren. Houd er rekening mee dat de GUI-app alleen voor Windows beschikbaar is, dus als je een Linux/macOS-gebruiker bent, is het beter om de handmatige methode te volgen.

  1. Sluit het doel-Galaxy-apparaat aan op uw pc terwijl USB-foutopsporing is ingeschakeld, zorg ervoor dat het kan worden ontdekt door ADB en installeer vervolgens de helper-app.
    adb install Komraid3s_POC_Vx.x.apk
    • Zoals eerder vermeld, open de helper-app minstens één keer voordat u doorgaat naar de volgende stap.
  2. Zorg ervoor dat het doelapparaat kan worden gevonden door ADB en voer systemshell-vx.x.exe uit op de host-pc.
  3. Klik op de knop “START SHELL”. De app downgradet automatisch de Samsung TTS-app en probeert de systeemshell te openen.
    • Op uw telefoon/tablet ziet u mogelijk dat de TTS-app u vraagt ​​bepaalde spraakgegevens te downloaden. Het is niet nodig om met deze opties te communiceren, omdat ze niets met de exploit te maken hebben.
    • Als de app na enige tijd blijft hangen of het shell-venster niet kan openen, sluit u deze, start u het doel-Galaxy-apparaat opnieuw op en begint u opnieuw.
    • De Galaxy Store-app kan het energiebesparende profiel van de TTS-app op de achtergrond automatisch bijwerken en/of resetten, dus zorg ervoor dat u dit controleert voordat u het proces helemaal opnieuw begint.

Verificatie

Zodra u shell-toegang heeft, kunt u het privilegeniveau verifiëren met een van de onderstaande opdrachten:

  • whoami
    • De uitvoer moet "systeem" zijn
  • id -u
    • De uitvoer moet "1000" zijn

Conclusie

De gebruikelijke manier om root-toegang op een Android-apparaat te verkrijgen, is door eerst de bootloader te ontgrendelen, waarmee u binaire bestanden van derden kunt opstarten. Omdat het beveiligingsmodel van Android feitelijk uit elkaar valt met root, schakelt deze stap opzettelijk een van de belangrijkste beveiligingsfuncties op het apparaat uit, die is de reden waarom de gebruiker dit expliciet moet toestaan ​​door doorgaans een schakelaar in de ontwikkelaarsopties in te schakelen en vervolgens een ontgrendelingsopdracht te geven aan de bootlader. Zodra de bootloader is ontgrendeld, kan de gebruiker een binair superuser-bestand in het systeem introduceren en ook een app voor superuser-beheer (zoals Magisk) om te bepalen welke processen toegang hebben tot root.

Met de hierboven genoemde systeemshell-exploit hoeft de gebruiker de bootloader echter niet te ontgrendelen om een ​​geëscaleerd privilege te krijgen. Hoewel het verre van root is, is de "systeem"-gebruiker capabel genoeg om toegang te krijgen tot een aantal partities op laag niveau (zoals als /efs), start verschillende service- en foutopsporingstools en wijzig veel beschermde prop-waarden - allemaal zonder zelfs maar te struikelen Knox. Deze voorbeelden raken slechts een paar manieren; een kwaadwillende actor kan dit combineren met andere kwetsbaarheden en met meer snode acties komen.

We zullen moeten afwachten hoe Google en Samsung dit scenario aanpakken. Hoe dan ook, u moet de Samsung Text-To-Speech-app voorlopig waarschijnlijk uitschakelen of verwijderen.