Hvordan jeg bruger AirDrop i stedet for Tinder

Hvordan jeg bruger AirDrop i stedet for Tinder

Apple-enheder har en fremragende Airdrop-funktion – den er lavet til at sende data mellem enheder. I dette tilfælde kræves ingen opsætning eller foreløbig parring af enheder; alt fungerer ud af kassen med to klik. En add-on over Wi-Fi bruges til at overføre data, og derfor overføres data med enorme hastigheder. På samme tid kan du ved hjælp af nogle tricks ikke kun sende filer, men også finde ud af telefonnummeret på den person, der er i den samme metrovogn ​​med dig.

Det sidste år har jeg brugt denne funktion til at stifte interessante bekendtskaber på vej til arbejde, i offentlig transport og i offentlige cateringvirksomheder. I gennemsnit formår jeg at stifte flere nye bekendtskaber om dagen, og nogle gange forlader jeg metroen i selskab med en ny person.

Under snittet vil jeg fortælle dig om alle persimmons.

Hvordan virker AirDrop?

Hvordan jeg bruger AirDrop i stedet for Tinder

AirDrop er en protokol til overførsel af filer inden for et peer-to-peer-netværk. Det kan fungere både over et almindeligt lokalt netværk og trådløst mellem alle Apple-enheder. Vi vil analysere det sidste tilfælde, hvor to enheder ikke er forbundet til et fælles netværk, men blot er i nærheden, for eksempel rejser to personer med telefoner i en metrovogn ​​og ikke er forbundet til en fælles Wi-Fi.

Hvordan jeg bruger AirDrop i stedet for Tinder
Den første fase af transmissionen via AirDrop er at sende en BLE-pakke

For at igangsætte dataoverførsel via AirDrop sender initiativtagerens telefon en BLE broadcast-pakke, som indeholder hashed information om iCloud-kontoen og telefonnummeret på ejeren af ​​initiativtagerens enheder, med et forslag om at etablere en forbindelse via AWDL (Apple Wireless Direct Link ) protokol, noget som Wi-Fi. Fi Direkte fra Androids verden. Strukturen af ​​denne BLE-pakke er meget interessant, vi vil analysere den yderligere.

På modtagerens side kan AirDrop være i tre tilstande:

  • Slukket - vil slet ikke blive opdaget
  • Kun for kontakter — accepter kun filer fra kontakter i din adressebog. I dette tilfælde anses kontakten for at være det telefonnummer eller den e-mail, som icloud-kontoen er knyttet til. Den samme logik til at linke konti fungerer her som med iMessages messenger.
  • for alle - telefonen vil være synlig for alle

Hvordan jeg bruger AirDrop i stedet for Tinder
AirDrop privatlivsindstillinger. Standardstatus er indstillet til "For kontakter".

Afhængigt af dine privatlivsindstillinger vil telefonen enten fortsætte med at etablere en forbindelse via AWDL eller blot ignorere BLE-pakken. Hvis AirDrop er indstillet til "for alle", så vil enhederne i næste trin oprette forbindelse til hinanden via AWDL, skabe et IPv6-netværk mellem dem, inden for hvilket AirDrop vil fungere som en almindelig applikationsprotokol ved hjælp af mDNS over standard IP-protokollen.

Hvordan jeg bruger AirDrop i stedet for Tinder

Til eksperimenter kan du se, hvordan AWDL fungerer på en MacBook. Al udveksling under denne protokol sker gennem grænsefladen awdl0, som nemt kan fanges ved hjælp af Wireshark eller tcpdump.

På dette stadium kender vi tre enheder:

Bluetooth LowEnergy (BLE) pakke - denne pakke indeholder data baseret på hvilke telefonen beslutter, om initiativtageren er på sin kontaktliste eller ej.
Apple Wireless Direct Link (AWDL) — en proprietær erstatning for Wi-Fi Direct fra Apple, aktiveret, hvis kommunikationen via BLE lykkedes.
AirDrop - en applikationsprotokol, der fungerer inden for et almindeligt IP-netværk ved hjælp af mDNS, HTTP osv. Kan arbejde inden for ethvert Ethernet-netværk.

