Zephyrnet-logo

Deze week in beveiliging: iPhone Unpowered, Python Unsandboxed en Wizard Spider Unmasked

Datum:

beeld

Volgens complottheorieën is een van de plausibeler dat een mobiele telefoon kwaadaardige firmware op zijn basisbandprocessor kan draaien en zelfs als hij is uitgeschakeld, kan luisteren en gegevens kan verzenden. Tegenwoordig wordt dit soort gedrag een feature genoemd, tenminste als je telefoon van Apple is, met hun Find My-functionaliteit. Zelfs als de telefoon is uitgeschakeld, werkt de Bluetooth-chip probleemloos in een energiezuinige toestand, waardoor deze functies werken. Het probleem is dat deze chip geen ondertekende firmware ondersteunt. Het enige dat nodig is, is toegang op rootniveau tot het primaire besturingssysteem van de telefoon om mogelijk schadelijke firmware te laden afbeelding naar de Bluetooth-chip.

Onderzoekers van de TU Darmstadt in Duitsland demonstreerden de aanpak: een geweldig artikel schrijven over hun werk (PDF). Er zijn een paar echt interessante mogelijkheden die dit onderzoek suggereert. De eenvoudigste is het kapen van Apple's Zoek mijn-systeem om iemand te volgen met een uitgeschakelde telefoon. Het grotere gevaar is dat dit kan worden gebruikt om surveillance-malware op een apparaat te houden, zelfs als de stroom uitvalt. Apparaten zijn over het algemeen redelijk goed beveiligd tegen aanvallen van buitenaf, en nauwelijks tegen aanvallen die hun oorsprong vinden op de chips zelf. Omdat niet-ondertekende firmware een hardwarebeperking is, kan een beveiligingsupdate helaas niet veel doen om dit te verhelpen, afgezien van de normale inspanningen om te voorkomen dat aanvallers het besturingssysteem in gevaar brengen.

Bluetooth Low Energy

Het is nog een ander Bluetooth-gerelateerd probleem, deze keer zorgwekkend Bluetooth Low Energy (BLE) gebruikt als authenticatietoken. Je hebt dit idee waarschijnlijk in een of andere vorm gezien, zoals de Android-optie om ontgrendeld te blijven wanneer je verbonden bent met je BLE-oordopjes. Het wordt gebruikt voor verschillende voertuigen, om te ontgrendelen zodra de juiste telefoon zich binnen BLE-bereik bevindt.

Het is altijd een slecht idee geweest om BLE te gebruiken voor dit soort authenticatie, omdat BLE vatbaar is voor relaisaanvallen tijdens de vlucht. De ene helft van de aanval vindt plaats naast je telefoon en gedraagt ​​zich als de BLE-chip van de auto, en de andere helft bevindt zich naast de auto en vervalst je telefoon. Verbind de twee spoofing-apparaten en de auto denkt dat de geautoriseerde telefoon daar is. Om dit “veilig” te maken, hebben leveranciers encryptiefuncties toegevoegd, evenals signaaltiminganalyse om spoofing te onderscheppen.

De echte innovatie in de hack hier is het gebruik van speciale hardware die op de linklaag snuffelt en afspeelt. Dit vermijdt het encryptieprobleem, omdat het signaal ongehinderd wordt doorgegeven. Het versnelt het proces ook voldoende zodat de latentie laag genoeg is, zelfs via internet op honderden kilometers afstand. Het is waarschijnlijk dat de volgende versie van deze techniek eenvoudigweg Software Defined Radio's zou kunnen gebruiken om de signalen op een nog lager niveau af te spelen. De oplossing is om de gebruiker om autorisatie te vragen voordat het voertuig wordt ontgrendeld, of om locatie-informatie in de gecodeerde lading in te sluiten.

[Ingesloten inhoud]

Pythonbuffer opgeblazen

Dit is een van die problemen die geen groot probleem zijn, maar dat toch wel kunnen zijn een probleem in bepaalde situaties. Het begon allemaal in 2012, toen werd opgemerkt dat de Python memoryview object kan een programma laten crashen wanneer het naar een geheugenlocatie verwijst die niet langer geldig is. A memoryview is in wezen een verwijzing naar de onderliggende C-buffer, en krijgt niet helemaal dezelfde automatische referentietelling als een normaal Python-object. Maak de toewijzing van het object ongedaan memoryview wijst naar, en verwijst vervolgens naar deze "aanwijzer" voor ongedefinieerd gedrag in de C-stijl. (Hier bedoelen we niet vervloekte code, maar meer tuinvariëteit UD - het derefereren van een pointer die niet langer een geldige pointer is.) Een beetje geheugenmanipulatie kan vrijwel bepalen wat de ruwe pointerwaarde zal zijn, en het instellen ervan op NULL crasht voorspelbaar de tolk.

