Hur jag använder AirDrop istället för Tinder

Hur jag använder AirDrop istället för Tinder

Apple-enheter har en utmärkt Airdrop-funktion – den är gjord för att skicka data mellan enheter. I det här fallet krävs ingen installation eller preliminär ihopparning av enheter, allt fungerar ur lådan med två klick. Ett tillägg över Wi-Fi används för att överföra data, och därför överförs data med enorma hastigheter. Samtidigt, med hjälp av några knep, kan du inte bara skicka filer, utan också ta reda på telefonnumret till den person som är i samma tunnelbanevagn med dig.

Det senaste året har jag använt den här funktionen för att göra intressanta bekantskaper på vägen till jobbet, i kollektivtrafiken och i offentliga serveringar. I genomsnitt lyckas jag träffa flera nya bekantskaper per dag, och ibland lämnar jag tunnelbanan i sällskap med en ny person.

Under snittet kommer jag att berätta om alla persimmons.

Hur fungerar AirDrop?

Hur jag använder AirDrop istället för Tinder

AirDrop är ett protokoll för överföring av filer inom ett peer-to-peer-nätverk. Det kan fungera både över ett vanligt lokalt nätverk och trådlöst mellan alla Apple-enheter. Vi kommer att analysera det sista fallet, när två enheter inte är anslutna till ett gemensamt nätverk, utan helt enkelt är i närheten, till exempel, två personer med telefoner reser i en tunnelbanevagn och inte är anslutna till ett gemensamt Wi-Fi.

Hur jag använder AirDrop istället för Tinder
Det första steget av överföring via AirDrop är att skicka ett BLE-paket

För att initiera dataöverföring via AirDrop skickar initiativtagarens telefon ett BLE-utsändningspaket, som innehåller hashad information om iCloud-kontot och telefonnummer till ägaren av initiativtagarens enheter, med ett förslag om att upprätta en anslutning via AWDL (Apple Wireless Direct Link )-protokoll, något som Wi-Fi. Fi Direkt från Androids värld. Strukturen för detta BLE-paket är mycket intressant, vi kommer att analysera det vidare.

På mottagarens sida kan AirDrop vara i tre tillstånd:

  • Avstängd - kommer inte att upptäckas alls
  • Endast för kontakter — acceptera endast filer från kontakter i din adressbok. I det här fallet anses kontakten vara det telefonnummer eller e-postmeddelande som icloud-kontot är länkat till. Samma logik för att länka konton fungerar här som med iMessages messenger.
  • för alla – telefonen kommer att vara synlig för alla

Hur jag använder AirDrop istället för Tinder
AirDrop sekretessinställningar. Standardstatusen är inställd på "För kontakter".

Beroende på dina sekretessinställningar kommer telefonen antingen att fortsätta att upprätta en anslutning via AWDL eller helt enkelt ignorera BLE-paketet. Om AirDrop är inställt på "för alla" kommer enheterna i nästa steg att ansluta till varandra via AWDL, skapa ett IPv6-nätverk mellan dem, inom vilket AirDrop kommer att fungera som ett vanligt applikationsprotokoll med hjälp av mDNS över standard IP-protokollet.

Hur jag använder AirDrop istället för Tinder

För experiment kan du se hur AWDL fungerar på en MacBook. Allt utbyte under detta protokoll sker via gränssnittet awdl0, som enkelt kan fångas med Wireshark eller tcpdump.

I detta skede känner vi till tre enheter:

Bluetooth LowEnergy (BLE)-paket - detta paket innehåller data baserat på vilken telefonen bestämmer om initiatorn finns i sin kontaktlista eller inte.
Apple Wireless Direct Link (AWDL) — en proprietär ersättning för Wi-Fi Direct från Apple, aktiverad om kommunikationen via BLE lyckades.
LUFTLANDSÄTTNING - ett applikationsprotokoll som fungerar inom ett vanligt IP-nätverk med hjälp av mDNS, HTTP, etc. Kan arbeta inom alla Ethernet-nätverk.

BLE-paketstruktur

Det kan tyckas att detta BLE-paket bara flyger en gång från initiatorn till mottagaren, och då sker utbytet endast via AWDL. I verkligheten har en AWDL-anslutning en mycket kort livslängd, bara några minuter eller mindre. Så, om mottagaren av filen vill svara dig, kommer han också att agera som initiativtagare och skicka ett BLE-paket.

Hur förstår telefonen på den mottagande sidan om initiativtagarens nummer/e-post finns i kontaktlistan eller inte? Jag blev väldigt förvånad när jag fick reda på svaret: initiativtagaren skickar sitt nummer och e-post som en sha256-hash, men inte helt, utan bara de första 3 byten.

Hur jag använder AirDrop istället för Tinder
Struktur för ett BLE-paket från AirDrop-initiatorn. Med hjälp av hash från telefonnumret och e-posten förstår svaranden om initiativtagaren finns i sin kontaktlista.

