Jak používám AirDrop místo Tinderu

Jak používám AirDrop místo Tinderu

Zařízení Apple mají vynikající funkci Airdrop – je jako stvořená pro odesílání dat mezi zařízeními. V tomto případě není potřeba žádné nastavování ani předběžné párování zařízení, vše funguje hned po vybalení dvěma kliknutími. K přenosu dat slouží doplněk přes Wi-Fi, a proto se data přenášejí obrovskou rychlostí. Zároveň pomocí některých triků můžete nejen odesílat soubory, ale také zjistit telefonní číslo osoby, která je s vámi ve stejném vagónu metra.

Poslední rok tuto funkci využívám k navazování zajímavých známostí na cestě do práce, v MHD a ve veřejných stravovacích zařízeních. V průměru se mi podaří navázat několik nových známostí za den a někdy odcházím z metra ve společnosti nového člověka.

Pod řezem vám povím o všech kaki.

Jak AirDrop funguje?

Jak používám AirDrop místo Tinderu

AirDrop je protokol pro přenos souborů v rámci sítě peer-to-peer. Může fungovat jak přes běžnou lokální síť, tak vzduchem mezi libovolnými zařízeními Apple. Rozebereme si poslední případ, kdy dvě zařízení nejsou připojena ke společné síti, ale jsou prostě poblíž, například dva lidé s telefony cestují ve vagónu metra a nejsou připojeni ke společné Wi-Fi.

Jak používám AirDrop místo Tinderu
První fází přenosu přes AirDrop je odeslání paketu BLE

Pro zahájení přenosu dat přes AirDrop odešle telefon iniciátora vysílací paket BLE, který obsahuje hashované informace o účtu iCloud a telefonní číslo vlastníka zařízení iniciátora, s návrhem na navázání spojení přes AWDL (Apple Wireless Direct Link ) protokol, něco jako Wi-Fi. Fi Direct ze světa Androidu. Struktura tohoto BLE paketu je velmi zajímavá, budeme ji dále analyzovat.

Na straně příjemce může být AirDrop ve třech stavech:

  • Vypnut - nebude vůbec detekován
  • Pouze pro kontakty — přijímat soubory pouze od kontaktů ve vašem adresáři. V tomto případě se za kontakt považuje telefonní číslo nebo e-mail, se kterým je icloud účet propojen. Funguje zde stejná logika propojování účtů jako u messengeru iMessages.
  • Pro všechny - telefon bude viditelný pro všechny

Jak používám AirDrop místo Tinderu
Nastavení soukromí AirDrop. Výchozí stav je nastaven na „Pro kontakty“.

V závislosti na vašem nastavení soukromí bude telefon buď pokračovat v navazování spojení přes AWDL, nebo bude paket BLE jednoduše ignorovat. Pokud je AirDrop nastaven na „pro každého“, pak se v dalším kroku zařízení vzájemně propojí přes AWDL, vytvoří mezi sebou IPv6 síť, v rámci které bude AirDrop fungovat jako běžný aplikační protokol využívající mDNS přes standardní IP protokol.

Jak používám AirDrop místo Tinderu

Pro experimenty můžete sledovat, jak funguje AWDL na MacBooku. Veškerá výměna v rámci tohoto protokolu probíhá přes rozhraní awdl0, které lze snadno zachytit pomocí Wireshark nebo tcpdump.

V této fázi známe tři entity:

Balíček Bluetooth LowEnergy (BLE). - tento paket obsahuje data, na základě kterých telefon rozhodne, zda je iniciátor ve svém seznamu kontaktů či nikoliv.
Apple Wireless Direct Link (AWDL) — proprietární náhrada za Wi-Fi Direct od společnosti Apple, která se aktivuje, pokud byla komunikace přes BLE úspěšná.
Airdrop - aplikační protokol, který funguje v rámci běžné IP sítě využívající mDNS, HTTP atd. Může pracovat v jakékoli síti Ethernet.

Struktura paketů BLE

Může se zdát, že tento BLE paket letí pouze jednou od iniciátora k příjemci a poté dojde k výměně pouze přes AWDL. Ve skutečnosti má připojení AWDL velmi krátkou životnost, pouze několik minut nebo méně. Pokud vám tedy příjemce souboru bude chtít odpovědět, vystoupí také jako iniciátor a pošle BLE paket.

Jak telefon na straně příjemce pochopí, zda je číslo/e-mail iniciátora v jeho seznamu kontaktů nebo ne? Byl jsem velmi překvapen, když jsem se dozvěděl odpověď: iniciátor odešle své číslo a e-mail jako hash sha256, ale ne úplně, ale pouze první 3 bajty.

Jak používám AirDrop místo Tinderu
Struktura paketu BLE z iniciátoru AirDrop. Pomocí hashů z telefonního čísla a e-mailu respondent pochopí, zda je iniciátor v jeho seznamu kontaktů.

