Hoe ik AirDrop gebruik in plaats van Tinder

Hoe ik AirDrop gebruik in plaats van Tinder

Apple-apparaten hebben een uitstekende Airdrop-functie: deze is gemaakt voor het verzenden van gegevens tussen apparaten. In dit geval is er geen installatie of voorafgaande koppeling van apparaten vereist; alles werkt in twee klikken uit de doos. Er wordt een add-on via Wi-Fi gebruikt om gegevens over te dragen, en daarom worden gegevens met enorme snelheden overgedragen. Tegelijkertijd kunt u met behulp van enkele trucs niet alleen bestanden verzenden, maar ook het telefoonnummer achterhalen van de persoon die met u in dezelfde metro zit.

Het afgelopen jaar gebruik ik deze functie om interessante kennissen te maken op weg naar mijn werk, in het openbaar vervoer en in publieke horecagelegenheden. Gemiddeld slaag ik erin om meerdere nieuwe kennissen per dag te maken, en soms verlaat ik de metro in het gezelschap van een nieuwe persoon.

Onder de snit zal ik je vertellen over alle dadelpruimen.

Hoe werkt AirDrop?

Hoe ik AirDrop gebruik in plaats van Tinder

AirDrop is een protocol voor het overbrengen van bestanden binnen een peer-to-peer-netwerk. Het kan zowel via een gewoon lokaal netwerk als via de ether tussen alle Apple-apparaten werken. We zullen het laatste geval analyseren, wanneer twee apparaten niet zijn verbonden met een gemeenschappelijk netwerk, maar gewoon in de buurt zijn. Twee mensen met telefoons reizen bijvoorbeeld in een metro en zijn niet verbonden met een gemeenschappelijk wifi-netwerk.

Hoe ik AirDrop gebruik in plaats van Tinder
De eerste fase van verzending via AirDrop is het verzenden van een BLE-pakket

Om de gegevensoverdracht via AirDrop te initiëren, verzendt de telefoon van de initiator een BLE-broadcastpakket, dat gehashte informatie bevat over het iCloud-account en het telefoonnummer van de eigenaar van de apparaten van de initiator, met een voorstel om een ​​verbinding tot stand te brengen via de AWDL (Apple Wireless Direct Link )-protocol, zoiets als Wi-Fi. Fi Direct uit de wereld van Android. De structuur van dit BLE-pakket is erg interessant, we zullen het verder analyseren.

Aan de kant van de ontvanger kan AirDrop zich in drie toestanden bevinden:

  • Uit - wordt helemaal niet gedetecteerd
  • Alleen voor contacten — accepteer alleen bestanden van contacten in uw adresboek. In dit geval wordt als contactpersoon beschouwd het telefoonnummer of e-mailadres waaraan het icloud-account is gekoppeld. Dezelfde logica voor het koppelen van accounts werkt hier als bij de iMessages-messenger.
  • Voor iedereen - de telefoon is voor iedereen zichtbaar

Hoe ik AirDrop gebruik in plaats van Tinder
AirDrop-privacy-instellingen. De standaardstatus is ingesteld op 'Voor contacten'.

Afhankelijk van uw privacy-instellingen zal de telefoon doorgaan met het tot stand brengen van een verbinding via AWDL of eenvoudigweg het BLE-pakket negeren. Als AirDrop is ingesteld op ‘voor iedereen’, zullen de apparaten in de volgende stap met elkaar verbinden via AWDL en een IPv6-netwerk tussen hen creëren, waarbinnen AirDrop zal werken als een regulier applicatieprotocol met behulp van mDNS via het standaard IP-protocol.

Hoe ik AirDrop gebruik in plaats van Tinder

Voor experimenten kun je kijken hoe AWDL werkt op een MacBook. Alle uitwisseling onder dit protocol vindt plaats via de interface awdl0, die eenvoudig kan worden vastgelegd met Wireshark of tcpdump.

In dit stadium kennen we drie entiteiten:

Bluetooth LowEnergy (BLE)-pakket - dit pakket bevat gegevens op basis waarvan de telefoon beslist of de initiator in zijn contactenlijst staat of niet.
Apple Wireless Direct Link (AWDL) — een eigen vervanging voor Wi-Fi Direct van Apple, geactiveerd als de communicatie via BLE succesvol was.
AirDrop - een applicatieprotocol dat werkt binnen een regulier IP-netwerk met behulp van mDNS, HTTP, enz. Kan binnen elk Ethernet-netwerk werken.