Till exempel, om ditt Apple-konto (aka iCloud, aka iMessages) är länkat till numret +79251234567, kommer hashen från det att beräknas så här:

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

Och som ett resultat kommer värdet i BLE-paketet att flyga iväg 07de58 för ett telefonnummer. Detta verkar inte tillräckligt, men ofta räcker dessa tre byte för att ta reda på det verkliga telefonnumret.

Det är också viktigt att komma ihåg att integritetsinställningen AirDrop inte påverkar data i BLE-paketet. Telefonnumrets hash kommer att finnas i det, även om inställningen "För alla" är inställd. Dessutom skickas ett BLE-paket med en hash av telefonnumret när Share-fönstret öppnas och när lösenordet för Wi-Fi-nätverket anges.

För en detaljerad analys av strukturen för BLE-paket och möjliga attacker på dem, läs studien Apple Bleee och ryska översättning till Habré.

Apple Bleee-studien publicerade färdiga python-skript för automatisering av dataanalys i BLE-paket. Jag rekommenderar starkt att kolla in forskningen och testa programmen, det finns mycket intressant där ute.

AWDL (Apple Wireless Direct Link)

AWDL är ett proprietärt Apple-tillägg till vanlig Wi-Fi som implementerar något som Wi-Fi Direct. Jag vet inte helt hur det fungerar, det finns ett speciellt sätt att annonsera och koordinera kanaler, och det fungerar bara på proprietära Apple-drivrutiner. Det vill säga bara MacBooks/iPhones kan ansluta via AWDL.

Tråkiga Android-telefonägare drömmer fortfarande bara om en korrekt fungerande Wi-Fi Direct-funktion.

Hur jag använder AirDrop istället för Tinder

Men inte så länge sedan killarna från seemoo-lab skrev en helt öppen källkodsimplementering av AWDL och kallade den Öppna Wireless Link (UGGLA). För att köra OWL måste Wi-Fi-adaptern stödja monitorläge och paketinjektion, så den körs inte på alla hårdvara. Webbplatsen har exempel på konfiguration på Raspberry pi. Detta fungerar betydligt sämre än original-AWDL, till exempel förlängs anslutningstiden med ~10 sekunder istället för ett par sekunder för originalet, men det fungerar.

Hur jag använder AirDrop istället för Tinder

Dessa killar skrev också från grunden en implementering av AirDrop-protokollet i Python, kallad OpenDrop. Den kan användas både i kombination med OWL för att starta AirDrop på Linux och med den ursprungliga AWDL på macOS.

Hur man rullar upp via AirDrop

Hur jag använder AirDrop istället för Tinder
Typisk situation med upprullning via AirDrop

Nog tråkig teori, det är dags att börja träna. Så du är beväpnad med all nödvändig utrustning och är redo att gå framåt och rulla ihop bollar med hjälp av högteknologi.

Först måste du komma ihåg huvudpunkterna:

  • AirDrop fungerar bara om telefonen är upplåst – det är bäst om målet ständigt tittar på telefonen. Oftast sker detta på ställen där det är tråkigt, till exempel i tunnelbanan.
  • Behöver tid — vanligtvis sker en positiv konvertering på den 3-5:e bilden som skickas, så du behöver minst 5 minuters tyst tid på ett ställe. Jag anser att en positiv konvertering är det ögonblick då du via AirDrop gick med på att fortsätta kommunicera i messengern. Detta är svårt att implementera i farten, eftersom det inte är direkt klart vem som accepterade din nyttolast, och troligen kommer du att värma upp innan du kan komma överens om något.
  • Personlig kreativ fungerar bättre — Jag kallar nyttolast det medieinnehåll som du skickar via AirDrop. Bara en bild med ett meme leder med största sannolikhet ingenstans, innehållet bör vara relevant för situationen och ha en tydlig uppmaning till handling.

Den klassiska metoden - bara en telefon

Passar alla som har en iPhone, kräver inga speciella färdigheter förutom sociala. Vi byter AirDrop till Alla-läge och går ner till tunnelbanan. En vanlig dag (före självisolering) i en tunnelbanebil i Moskva, observerade jag något i stil med detta:

Hur jag använder AirDrop istället för Tinder
Lista över mål

Som du kan se sänder nästan alla telefoner ägarens namn, genom vilket vi enkelt kan bestämma hans kön och förbereda lämplig nyttolast.

Nyttolast

Som jag skrev ovan fungerar en unik nyttolast bättre. Helst ska bilden tilltala ägaren med namn. Tidigare var jag tvungen att skulptera kreativitet med hjälp av en grafisk redigerare i anteckningsapplikationen och någon form av mobil Photoshop-stubb. Som ett resultat, när den önskade bilden ritades, var det redan nödvändigt att gå ut ur bilen.