Pokud je například váš účet Apple (aka iCloud, aka iMessages) propojen s číslem +79251234567, hash z něj se vypočítá takto:

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

A v důsledku toho hodnota v BLE paketu uletí 07de58 pro telefonní číslo. Zdá se, že to nestačí, ale často tyto tři bajty stačí ke zjištění skutečného telefonního čísla.

Je také důležité si uvědomit, že nastavení soukromí AirDrop nemá vliv na data v paketu BLE. Hash telefonního čísla v něm bude obsažen, i když je nastaveno nastavení „Pro všechny“. Při otevření okna Sdílení a zadání hesla pro síť Wi-Fi je také odeslán paket BLE s hash telefonního čísla.

Pro podrobnou analýzu struktury BLE paketů a možných útoků na ni si přečtěte studii Apple Bleee a ruský překlad do Habré.

Studie Apple Bleee zveřejnila hotové python skripty pro automatizaci analýzy dat v balíčcích BLE. Vřele doporučuji podívat se na výzkum a vyzkoušet programy, je tam spousta zajímavých věcí.

AWDL (Apple Wireless Direct Link)

AWDL je proprietární doplněk společnosti Apple k běžné Wi-Fi, který implementuje něco jako Wi-Fi Direct. Úplně nevím, jak to funguje, existuje speciální způsob oznamování a koordinace kanálů a funguje pouze na proprietárních ovladačích Apple. To znamená, že přes AWDL se mohou připojit pouze MacBooky/iPhony.

Smutní majitelé telefonů s Androidem stále jen sní o správně fungující funkci Wi-Fi Direct.

Jak používám AirDrop místo Tinderu

Ale není to tak dávno, co kluci z semoo-laboratoř napsal zcela open source implementaci AWDL a nazval ji Otevřete Wireless Link (SOVA). Pro spuštění OWL musí adaptér Wi-Fi podporovat režim monitoru a vkládání paketů, takže neběží na každém hardwaru. Stránka obsahuje příklady konfigurace na Raspberry pi. Funguje to výrazně hůř než původní AWDL, například doba nastavování připojení se prodlouží o ~10 sekund místo pár sekund u originálu, ale funguje to.

Jak používám AirDrop místo Tinderu

Také tito lidé napsali od nuly implementaci protokolu AirDrop v Pythonu, tzv OpenDrop. Lze jej použít jak ve spojení s OWL ke spuštění AirDrop na Linuxu, tak s původním AWDL na macOS.

Jak srolovat přes AirDrop

Jak používám AirDrop místo Tinderu
Typická situace s rolováním přes AirDrop

Dost nudné teorie, je čas začít cvičit. Jste tedy vyzbrojeni veškerým potřebným vybavením a jste připraveni pokročit vpřed a srolovat míče pomocí špičkové technologie.

Nejprve si musíte zapamatovat hlavní body:

  • AirDrop bude fungovat, pouze pokud je telefon odemčený – nejlepší je, když se cíl neustále dívá do telefonu. Nejčastěji se tak děje na místech, kde je nuda, například v metru.
  • Potřebuji čas — obvykle dojde k pozitivní konverzi na 3-5 odeslaném obrázku, takže potřebujete alespoň 5 minut klidu na jednom místě. Za pozitivní konverzi považuji okamžik, kdy jste se přes AirDrop dohodli na pokračování komunikace v messengeru. To se za chodu těžko realizuje, protože není hned jasné, kdo přijal vaši nosnost a s největší pravděpodobností se zahřejete, než se na něčem dohodnete.
  • Personalizovaná kreativa funguje lépe — Payload nazývám mediální obsah, který odešlete přes AirDrop. Pouhý obrázek s memem s největší pravděpodobností nikam nevede, obsah by měl být relevantní k situaci a mít jasnou výzvu k akci.

Klasická metoda – jen telefon

Vhodné pro každého, kdo má iPhone, nevyžaduje žádné speciální dovednosti kromě sociálních. Přepneme AirDrop do režimu Všichni a sjedeme dolů do metra. Během normálního dne (před sebeizolací) v moskevském vagonu metra jsem pozoroval něco takového:

Jak používám AirDrop místo Tinderu
Seznam cílů

Jak můžete vidět, téměř všechny telefony vysílají jméno majitele, podle kterého můžeme snadno určit jeho pohlaví a připravit vhodnou zátěž.

Užitečné zatížení

Jak jsem psal výše, unikátní užitečné zatížení funguje lépe. V ideálním případě by obrázek měl majitele oslovit jménem. Dříve jsem musel kreativitu vyřezávat pomocí grafického editoru v aplikaci poznámky a nějakého mobilního útržku Photoshopu. Výsledkem bylo, že v době, kdy byl požadovaný obrázek nakreslen, bylo již nutné vystoupit z auta.

