Video: Simple Spyware: Androids Invisible Foreground Services and How to (Ab)use Them (November 2024)
Forristal legde uit dat door de app te demonteren, aan te passen en opnieuw in elkaar te zetten, de handtekening van de ontwikkelaar was veranderd. De nieuwe handtekening was niet gelicentieerd om Google Maps te gebruiken, dus werd deze afgewezen. Hun nieuwe zoektocht; wijzig de code zonder de handtekening te wijzigen.
Forristal heeft de gedetailleerde reeks gebeurtenissen doorlopen die plaatsvinden wanneer Android een ondertekende app verifieert. Elke laag verifieert de vorige, beginnend met het verifiëren dat de codemodellen niet zijn geknoeid en eindigend met een digitale handtekening van het pakket als geheel. Hij probeerde het systeem in elke fase aan te vallen, meestal zonder geluk.
"De APK-, JAR- en ZIP-formaten zijn in principe hetzelfde", aldus Forristal. "JAR en APK hebben alleen extra componenten." Zijn laatste succes was het gebruik van het ZIP-formaat. Toen hij een "kwaadaardig" bestand invoerde met dezelfde naam als een bestaand geldig bestand, tekende de verificateur af op het geldige bestand, maar het "slechte" bestand werd gelanceerd.
Waarom? Omdat Android verschillende ZIP-bestandsbeheercode gebruikt in de verifier en in het eigenlijke installatieprogramma. "Een discrepantie van het parseren van ZIP-bestanden is de oorzaak van deze fout", legt Forristal uit. "In feite zijn er acht afzonderlijke implementaties voor het parseren van ZIP-bestanden in de Android-codebasis."
Uit de zandbak
"Ik heb deze truc voorgoed gebruikt, " zei Forristal. "Laten we het nu geweldig maken." Net als iOS draait Android elke app in zijn eigen sandbox, zodat een app geen toegang heeft tot bronnen die bij een andere app horen. "De enige manier om de sandbox in te gaan, is door dezelfde ontwikkelaar te worden ondertekend, " legde hij uit. "Dat maakt updates mogelijk."
"Het systeem als geheel onderschrijft hetzelfde idee, " ging hij verder. "De systeemsandbox dwingt alle andere sandboxen af. Het beheert al uw instellingen. Het is geen root, maar het heeft al uw gegevens, apps, wachtwoorden en instellingen - wat is er nog over? Het systeem is behoorlijk krachtig." Apps die toegang hebben tot de systeemsandbox worden meestal ondertekend door de platformmaker. "Ik moest alleen een door een platform ondertekende app krijgen en mijn kleine trucje doen, en ik zou toegang op systeemniveau moeten hebben. Dat is cooler dan FourSquare-kaarten, " concludeerde hij.
Het blijkt dat VPN's van derden platform-ondertekend moeten zijn en als bonus vragen ze al toegang tot de systeemsandbox. Forristal gaf de drie eenvoudige opdrachten weer die hij gebruikte om zijn 'slechte' code in een VPN van derden in te voegen, en maakte een grapje over 'über hacking-tools'. Het resultaat? Een trojan met volledige toegang op systeemniveau.
Gemakkelijke exploitatie
Master beveiligingstechnoloog Saurik (Jay Freeman) bracht het concept naar een hoger niveau, legt Forristal uit. Zijn Cydia Impactor-tool werkt op OSX en Windows en automatiseert de exploit. "Sluit een apparaat aan, " zei Forristal, "het zoekt de juiste app, bouwt het, voegt de juiste hack toe om root-toegang te krijgen en levert het. Ik wilde wat goedkope, kleine proof of concept-apps uitbrengen, maar dit is geweldig."
Forristal merkte op dat het processortype van het apparaat er niet toe doet. De aanval wordt niet beïnvloed door ASLR (Address System Layout Randomization) of DEP (Preventie van gegevensuitvoering). Hij maakte een versie die werkt op vier generaties Android, en de enige echte vaardigheid die nodig is, is kennis van Java. "Ik heb dit ingediend voor Black Hat omdat het gemakkelijk te begrijpen en te exploiteren is", aldus Forristal.
Meer hoofdsleutels
Forristal liep een aantal andere recent ontdekte bugs tegen die als "hoofdsleutels" konden worden beschouwd. Bij het doorlopen van de code voor een functie met de naam Authenticated Attributes, vonden Bluebox-onderzoekers een regel zonder commentaar en gemarkeerd als "TODO". Als gevolg van de ontbrekende code, ongeacht welke wijzigingen u aanbrengt, wordt het bestand goedgekeurd. Niet veel bestanden gebruiken deze functie, merkte Forristal op. "Als u er een vindt, kunt u het certificaatbestand kopiëren en plakken en de identiteit van de ontwikkelaar aannemen. Als u een app met geverifieerde kenmerken hebt ondertekend, hebt u uw identiteit weggegeven." Omdat deze bug was opgelost voordat Bluebox het rapporteerde, nemen ze geen krediet.
De "Hidden Trojan" -aanval gemeld door een Chinese onderzoeker blijkt slechts een van de vele mogelijke manieren om de meerdere ZIP-bestandsparsers van Android te exploiteren. Deze aanvallen profiteren van het feit dat de ene parser-gebruikers gehele getallen hebben ondertekend en de andere niet-getekende gehele getallen gebruikt.
"Het gaat zelfs niet om het vervangen van één bestand, " enthousiast Forristal. "Je kunt deze truc gebruiken om een compleet ander ZIP-bestand in te voeren. De ene wordt geverifieerd, de andere wordt uitgevoerd. Een paar trucs en weetjes in deze ruimte kunnen nog meer kracht aan deze aanpak tonen."
Hoewel malware die deze techniek gebruikt al in het wild is gezien, zou het niet mogelijk moeten zijn om een Trojanized-bestand zoals hier beschreven in Google Play te krijgen. Je zult waarschijnlijk veilig zijn als je altijd en alleen apps installeert die officieel zijn goedgekeurd. Zorg er echter voor de zekerheid voor dat u alle beschikbare Android-updates onmiddellijk installeert.