BLE-pakkestruktur

Det kan se ud til, at denne BLE-pakke kun flyver én gang fra initiator til modtager, og så sker udvekslingen kun via AWDL. I virkeligheden har en AWDL-forbindelse en meget kort levetid, kun få minutter eller mindre. Så hvis modtageren af ​​filen ønsker at svare dig, vil han også starte og sende en BLE-pakke.

Hvordan forstår telefonen i den modtagende ende, om initiativtagerens nummer/mail er på kontaktlisten eller ej? Jeg blev meget overrasket, da jeg fandt ud af svaret: initiativtageren sender sit nummer og e-mail som en sha256 hash, men ikke helt, men kun de første 3 bytes.

Hvordan jeg bruger AirDrop i stedet for Tinder
Struktur af en BLE-pakke fra AirDrop-initiatoren. Ved hjælp af hashes fra telefonnummeret og e-mailen forstår respondenten, om initiativtageren er på sin kontaktliste.

For eksempel, hvis din Apple-konto (alias iCloud, aka iMessages) er knyttet til nummeret +79251234567, vil hashen fra den blive beregnet sådan her:

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

Og som et resultat vil værdien i BLE-pakken flyve væk 07de58 for et telefonnummer. Dette synes ikke nok, men ofte er disse tre bytes nok til at finde ud af det rigtige telefonnummer.

Det er også vigtigt at huske, at AirDrop-privatlivsindstillingen ikke påvirker dataene i BLE-pakken. Telefonnummerets hash vil være indeholdt i det, selvom indstillingen "For alle" er indstillet. Desuden sendes en BLE-pakke med en hash af telefonnummeret, når vinduet Del åbnes, og når adgangskoden til Wi-Fi-netværket indtastes.

For en detaljeret analyse af strukturen af ​​BLE-pakker og mulige angreb på den, læs undersøgelsen Apple Bleee og russisk oversættelse til Habré.

Apple Bleee-undersøgelsen offentliggjorde færdiglavede python-scripts til automatisering af dataanalyse i BLE-pakker. Jeg anbefaler stærkt at tjekke forskningen ud og prøve programmerne, der er mange interessante ting derude.

AWDL (Apple Wireless Direct Link)

AWDL er en proprietær Apple-tilføjelse til almindelig Wi-Fi, der implementerer noget som Wi-Fi Direct. Jeg ved ikke helt, hvordan det virker, der er en særlig måde at annoncere og koordinere kanaler på, og det virker kun på proprietære Apple-drivere. Det vil sige, at kun MacBooks/iPhones kan oprette forbindelse via AWDL.

Triste Android-telefonejere drømmer stadig kun om en korrekt fungerende Wi-Fi Direct-funktion.

Hvordan jeg bruger AirDrop i stedet for Tinder

Men ikke så længe siden fyrene fra seemoo-lab skrev en fuldstændig open source-implementering af AWDL og kaldte den Åbn Wireless Link (UGLE). For at køre OWL skal Wi-Fi-adapteren understøtte skærmtilstand og pakkeinjektion, så den kører ikke på alle hardware. Siden har eksempler på konfiguration på Raspberry pi. Dette virker væsentligt dårligere end den originale AWDL, for eksempel forlænges forbindelsesopsætningstiden med ~10 sekunder i stedet for et par sekunder for originalen, men det virker.

Hvordan jeg bruger AirDrop i stedet for Tinder

Disse fyre skrev også fra bunden en implementering af AirDrop-protokollen i Python, kaldet OpenDrop. Den kan bruges både i forbindelse med OWL til at starte AirDrop på Linux og med den originale AWDL på macOS.

Sådan ruller du op via AirDrop

Hvordan jeg bruger AirDrop i stedet for Tinder
Typisk situation med oprulning via AirDrop

Nok kedelig teori, det er tid til at begynde at øve. Så du er bevæbnet med alt det nødvendige udstyr og er klar til at rykke frem og rulle bolde sammen ved hjælp af højteknologi.