Moje kamarádka Anya koteeq, konkrétně na mou žádost, napsal robot Telegram, který za běhu generuje potřebné obrázky s popiskem: @AirTrollBot. Moc jí děkuji za to, že teď umím koulet koule mnohem víc technologicky než dřív.

Robotovi stačí poslat řádek textu a on jej vygeneruje ve formě obrázku, který přesně odpovídá poměru stran pro náhled v okně AirDrop. Stisknutím tlačítek můžete vybrat znak na obrázku. Volitelně můžete také povolit přidání vašeho telegramového přihlášení k obrázku v rohu.

Jak používám AirDrop místo Tinderu
Generátor užitečného zatížení

Nejhorší na tom bylo, že se obrázek okamžitě zobrazil na obrazovce oběti bez jakékoli akce. Ani jste nemuseli kliknout na „přijmout“. Bylo vidět okamžitou reakci na obličeji od načítání užitečného zatížení. Bohužel od iOS 13 se již na obrazovce nezobrazují obrázky od neznámých kontaktů. Jak to vypadalo předtím:

Jak používám AirDrop místo Tinderu
Užitečná zátěž doručena na iOS ≤12

Nyní se místo náhledu zobrazuje pouze název zařízení odesílatele. Jediným způsobem, jak kontaktovat oběť s iOS ≥13 jménem, ​​je tedy nastavit to v nastavení vašeho zařízení, například zavolat na telefon „Yulia, ahoj“. Tip: V názvu zařízení můžete použít emotikony. Tato metoda samozřejmě není tak jasná jako u obrázku, ale výrazně zvyšuje šanci na kliknutí na tlačítko „přijmout“.

Další popis akcí je nad rámec odborného článku a záleží pouze na vaší fantazii, improvizaci a humoru. Mohu jen říci, že ti, kteří se do této hry zapojí a začnou vám odpovídat obrázky nebo posílat poznámky, jsou většinou velmi veselí, otevření a zajímaví lidé. Ti, kteří po shlédnutí obrázku prostě neodpoví, nebo v horším případě zprávu prostě odmítnou, jsou většinou nudní snobi a prudérní. Často hraje roli také faktor strachu: křehcí, bázliví lidé se bojí stýkat se s tak arogantním anonymním cizincem.

Automatický sběrací stroj

Pokud jste příliš líní generovat a odesílat užitečné zatížení ručně a chcete proces automatizovat, můžete si vytvořit automatický hlasový výběrový stroj, který na pozadí bude odesílat obrázky přes AirDrop všem v dosahu. Jako hardwarovou platformu použijeme raspberry pi zero, ale poslouží každý počítač s Linuxem, hlavní je, že Wi-Fi karta podporuje režim monitoru a vkládání paketů.

Jak používám AirDrop místo Tinderu
Reproduktorový vysílač přes Airdrop založený na raspberry pi zero w + UPS Lite bateriový štít

Pro iPhony z vězení jsou programy AirDrop flooder, fungují stabilněji než otevřené verze na raspberry pi

Nastavení OWL na raspberry pi je podrobně popsáno na projektové místo, ale raději používám sestavení Kali Linuxu pro Raspberry Pi Zero, protože již má nainstalované záplaty nexmon, které umožňují režim monitoru Wi-Fi na rpi0.

Je důležité si uvědomit, že Airdrop (nebo spíše AWDL) se pacientům aktivuje až po obdržení BLE paketu. Proto jej musíme posílat v několikasekundových intervalech. To lze provést pomocí nástroje py-bluetooth-utils. Pomocí funkce start_le_advertising() posílám datový řetězec z příkladů apple bleee: 000000000000000001123412341234123400.

Jakmile budete mít funkčního démona OWL, můžete spustit můj fork opendrop. V úložišti je skript flooder.py, který každému pošle obrázek kak_dela.jpeg.

Podle mého pozorování je malina pi zero w v režimu monitoru nestabilní. Přibližně po 20 minutách aktivního provozu zaplavovače se subsystém Wi-Fi zhroutí. Problém je popsán autorem pwnagotchia je pravděpodobně způsobeno přehřátím. Je nutné zajistit hlídacího psa nebo použít stabilnější hardware

Maniacello mód - Znám vaše číslo

Pokud se chcete projevit jako neadekvátní maniak a navždy odradit od touhy s vámi dále komunikovat, můžete zkusit zjistit telefonní číslo osoby, která je poblíž.

Jak jsme se dozvěděli dříve, pakety BLE odeslané iniciátorem obsahují první tři bajty telefonního čísla sha256. Tento hash lze zachytit, když oběť klikne na tlačítko „sdílet“ a začne skenovat výsadková zařízení nebo klepne na heslo Wi-Fi pro novou síť do vstupního pole (tímto způsobem Apple hledá přátele v dosahu, od kterých můžete požádat síťové heslo).