BLE-pakketstructuur

Het lijkt misschien dat dit BLE-pakket slechts één keer van de initiator naar de ontvanger vliegt, en dat de uitwisseling vervolgens alleen via AWDL plaatsvindt. In werkelijkheid heeft een AWDL-verbinding een zeer korte levensduur, slechts enkele minuten of minder. Dus als de ontvanger van het bestand op u wil reageren, zal hij ook als initiator optreden en een BLE-pakket verzenden.

Hoe begrijpt de telefoon aan de ontvangende kant of het nummer/e-mailadres van de initiator in de contactenlijst staat of niet? Ik was zeer verrast toen ik het antwoord hoorde: de initiator verzendt zijn nummer en e-mailadres als een sha256-hash, maar niet helemaal, maar alleen de eerste 3 bytes.

Hoe ik AirDrop gebruik in plaats van Tinder
Structuur van een BLE-pakket van de AirDrop-initiator. Met behulp van hashes van het telefoonnummer en e-mailadres begrijpt de responder of de initiator in zijn contactenlijst staat.

Als uw Apple-account (ook wel iCloud, ook wel iMessages genoemd) bijvoorbeeld is gekoppeld aan het nummer +79251234567, wordt de hash ervan als volgt berekend:

echo -n "+79251234567" | shasum -a 256
07de58621e5d274f5844b6663a918a94cfd0502222ec2adee0ae1aed148def36

En als resultaat zal de waarde in het BLE-pakket wegvliegen 07de58 voor een telefoonnummer. Dit lijkt niet genoeg, maar vaak zijn deze drie bytes voldoende om het echte telefoonnummer te achterhalen.

Het is ook belangrijk om te onthouden dat de privacy-instelling van AirDrop geen invloed heeft op de gegevens in het BLE-pakket. De hash van het telefoonnummer zal erin staan, zelfs als de instelling “Voor iedereen” is ingesteld. Ook wordt er een BLE-pakket met een hash van het telefoonnummer verzonden wanneer het Share-venster wordt geopend en wanneer het wachtwoord voor het Wi-Fi-netwerk wordt ingevoerd.

Lees het onderzoek voor een gedetailleerde analyse van de structuur van BLE-pakketten en mogelijke aanvallen daarop Appel Bleee en Russisch vertaling naar Habré.

Het Apple Bleee-onderzoek publiceerde kant-en-klare pythonscripts voor het automatiseren van data-analyse in BLE-pakketten. Ik raad je ten zeerste aan om het onderzoek te bekijken en de programma's uit te proberen, er zijn veel interessante dingen beschikbaar.

AWDL (Apple Wireless Direct Link)

AWDL is een eigen Apple-add-on voor gewone Wi-Fi die zoiets als Wi-Fi Direct implementeert. Ik weet niet helemaal hoe het werkt, er is een speciale manier om kanalen aan te kondigen en te coördineren, en het werkt alleen op eigen Apple-stuurprogramma's. Dat wil zeggen dat alleen MacBooks/iPhones verbinding kunnen maken via AWDL.

Trieste Android-telefoonbezitters dromen nog steeds alleen maar van een goed werkende Wi-Fi Direct-functie.

Hoe ik AirDrop gebruik in plaats van Tinder

Maar nog niet zo lang geleden kwamen de jongens uit lijkt-lab schreef een volledig open source-implementatie van AWDL en noemde deze Open Draadloze verbinding (UIL). Om OWL te kunnen uitvoeren, moet de Wi-Fi-adapter de monitormodus en pakketinjectie ondersteunen, zodat deze niet op elke hardware werkt. De site heeft voorbeelden van configuratie op Raspberry pi. Dit werkt aanzienlijk slechter dan de originele AWDL. De tijd voor het opzetten van de verbinding wordt bijvoorbeeld met ~10 seconden verlengd in plaats van een paar seconden voor het origineel, maar het werkt.

Hoe ik AirDrop gebruik in plaats van Tinder

Deze jongens schreven ook een implementatie van het AirDrop-protocol in Python, genaamd OpenDrop. Het kan zowel in combinatie met OWL worden gebruikt om AirDrop op Linux te starten als met de originele AWDL op macOS.

Oprollen via AirDrop

Hoe ik AirDrop gebruik in plaats van Tinder
Typische situatie bij het oprollen via AirDrop

Genoeg saaie theorie, het is tijd om te gaan oefenen. Je bent dus gewapend met alle benodigde uitrusting en bent klaar om vooruit te gaan en ballen op te rollen met behulp van hoogwaardige technologie.