Min vän Anya koteeq, specifikt på min begäran, skrev en Telegram-bot som genererar de nödvändiga bilderna med en bildtext i farten: @AirTrollBot. Jag tackar henne så mycket för att jag nu kan rulla bollar mycket mer tekniskt än tidigare.

Det räcker med att skicka en textrad till boten, och den genererar den i form av en bild som exakt matchar bildförhållandet för förhandsvisningen i AirDrop-fönstret. Du kan välja ett tecken i bilden genom att trycka på knapparna. Du kan också valfritt aktivera att lägga till din Telegram-inloggning till bilden i hörnet.

Hur jag använder AirDrop istället för Tinder
Nyttolastgenerator

Det värsta var att bilden visades direkt på offrets skärm utan någon åtgärd. Du behövde inte ens klicka på "acceptera". Du kunde se den omedelbara reaktionen i ansiktet från att lasta nyttolasten. Tyvärr, från och med iOS 13, visas inte längre bilder från okända kontakter på skärmen. Så här såg det ut innan:

Hur jag använder AirDrop istället för Tinder
Nyttolast levererad på iOS ≤12

Nu, istället för en förhandsgranskning, visas bara namnet på avsändarens enhet. Därför är det enda sättet att kontakta ett offer med iOS ≥13 med namn att ställa in det i inställningarna på din enhet, till exempel ring telefonen "Yulia, hej." Tips: Du kan använda emoji i enhetsnamnet. Naturligtvis är den här metoden inte lika ljus som med en bild, men den ökar avsevärt chansen att klicka på "acceptera" -knappen.

Ytterligare beskrivning av åtgärderna ligger utanför ramen för en teknisk artikel och beror bara på din fantasi, improvisation och humor. Jag kan bara säga att de som går med i det här spelet och börjar svara dig med bilder eller skickar anteckningar vanligtvis är väldigt glada, öppna och intressanta människor. De som efter att ha tittat på bilden helt enkelt inte svarar, eller ännu värre, helt enkelt avvisar budskapet, är oftast tråkiga snobbar och pruder. Rädslafaktorn spelar också ofta in: sköra, blyga människor är rädda för att interagera med en så arrogant anonym främling.

Automatisk plockmaskin

Om du är för lat för att generera och skicka nyttolaster manuellt, och du vill automatisera processen, kan du göra en automatisk röstvalsmaskin, som i bakgrunden skickar bilder via AirDrop till alla inom räckhåll. Vi kommer att använda raspberry pi zero som en hårdvaruplattform, men vilken dator som helst med Linux kommer att göra det, det viktigaste är att Wi-Fi-kortet stöder monitorläge och paketinjektion.

Hur jag använder AirDrop istället för Tinder
Högtalarsändare via Airdrop baserad på raspberry pi zero w + UPS Lite batterisköld

Det finns AirDrop flooder-program för Jailbreak iPhones, de fungerar stabilare än öppna versioner på raspberry pi

Att ställa in OWL på raspberry pi beskrivs i detalj på projektwebbplats, men jag föredrar att använda Kali Linux-bygget för Raspberry Pi Zero eftersom det redan har nexmon-patchar installerade för att aktivera Wi-Fi-monitorläge på rpi0.

Det är viktigt att komma ihåg att Airdrop (eller snarare AWDL) aktiveras för patienter först efter att ha fått ett BLE-paket. Därför måste vi skicka det med flera sekunders intervall. Detta kan göras med hjälp av verktyget py-bluetooth-utils. Med hjälp av start_le_advertising()-funktionen skickar jag datasträngen från apple blee-exemplen: 000000000000000001123412341234123400.

När du har en fungerande OWL-demon kan du starta min gaffel opendrop. Det finns ett skript i förvaret flooder.py, som skickar en bild till alla kak_dela.jpeg.

Enligt mina observationer är raspberry pi zero w instabil i monitorläge. Efter cirka 20 minuters aktiv flooder-drift kraschar Wi-Fi-undersystemet. Problemet beskrivs av författaren pwnagotchi, och orsakas förmodligen av överhettning. Det är nödvändigt att tillhandahålla en vakthund eller använda mer stabil hårdvara

Maniacello-läge - jag vet ditt nummer

Om du vill visa dig själv som en otillräcklig galning och för alltid avskräcka lusten att fortsätta kommunicera med dig, kan du försöka ta reda på telefonnumret till personen som är i närheten.

Som vi lärde oss tidigare innehåller BLE-paketen som skickas av initiatorn de första tre byten av sha256-telefonnumret. Denna hash kan fångas när offret klickar på "dela"-knappen och börjar skanna airdrop-enheter eller trycker på Wi-Fi-lösenordet för ett nytt nätverk i inmatningsfältet (på så sätt letar Apple efter vänner inom räckhåll från vilka du kan begära nätverkslösenordet).