Først skal du huske hovedpunkterne:

  • AirDrop fungerer kun, hvis telefonen er låst op - Det er bedst, hvis målet hele tiden kigger på telefonen. Oftest sker det de steder, hvor det er kedeligt, for eksempel i metroen.
  • Brug for tid — normalt sker en positiv konvertering på det 3.-5. billede, der sendes, så du har brug for mindst 5 minutters stille tid ét sted. Jeg anser en positiv konvertering for at være det øjeblik, hvor du via AirDrop indvilligede i at fortsætte med at kommunikere i messengeren. Dette er svært at implementere i farten, fordi det ikke umiddelbart er klart, hvem der har accepteret din nyttelast, og højst sandsynligt vil du varme op, før du kan blive enige om noget.
  • Personlig kreativ virker bedre — Jeg kalder nyttelast det medieindhold, som du sender via AirDrop. Bare et billede med en meme fører højst sandsynligt ingen steder hen; indholdet skal være relevant for situationen og have en klar opfordring til handling.

Den klassiske metode - bare en telefon

Velegnet til alle, der har en iPhone, kræver ingen særlige færdigheder udover sociale. Vi skifter AirDrop til Everyone-tilstand og går ned til metroen. På en normal dag (før selvisolering) i en Moskva-metrobil observerede jeg noget som dette:

Hvordan jeg bruger AirDrop i stedet for Tinder
Liste over mål

Som du kan se, udsender næsten alle telefoner ejerens navn, hvorved vi nemt kan bestemme hans køn og forberede den passende nyttelast.

Nyttelast

Som jeg skrev ovenfor, fungerer en unik nyttelast bedre. Ideelt set skal billedet henvende sig til ejeren ved navn. Tidligere var jeg nødt til at forme kreativitet ved hjælp af en grafisk editor i note-applikationen og en form for mobil Photoshop-stump. Som følge heraf var det allerede nødvendigt at komme ud af bilen, da det krævede billede blev tegnet.

Min ven Anya koteeq, specifikt på min anmodning, skrev en Telegram-bot, der genererer de nødvendige billeder med en billedtekst i farten: @AirTrollBot. Jeg takker hende meget for, at jeg nu kan trille bolde meget mere teknologisk end tidligere.

Det er nok at sende botten en tekstlinje, og den genererer den i form af et billede, der nøjagtigt matcher billedformatet for forhåndsvisningen i AirDrop-vinduet. Du kan vælge et tegn på billedet ved at trykke på knapperne. Du kan også valgfrit aktivere tilføjelse af dit Telegram-login til billedet i hjørnet.

Hvordan jeg bruger AirDrop i stedet for Tinder
Nyttelast generator

Det værste var, at billedet blev vist med det samme på offerets skærm uden nogen handling. Du behøvede ikke engang at klikke på "accepter". Du kunne se den øjeblikkelige reaktion i ansigtet fra lastning af nyttelasten. Fra og med iOS 13 vises billeder fra ukendte kontakter desværre ikke længere på skærmen. Sådan så det ud før:

Hvordan jeg bruger AirDrop i stedet for Tinder
Nyttelast leveret på iOS ≤12

Nu, i stedet for en forhåndsvisning, vises kun navnet på afsenderens enhed. Derfor er den eneste måde at kontakte et offer med iOS ≥13 ved at angive det i indstillingerne på din enhed, for eksempel at ringe til telefonen "Yulia, hej." Tip: Du kan bruge emoji i enhedsnavnet. Selvfølgelig er denne metode ikke så lys som med et billede, men det øger chancen for at klikke på "accepter"-knappen.

Yderligere beskrivelse af handlingerne er uden for rammerne af en teknisk artikel og afhænger kun af din fantasi, improvisation og humor. Jeg kan kun sige, at de, der deltager i dette spil og begynder at svare dig med billeder eller sende noter, normalt er meget muntre, åbne og interessante mennesker. Dem, der, efter at have set på billedet, simpelthen ikke reagerer, eller endnu værre, blot afviser beskeden, er som regel kedelige snobber og prudes. Frygtfaktoren spiller også ofte en rolle: skrøbelige, frygtsomme mennesker er bange for at interagere med sådan en arrogant anonym fremmed.