Eerst moet je de belangrijkste punten onthouden:

  • AirDrop werkt alleen als de telefoon ontgrendeld is – het is het beste als het doelwit voortdurend naar de telefoon kijkt. Meestal gebeurt dit op plaatsen waar het saai is, bijvoorbeeld in de metro.
  • Tijd nodig — meestal vindt er een positieve conversie plaats bij de derde tot de vijfde verzonden afbeelding, dus je hebt minimaal vijf minuten stille tijd op één plek nodig. Een positieve conversie beschouw ik als het moment waarop je via AirDrop hebt afgesproken om verder te communiceren in de messenger. Dit is moeilijk direct te implementeren, omdat het niet meteen duidelijk is wie uw lading heeft geaccepteerd, en hoogstwaarschijnlijk zult u opwarmen voordat u het ergens over eens kunt worden.
  • Gepersonaliseerd advertentiemateriaal werkt beter — Ik noem payload de media-inhoud die je via AirDrop verzendt. Gewoon een foto met een meme zal hoogstwaarschijnlijk tot niets leiden; de inhoud moet relevant zijn voor de situatie en een duidelijke oproep tot actie bevatten.

De klassieke methode: gewoon een telefoon

Geschikt voor iedereen die een iPhone heeft, vereist geen speciale vaardigheden behalve sociale vaardigheden. We schakelen AirDrop naar de modus Iedereen en gaan naar de metro. Op een normale dag (vóór zelfisolatie) in een metrowagen in Moskou zag ik zoiets als dit:

Hoe ik AirDrop gebruik in plaats van Tinder
Lijst met doelen

Zoals u kunt zien, zenden bijna alle telefoons de naam van de eigenaar uit, aan de hand waarvan we gemakkelijk zijn geslacht kunnen bepalen en de juiste lading kunnen voorbereiden.

Laadvermogen

Zoals ik hierboven schreef, werkt een unieke payload beter. Idealiter zou de foto de eigenaar bij naam moeten aanspreken. Voorheen moest ik creativiteit vormgeven met behulp van een grafische editor in de notitietoepassing en een soort mobiele Photoshop-stub. Als gevolg hiervan was het tegen de tijd dat de vereiste foto werd gemaakt al nodig om uit de auto te stappen.

Mijn vriendin Anya koteeq, specifiek op mijn verzoek, schreef een Telegram-bot die de nodige foto's genereert met een onderschrift: @AirTrollBot. Ik dank haar heel erg voor het feit dat ik nu technologisch veel meer ballen kan rollen dan voorheen.

Het is voldoende om de bot een regel tekst te sturen, en deze genereert deze in de vorm van een afbeelding die exact overeenkomt met de beeldverhouding voor de preview in het AirDrop-venster. U kunt een personage in de afbeelding selecteren door op de knoppen te drukken. U kunt optioneel ook het toevoegen van uw Telegram-login aan de afbeelding in de hoek inschakelen.

Hoe ik AirDrop gebruik in plaats van Tinder
Laadvermogengenerator

Het ergste was dat de foto zonder enige actie direct op het scherm van het slachtoffer verscheen. Je hoefde niet eens op "accepteren" te klikken. Je kon de onmiddellijke reactie op het gezicht zien bij het laden van de lading. Helaas worden vanaf iOS 13 geen afbeeldingen van onbekende contacten meer op het scherm weergegeven. Zo zag het er voorheen uit:

Hoe ik AirDrop gebruik in plaats van Tinder
Payload geleverd op iOS ≤12

Nu wordt in plaats van een voorbeeld alleen de naam van het apparaat van de afzender weergegeven. Daarom is de enige manier om op naam contact op te nemen met een slachtoffer met iOS ≥13, door dit in de instellingen van uw apparaat in te stellen, bijvoorbeeld door de telefoon 'Yulia, hallo' te noemen. Tip: U kunt emoji gebruiken in de apparaatnaam. Natuurlijk is deze methode niet zo helder als bij een foto, maar het vergroot de kans dat je op de knop ‘Accepteren’ klikt enorm.