Dit is eigenlijk een lees- en schrijfprimitief. Snuffel rond in het geheugen van Python, zoek de ELF-headers en zoek vervolgens uit waar de glibc system dynamische bibliotheek bevindt zich in de procedurekoppelingstabel. Vind het, gebruik de geheugencorruptiebug om naar de juiste locatie in het geheugen te springen, en boem, je hebt een shell uit Python gehaald!

De scherpzinnigen onder jullie denken vast al: goh, dat is een ingewikkelde manier om te bellen os.system(). En ja, als exploit, het is nogal indrukwekkend. [kn32], onze gids over deze eigenaardigheid van Python wijst erop dat het gebruikt zou kunnen worden om uit een Python-sandbox te ontsnappen, maar dat is een zeer niche-use-case. Zelfs als we concluderen dat dit niet echt een exploit is, is het een geweldig leermiddel en een leuke hackery.

Tovenaar Spin

Wat gebeurt er als een groep intelligente en zeer gemotiveerde onderzoekers, zoals de mensen van PRODRAFT, hun sites op een grote ransomwarebende richten? Eerst moeten ze een pakkende naam bedenken. Ze besloten deze Conti-slingerende malwarebende Wizard Spider te noemen, en kregen daar een aantal sterke D&D-vibes van.

Het PDF-rapport beschrijft de bevindingen, en ze zijn indrukwekkend. Het onderzoek bracht de favoriete tools van WS in kaart, evenals een deel van hun infrastructuur, zoals het web van Wireguard-tunnels dat ze gebruiken om hun acties te proxyren. Het meest interessant was de ontdekking van een back-upserver, vermoedelijk in Rusland, die ook back-ups bevatte die correspondeerden met REvil-aanvallen. Er zijn theorieën in overvloed over wat deze bevinding precies aangeeft. Er is een andere versie van het rapport die aan de wetshandhaving is overgedragen, die waarschijnlijk meer identificerende informatie bevat.

Er worden hier een paar opmerkelijke technieken besproken, waaronder een machine learning-engine die naar schrijven kijkt en probeert de moedertaal van de auteur te bepalen. Daar zijn aanwijzingen voor, zoals het weglaten van lidwoorden, zoals “de”, en het gebruik van de verkeerde werkwoordsvorm. Sommige vreemd uitziende Engelse uitdrukkingen zijn letterlijke woord-voor-woord vertalingen van veel voorkomende uitdrukkingen in de moedertaal. In een conclusie die niemand verraste, stelde PRODRAFT vast dat de officiële woordvoerder van WS Russisch als moedertaal had. Hopelijk kan de rest van het verhaal achter de extractie van deze schat aan informatie worden gedeeld. Het belooft een behoorlijk verhaal te worden over het hacken van de hackers, en misschien ook wel een ouderwetse handelskunst.

Het onthullen van de Parallels-hack

Tijdens Pwn2own 2021, [Jack Dates] van RET2 Systems erin geslaagd om de Parallels VM te kraken. Tot onze vreugde heeft hij dat gedaan het exploitproces geschreven voor ons onderwijs. Een reeks bugs in de gasttoevoegingscode zorgt ervoor dat een keten aan de gast kan ontsnappen. De eerste bug die wordt gebruikt is een informatielek, waarbij 0x20 bytes worden geschreven naar een buffer van 0x90 formaat, en vervolgens wordt de hele buffer zichtbaar voor de gast. Dat is 0x70 bytes host-VM-heapgeheugen dat per keer kan worden gelezen, net genoeg om enkele basisadressen te berekenen.

De volgende bug is een bufferoverloop in de drag-and-drop-verwerkingscode. De struct die aan de host wordt doorgegeven, bevat een string die bedoeld is om null-beëindigd te worden, en het overslaan van de null zorgt voor een bufferoverflow naar de stapel. Deze overloop kan worden gebruikt om de uitzonderingsafhandeling van de gasttoevoegingscode die op de host wordt uitgevoerd, te verbreken. Een derde bug, een zogenaamde “megasmash”, lijkt niet erg nuttig, omdat deze een geheel getal overloopt en een enorme bufferoverflow veroorzaakt. Het probleem met het gebruik hiervan is dat wanneer het overloopt, het probeert te schrijven 0xffffffff bytes over het programmageheugen. De keten gebruikt dit wel om een ​​callback-pointer aan te passen zodat deze naar kwaadaardige code verwijst. Een deel van het geheugen is echter gegarandeerd alleen-lezen, wat een uitzondering veroorzaakt.

De sleutel hier is dat er met de afhandeling van uitzonderingen is geknoeid, dus wanneer de uitzondering wordt geactiveerd, geeft de afhandelingscode onmiddellijk een foutmelding en blijft hangen, waardoor de normale opschoning van het programma wordt voorkomen. Andere threads kunnen dan de gemanipuleerde functieaanwijzer raken, wat leidt tot uitvoering van de code. De ontdekte bugs zijn eind vorig jaar allemaal opgelost en [Jack] verdiende een mooie $ 40,000 voor de exploit-keten. Genieten!

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?