Du måste på något sätt utlösa hashmeddelandet från offret och fånga det. Jag använder verktyg från förvaret Apple Bleee. Eftersom Bluetooth MAC-adresser för enheter är slumpmässiga och ständigt förändras, måste du hitta ett annat sätt att bestämma den önskade enheten i den här listan. Uppgiften förenklas av det faktum att iOS sänder telefonens nuvarande tillstånd som: skärm av, skärm på, låsskärm, olåst, etc. Därför, helt enkelt genom att observera offrets handlingar, kan du jämföra enhetens nuvarande tillstånd med enheten i tabellen. Det enklaste sättet är att fånga ögonblicket när användaren tar upp telefonen ur fickan, slår på skärmen och låser upp telefonen med fingret eller ansiktet. Allt detta kommer att synas i sniffern.

Hur jag använder AirDrop istället för Tinder
icon Х betyder att ett paket med telefonhaschar fångades upp.

Deras parser går ibland sönder, men oftast fungerar det. Jag kommer inte helt att återberätta kärnan i sårbarheten, eftersom den analyserades i detalj av författarna till Apple Blee, jag kommer bara att beskriva min upplevelse. Jag ska bara säga att jag använder en USB Bluetooth-adapter på ett CSR 8510-chip, eftersom det fungerar mycket mer stabilt för mig än Bluetooth-adaptern som är inbyggd i en MacBook och satts in i en virtuell maskin.

Så vi fångade hashen från offrets telefon och fick de eftertraktade tre byten från hashen på telefonnumret.

Hur jag använder AirDrop istället för Tinder
Avlyssnat BLE-paket med telefonnummer-hash med hjälp av verktyget read_ble_state.py

Vi vet att i Ryssland börjar alla mobilnummer med koden +79 och troligen har vårt offers telefon samma kod. Det visar sig att vi har en rad siffror från +79000000000 till +79999999999, ungefär en miljard nummer.

För att begränsa intervallet tar vi bara de koder som faktiskt är registrerade hos vilken operatör som helst och kasserar resten. Som ett resultat blir utbudet hälften så stort, cirka en halv miljard siffror.

Därefter genererar vi sha256 från alla nummer och sparar endast de första 3 byten från varje hash. Vi lägger in den här listan i SQLite-databasen och bygger ett index för att påskynda sökningen.

Så här ser data i databasen ut:

Hur jag använder AirDrop istället för Tinder
Alla ryska telefonnummer och de första tre byten av hashen

Sedan, med offrets hash, kan vi söka efter alla matchningar i databasen. Vanligtvis är det 15-30 matchningar per hash.

Hur jag använder AirDrop istället för Tinder
Alla siffror som matchar offrets hash

Uppenbarligen används inte alla dessa siffror faktiskt. Vi kan skära av de onödiga med hjälp av en HLR-förfrågan eller ett osynligt SMS. Av 30 nummer hittades 5 online.

Hur jag använder AirDrop istället för Tinder
Resultatet av HLR-begäran. Nätverksnummer är markerade i grönt.

Jag skulle kunna fortsätta att sålla bland siffrorna, till exempel lägga till alla i Telegram/Whatsapp och titta på avatarerna, kolla igenom databaser som Getcontact och så vidare. Men det visade sig vara lättare att bara ringa alla fem nummer ett efter ett och se när offrets telefon ringer.

Hur jag använder AirDrop istället för Tinder
Målet lokaliserat

Alla

  • Floodern på raspberry pi är väldigt instabil, du måste prova andra singelbrädor.
  • En native flooder för iOS skulle vara mycket bättre, men jag kunde inte hitta en som fungerar på iOS 12-13 även med jailbreak.
  • Flooder.py-skriptet är väldigt dumt. Det skulle förmodligen kunna generera en personlig bild genom att ta namnet från mottagarens enhetsnamn och klippa ut ordet iPhone.
  • Metoden för att fastställa ett telefonnummer kan optimeras genom att endast kontrollera det faktum att numret är kopplat till iMessage. Detta kommer med största sannolikhet att ge dig nära 100 % träfffrekvens.

Slutsats

Detta är den perfekta underhållningen för tunnelbanan. Det finns en wow-effekt, nyfikna människor är intresserade av detta. Det blev mycket improvisation, det var väldigt roliga fall. Det visar sig att många är redo att spela med och till och med avbryta sina planer för att kunna kliva av vid din tunnelbanestation och gå upp för att fika. Under året träffade jag många människor och fortsätter att kommunicera med några av dem.

Ibland stänger jag av Telegram-inloggningen och har kul så här.

Hur jag använder AirDrop istället för Tinder

Hur jag använder AirDrop istället för Tinder

Källa: will.com

Lägg en kommentar