Automatisk plukkemaskine

Hvis du er for doven til at generere og sende nyttelast manuelt, og du vil automatisere processen, kan du lave en automatisk stemmevalgsmaskine, som i baggrunden sender billeder via AirDrop til alle inden for rækkevidde. Vi vil bruge raspberry pi zero som en hardwareplatform, men enhver computer med Linux vil gøre det, det vigtigste er, at Wi-Fi-kortet understøtter skærmtilstand og pakkeinjektion.

Hvordan jeg bruger AirDrop i stedet for Tinder
Højttalerafsender via Airdrop baseret på raspberry pi zero w + UPS Lite batteriskjold

Der er AirDrop flooder-programmer til Jailbreak iPhones, de fungerer mere stabilt end åbne versioner på raspberry pi

Opsætning af OWL på raspberry pi er beskrevet detaljeret på projektets hjemmeside, men jeg foretrækker at bruge Kali Linux-builden til Raspberry Pi Zero, fordi den allerede har nexmon-patches installeret for at aktivere Wi-Fi-skærmtilstand på rpi0.

Det er vigtigt at huske, at Airdrop (eller rettere sagt AWDL) aktiveres for patienter først efter at have modtaget en BLE-pakke. Derfor skal vi sende den med flere sekunders mellemrum. Dette kan gøres ved hjælp af hjælpeprogrammet py-bluetooth-udils. Ved at bruge start_le_advertising()-funktionen sender jeg datastrengen fra apple bleee-eksemplerne: 000000000000000001123412341234123400.

Når du har en fungerende OWL-dæmon, kan du starte min gaffel opendrop. Der er et script i depotet flooder.py, som sender alle et billede kak_dela.jpeg.

Ifølge mine observationer er raspberry pi zero w ustabil i monitortilstand. Efter ca. 20 minutters aktiv flooder-drift går Wi-Fi-undersystemet ned. Problemet er beskrevet af forfatteren pwnagotchi, og er formentlig forårsaget af overophedning. Det er nødvendigt at sørge for en vagthund eller bruge mere stabil hardware

Maniacello-tilstand - jeg kender dit nummer

Hvis du vil vise dig selv som en utilstrækkelig galning og for evigt fraråde ønsket om at fortsætte med at kommunikere med dig, kan du prøve at finde ud af telefonnummeret på den person, der er i nærheden.

Som vi lærte tidligere, indeholder BLE-pakkerne sendt af initiativtageren de første tre bytes af sha256-telefonnummeret. Denne hash kan fanges, når offeret klikker på "del"-knappen og begynder at scanne airdrop-enheder eller trykker på Wi-Fi-adgangskoden til et nyt netværk i inputfeltet (på denne måde leder Apple efter venner inden for rækkevidde, som du kan anmode om. netværksadgangskoden).

Du bliver nødt til på en eller anden måde at udløse hash-beskeden fra offeret og fange den. Jeg bruger hjælpeprogrammer fra depotet Apple Bleee. Da Bluetooth MAC-adresser på enheder er tilfældige og konstant ændrer sig, bliver du nødt til at finde en anden måde at bestemme den ønskede enhed på denne liste. Opgaven forenkles af det faktum, at iOS udsender telefonens aktuelle tilstand som: skærm slukket, skærm tændt, låseskærm, ulåst osv. Derfor kan du blot ved at observere offerets handlinger sammenligne enhedens aktuelle tilstand med enheden i tabellen. Den nemmeste måde er at fange det øjeblik, hvor brugeren tager telefonen op af lommen, tænder for skærmen og låser telefonen op med fingeren eller ansigtet. Alt dette vil være synligt i snifferen.

Hvordan jeg bruger AirDrop i stedet for Tinder
ikon Х betyder, at en pakke med telefon-hash blev fanget.