Budete muset nějakým způsobem spustit hashovou zprávu od oběti a zachytit ji. Používám nástroje z úložiště Apple Bleee. Protože Bluetooth MAC adresy zařízení jsou náhodné a neustále se mění, budete muset najít jiný způsob, jak určit požadované zařízení v tomto seznamu. Úkol je zjednodušen tím, že iOS vysílá aktuální stav telefonu jako: vypnutá obrazovka, zapnutá obrazovka, zamčená obrazovka, odemčeno atd. Proto pouhým pozorováním akcí oběti můžete porovnat aktuální stav zařízení se zařízením v tabulce. Nejjednodušší je zachytit okamžik, kdy uživatel vytáhne telefon z kapsy, zapne displej a odemkne telefon prstem nebo obličejem. To vše bude vidět ve snifferu.

Jak používám AirDrop místo Tinderu
ikona Х znamená, že byl zachycen paket s hašemi telefonu.

Jejich parser se občas porouchá, ale většinou to funguje. Nebudu úplně převyprávět podstatu zranitelnosti, jelikož ji podrobně rozebrali autoři Apple Blee, popíšu pouze svou zkušenost. Řeknu jen, že používám USB Bluetooth adaptér na čipu CSR 8510, protože pro mě funguje mnohem stabilněji než Bluetooth adaptér zabudovaný do MacBooku a vložený do virtuálního stroje.

Chytili jsme tedy hash z telefonu oběti a obdrželi kýžené tři bajty z hashe telefonního čísla.

Jak používám AirDrop místo Tinderu
Zachycený paket BLE s hashem telefonního čísla pomocí nástroje read_ble_state.py

Víme, že v Rusku všechna mobilní čísla začínají kódem +79 a s největší pravděpodobností má telefon naší oběti stejný kód. Ukazuje se, že máme rozsah čísel od +79000000000 do +79999999999, tedy asi miliardu čísel.

Abychom zúžili rozsah, vezmeme pouze kódy, které jsou skutečně zaregistrovány u jakéhokoli operátora, a zbytek zahodíme. V důsledku toho je rozsah poloviční, přibližně půl miliardy čísel.

Dále vygenerujeme sha256 ze všech čísel a uložíme pouze první 3 bajty z každého hashe. Tento seznam zadáme do databáze Sqlite a vytvoříme index pro urychlení vyhledávání.

Takto vypadají data v databázi:

Jak používám AirDrop místo Tinderu
Všechna ruská telefonní čísla a první tři bajty hashe

Poté, když máme hash oběti, můžeme vyhledat všechny shody v databázi. Obvykle je 15-30 shod na hash.

Jak používám AirDrop místo Tinderu
Všechna čísla, která odpovídají hash oběti

Je zřejmé, že ne všechna tato čísla jsou skutečně použita. Ty nepotřebné můžeme odříznout pomocí požadavku HLR nebo neviditelné SMS. Ze 30 čísel bylo 5 nalezeno online.

Jak používám AirDrop místo Tinderu
Výsledek požadavku HLR. Síťová čísla jsou zvýrazněna zeleně.

Mohl bych pokračovat v prosévání čísel, například, přidat je všechna do Telegramu/Whatsapp a podívat se na avatary, zkontrolovat databáze jako Getcontact a tak dále. Ukázalo se však, že je jednodušší zavolat postupně na všech pět čísel a sledovat, kdy oběti zazvoní telefon.

Jak používám AirDrop místo Tinderu
Cíl lokalizován

Vše

  • Povodeň na raspberry pi je velmi nestabilní, je třeba vyzkoušet jiné single desky.
  • Nativní Flooder pro iOS by byl mnohem lepší, ale nenašel jsem takový, který by fungoval na iOS 12-13 i s jailbreakem.
  • Skript flooder.py je velmi hloupý. Pravděpodobně by mohl vygenerovat personalizovaný obrázek převzetím jména z názvu zařízení příjemce a vyříznutím slova iPhone.
  • Způsob určování telefonního čísla lze optimalizovat kontrolou pouze toho, že je číslo propojeno s iMessage. To vám s největší pravděpodobností poskytne téměř 100% úspěšnost.

Závěr

To je ideální zábava pro metro. Vzniká wow efekt, zvědavci se o to zajímají. Hodně se improvizovalo, byly tam velmi vtipné případy. Ukazuje se, že mnoho lidí je připraveno hrát s vámi a dokonce zrušit své plány, aby mohli vystoupit na vaší stanici metra a jít na kávu. Během roku jsem potkal spoustu lidí a s některými i nadále komunikuji.

Občas vypnu přihlášení do Telegramu a bavím se takhle.

Jak používám AirDrop místo Tinderu

Jak používám AirDrop místo Tinderu

Zdroj: www.habr.com

Přidat komentář