Een verdere beschrijving van de acties valt buiten het bestek van een technisch artikel en hangt alleen af ​​van je verbeeldingskracht, improvisatie en humor. Ik kan alleen maar zeggen dat degenen die aan dit spel meedoen en op je beginnen te reageren met foto's of het sturen van notities, meestal erg vrolijke, open en interessante mensen zijn. Degenen die na het bekijken van de foto simpelweg niet reageren, of erger nog, de boodschap simpelweg afwijzen, zijn meestal saaie snobs en preuts. Vaak speelt ook de angstfactor een rol: fragiele, timide mensen zijn bang om met zo’n arrogante anonieme vreemdeling om te gaan.

Automatische pick-pick-machine

Als u te lui bent om handmatig payloads te genereren en te verzenden, en u het proces wilt automatiseren, kunt u een automatische voicepick-machine maken, die op de achtergrond via AirDrop afbeeldingen naar iedereen binnen bereik verzendt. We zullen Raspberry Pi Zero als hardwareplatform gebruiken, maar elke computer met Linux zal het doen, het belangrijkste is dat de Wi-Fi-kaart de monitormodus en pakketinjectie ondersteunt.

Hoe ik AirDrop gebruik in plaats van Tinder
Luidsprekerzender via Airdrop op basis van raspberry pi zero w + UPS Lite batterijschild

Er zijn AirDrop flooder-programma's voor Jailbreak-iPhones, deze werken stabieler dan open versies op Raspberry Pi

Het instellen van OWL op Raspberry Pi wordt in detail beschreven op projectsite, maar ik gebruik liever de Kali Linux-build voor Raspberry Pi Zero omdat er al nexmon-patches zijn geïnstalleerd om de Wi-Fi-monitormodus op rpi0 in te schakelen.

Het is belangrijk om te onthouden dat Airdrop (of beter gezegd AWDL) pas voor patiënten wordt geactiveerd nadat ze een BLE-pakket hebben ontvangen. Daarom moeten we het met tussenpozen van enkele seconden verzenden. Dit kan gedaan worden met behulp van het hulpprogramma py-bluetooth-utils. Met behulp van de functie start_le_advertising() verzend ik de gegevensreeks uit de Apple Bleee-voorbeelden: 000000000000000001123412341234123400.

Zodra je een werkende OWL-daemon hebt, kun je mijn vork lanceren open druppel. Er staat een script in de repository flooder.py, waarmee iedereen een foto wordt gestuurd kak_dela.jpeg.

Volgens mijn waarnemingen is de Raspberry Pi Zero W onstabiel in de monitormodus. Na ongeveer 20 minuten actieve werking van de flooder crasht het Wi-Fi-subsysteem. Het probleem wordt beschreven door de auteur pwnagotchien wordt vermoedelijk veroorzaakt door oververhitting. Het is noodzakelijk om een ​​waakhond te voorzien of stabielere hardware te gebruiken

Maniacello-modus - Ik weet je nummer

Als je jezelf wilt laten zien als een ontoereikende maniak en voor altijd de wens wilt ontmoedigen om met je te blijven communiceren, kun je proberen het telefoonnummer te achterhalen van de persoon die in de buurt is.

Zoals we eerder hebben geleerd, bevatten de BLE-pakketten die door de initiator worden verzonden de eerste drie bytes van het sha256-telefoonnummer. Deze hash kan worden onderschept wanneer het slachtoffer op de knop ‘delen’ klikt en airdrop-apparaten begint te scannen of in het invoerveld op het wifi-wachtwoord voor een nieuw netwerk tikt (op deze manier zoekt Apple naar vrienden binnen bereik van wie je vragen kunt stellen het netwerkwachtwoord).

Je zult op de een of andere manier het hash-bericht van het slachtoffer moeten activeren en opvangen. Ik gebruik hulpprogramma's uit de repository Appel Bleee. Omdat Bluetooth MAC-adressen van apparaten willekeurig zijn en voortdurend veranderen, zult u een andere manier moeten vinden om het gewenste apparaat in deze lijst te bepalen. De taak wordt vereenvoudigd door het feit dat iOS de huidige status van de telefoon uitzendt, zoals: scherm uit, scherm aan, vergrendelscherm, ontgrendeld, enz. Daarom kunt u, simpelweg door de acties van het slachtoffer te observeren, de huidige status van het apparaat vergelijken met het apparaat in de tabel. De eenvoudigste manier is om het moment vast te leggen waarop de gebruiker de telefoon uit zijn zak haalt, het scherm aanzet en de telefoon ontgrendelt met zijn vinger of gezicht. Dit alles zal zichtbaar zijn in de sniffer.

Hoe ik AirDrop gebruik in plaats van Tinder
icon Х betekent dat er een pakketje met telefoonhashes is opgevangen.