Deres parser går nogle gange i stykker, men oftest virker det. Jeg vil ikke helt genfortælle essensen af ​​sårbarheden, da den blev analyseret i detaljer af forfatterne af Apple Blee, vil jeg kun beskrive min oplevelse. Jeg vil bare sige, at jeg bruger en USB Bluetooth-adapter på en CSR 8510-chip, da den fungerer meget mere stabilt for mig end Bluetooth-adapteren, der er indbygget i en MacBook og indsat i en virtuel maskine.

Så vi fangede hashen fra offerets telefon og modtog de eftertragtede tre bytes fra hashen på telefonnummeret.

Hvordan jeg bruger AirDrop i stedet for Tinder
Opsnappet BLE-pakke med telefonnummer-hash ved hjælp af værktøjet read_ble_state.py

Vi ved, at i Rusland begynder alle mobilnumre med koden +79, og højst sandsynligt har vores ofres telefon den samme kode. Det viser sig, at vi har en række tal fra +79000000000 til +79999999999, omkring en milliard tal.

For at indsnævre rækkevidden tager vi kun de koder, der faktisk er registreret hos enhver operatør, og kasserer resten. Som følge heraf bliver rækkevidden halvt så stor, omkring en halv milliard numre.

Dernæst genererer vi sha256 fra alle tal og gemmer kun de første 3 bytes fra hver hash. Vi indtaster denne liste i Sqlite-databasen og bygger et indeks for at fremskynde søgningen.

Sådan ser dataene i databasen ud:

Hvordan jeg bruger AirDrop i stedet for Tinder
Alle russiske telefonnumre og de første tre bytes af hashen

Dernæst, med offerets hash, kan vi søge efter alle matches i databasen. Normalt er der 15-30 matches pr. hash.

Hvordan jeg bruger AirDrop i stedet for Tinder
Alle tal, der matcher offerets hash

Det er klart, at ikke alle disse tal faktisk bruges. Vi kan afskære de unødvendige ved at bruge en HLR-anmodning eller en usynlig SMS. Ud af 30 numre blev 5 fundet online.

Hvordan jeg bruger AirDrop i stedet for Tinder
Resultatet af HLR-anmodningen. Netværksnumre er fremhævet med grønt.

Jeg kunne fortsætte med at gennemsøge tallene, for eksempel tilføje dem alle til Telegram/Whatsapp og se på avatarerne, tjekke databaser som Getcontact og så videre. Men det viste sig at være nemmere bare at ringe til alle fem numre et efter et og se, når ofrets telefon ringer.

Hvordan jeg bruger AirDrop i stedet for Tinder
Mål placeret

At gøre

  • Flooderen på raspberry pi'en er meget ustabil, du skal prøve andre enkeltbrætter.
  • En native flooder til iOS ville være meget bedre, men jeg kunne ikke finde en, der virker på iOS 12-13, selv med jailbreak.
  • Flooder.py-scriptet er meget dumt. Det kunne sandsynligvis generere et personligt billede ved at tage navnet fra modtagerens enhedsnavn og klippe ordet iPhone ud.
  • Metoden til at bestemme et telefonnummer kan optimeres ved kun at kontrollere, at nummeret er knyttet til iMessage. Dette vil højst sandsynligt give dig tæt på en 100 % hitrate.

Konklusion

Dette er den perfekte underholdning til metroen. Der er en wow-effekt, nysgerrige mennesker er interesserede i dette. Der var meget improvisation, der var meget sjove sager. Det viser sig, at mange mennesker er klar til at spille med og endda aflyse deres planer for at stå af på din metrostation og gå op for at få kaffe. I løbet af året mødte jeg en masse mennesker og fortsætter med at kommunikere med nogle af dem.

Nogle gange slår jeg Telegram-login fra og har det sjovt sådan her.

Hvordan jeg bruger AirDrop i stedet for Tinder

Hvordan jeg bruger AirDrop i stedet for Tinder

Kilde: www.habr.com

Tilføj en kommentar