Hun parser breekt soms, maar meestal werkt het. Ik zal de essentie van de kwetsbaarheid niet volledig opnieuw vertellen, aangezien deze in detail is geanalyseerd door de auteurs van Apple Blee, ik zal alleen mijn ervaring beschrijven. Ik zeg alleen dat ik een USB Bluetooth-adapter op een CSR 8510-chip gebruik, omdat deze voor mij veel stabieler werkt dan de Bluetooth-adapter die in een MacBook is ingebouwd en in een virtuele machine is geplaatst.

Dus hebben we de hash van de telefoon van het slachtoffer opgevangen en de felbegeerde drie bytes van de hash van het telefoonnummer ontvangen.

Hoe ik AirDrop gebruik in plaats van Tinder
Onderschept BLE-pakket met telefoonnummer-hash met behulp van het hulpprogramma read_ble_state.py

We weten dat in Rusland alle mobiele nummers beginnen met de code +79 en hoogstwaarschijnlijk heeft de telefoon van ons slachtoffer dezelfde code. Het blijkt dat we een reeks getallen hebben van +79000000000 tot +79999999999, ongeveer een miljard nummers.

Om het bereik te verkleinen, nemen we alleen de codes die daadwerkelijk bij een operator zijn geregistreerd en gooien we de rest weg. Het bereik wordt daardoor half zo groot, ongeveer een half miljard nummers.

Vervolgens genereren we sha256 uit alle getallen en bewaren we alleen de eerste 3 bytes van elke hash. We voeren deze lijst in de SQLite-database in en bouwen een index om het zoeken te versnellen.

Zo zien de gegevens in de database eruit:

Hoe ik AirDrop gebruik in plaats van Tinder
Alle Russische telefoonnummers en de eerste drie bytes van de hash

Vervolgens kunnen we, met de hash van het slachtoffer, naar alle overeenkomsten in de database zoeken. Meestal zijn er 15-30 matches per hash.

Hoe ik AirDrop gebruik in plaats van Tinder
Alle cijfers die overeenkomen met de hash van het slachtoffer

Het is duidelijk dat niet al deze nummers daadwerkelijk worden gebruikt. De onnodige kunnen we afsnijden met een HLR-verzoek of een onzichtbare sms. Van de 30 nummers zijn er 5 online gevonden.

Hoe ik AirDrop gebruik in plaats van Tinder
Het resultaat van het HLR-verzoek. Netwerknummers zijn groen gemarkeerd.

Ik zou de cijfers kunnen blijven doorzoeken, ze allemaal kunnen toevoegen aan Telegram/Whatsapp en de avatars kunnen bekijken, databases zoals Getcontact kunnen doorzoeken enzovoort. Maar het bleek makkelijker om gewoon alle vijf de nummers één voor één te bellen en te kijken wanneer de telefoon van het slachtoffer overgaat.

Hoe ik AirDrop gebruik in plaats van Tinder
Doel gelokaliseerd

alle

  • De flooder op de Raspberry Pi is erg onstabiel, je moet andere losse boards proberen.
  • Een native flooder voor iOS zou veel beter zijn, maar ik kon er geen vinden die werkt op iOS 12-13, zelfs niet met een jailbreak.
  • Het flooder.py-script is erg dom. Het zou waarschijnlijk een gepersonaliseerde foto kunnen genereren door de naam van de apparaatnaam van de ontvanger te nemen en het woord iPhone eruit te knippen.
  • De methode voor het bepalen van een telefoonnummer kan worden geoptimaliseerd door alleen te controleren of het nummer aan iMessage is gekoppeld. Dit levert hoogstwaarschijnlijk een hitpercentage van bijna 100% op.

Conclusie

Dit is het perfecte entertainment voor in de metro. Er is een wow-effect, nieuwsgierige mensen zijn hierin geïnteresseerd. Er werd veel geïmproviseerd, er waren hele grappige cases. Het blijkt dat veel mensen bereid zijn om mee te spelen en zelfs hun plannen te annuleren om bij je metrostation uit te stappen en koffie te gaan drinken. In de loop van het jaar heb ik veel mensen ontmoet en met sommigen van hen blijf ik communiceren.

Soms schakel ik de Telegram-login uit en heb ik plezier zoals dit.

Hoe ik AirDrop gebruik in plaats van Tinder

Hoe ik AirDrop gebruik in plaats van Tinder

Bron: www.habr.com

Voeg een reactie