Jak korzystam z AirDrop zamiast Tindera

Jak korzystam z AirDrop zamiast Tindera

Urządzenia Apple mają doskonałą funkcję Airdrop - służy ona do przesyłania danych pomiędzy urządzeniami. W tym przypadku nie jest wymagana żadna konfiguracja ani wstępne parowanie urządzeń, wszystko działa od razu za pomocą dwóch kliknięć. Do przesyłania danych służy dodatek przez Wi-Fi, dlatego dane są przesyłane z ogromnymi prędkościami. Jednocześnie, stosując pewne sztuczki, możesz nie tylko wysłać pliki, ale także poznać numer telefonu osoby, która jest z Tobą w tym samym wagonie metra.

Od roku wykorzystuję tę funkcję do nawiązywania ciekawych znajomości w drodze do pracy, w komunikacji miejskiej i w ogólnodostępnych placówkach gastronomicznych. Średnio udaje mi się nawiązać kilka nowych znajomości dziennie, a czasami wychodzę z metra w towarzystwie nowej osoby.

Pod cięciem opowiem ci o wszystkich persimmonach.

Jak działa AirDrop?

Jak korzystam z AirDrop zamiast Tindera

AirDrop to protokół przesyłania plików w sieci peer-to-peer. Może pracować zarówno w zwykłej sieci lokalnej, jak i bezprzewodowo pomiędzy dowolnymi urządzeniami Apple. Przeanalizujemy ostatni przypadek, gdy dwa urządzenia nie są podłączone do wspólnej sieci, ale po prostu znajdują się w pobliżu, np. dwie osoby z telefonami podróżują wagonem metra i nie są podłączone do wspólnego Wi-Fi.

Jak korzystam z AirDrop zamiast Tindera
Pierwszym etapem transmisji poprzez AirDrop jest wysłanie pakietu BLE

Aby zainicjować transmisję danych poprzez AirDrop, telefon inicjatora wysyła pakiet rozgłoszeniowy BLE, który zawiera zaszyfrowaną informację o koncie iCloud oraz numerze telefonu właściciela urządzeń inicjatora, z propozycją nawiązania połączenia poprzez AWDL (Apple Wireless Direct Link ) protokół coś w rodzaju Wi-Fi Fi Direct ze świata Androida. Struktura tego pakietu BLE jest bardzo interesująca, przeanalizujemy ją dalej.

Po stronie odbiorcy AirDrop może znajdować się w trzech stanach:

  • Wyłączony - w ogóle nie zostanie wykryty
  • Tylko do kontaktów — akceptuj pliki tylko od kontaktów z Twojej książki adresowej. W takim przypadku za kontakt uważa się numer telefonu lub adres e-mail, z którym powiązane jest konto icloud. Działa tu ta sama logika łączenia kont, co w przypadku komunikatora iMessages.
  • Dla wszystkich - telefon będzie widoczny dla wszystkich

Jak korzystam z AirDrop zamiast Tindera
Ustawienia prywatności AirDrop. Domyślny status to „Dla kontaktów”.

W zależności od ustawień prywatności telefon albo będzie nadal nawiązywał połączenie za pośrednictwem AWDL, albo po prostu zignoruje pakiet BLE. Jeśli AirDrop jest ustawiony na „dla wszystkich”, to w kolejnym kroku urządzenia połączą się ze sobą poprzez AWDL, utworzą między sobą sieć IPv6, w ramach której AirDrop będzie działał jak zwykły protokół aplikacji wykorzystujący mDNS po standardowym protokole IP.

Jak korzystam z AirDrop zamiast Tindera

W przypadku eksperymentów możesz obejrzeć, jak AWDL działa na MacBooku. Wszelka wymiana w ramach tego protokołu odbywa się poprzez interfejs awdl0, które można łatwo przechwycić za pomocą programu Wireshark lub tcpdump.

Na tym etapie znamy trzy podmioty:

Pakiet Bluetooth LowEnergy (BLE). - pakiet ten zawiera dane, na podstawie których telefon decyduje, czy inicjator znajduje się na jego liście kontaktów, czy też nie.
Bezpośrednie łącze bezprzewodowe Apple (AWDL) — autorski zamiennik Wi-Fi Direct firmy Apple, aktywowany w przypadku pomyślnej komunikacji przez BLE.
zrzut - protokół aplikacji działający w zwykłej sieci IP przy użyciu mDNS, HTTP itp. Może pracować w dowolnej sieci Ethernet.

Struktura pakietów BLE

Może się wydawać, że ten pakiet BLE leci tylko raz od inicjatora do odbiorcy, a następnie wymiana następuje już tylko poprzez AWDL. W rzeczywistości połączenie AWDL ma bardzo krótką żywotność, tylko kilka minut lub mniej. Jeśli więc odbiorca pliku będzie chciał Ci odpowiedzieć, również wystąpi jako inicjator i wyśle ​​pakiet BLE.

W jaki sposób telefon odbiorcy rozumie, czy numer/adres e-mail inicjatora znajduje się na jego liście kontaktów, czy nie? Bardzo się zdziwiłem, gdy usłyszałem odpowiedź: inicjator wysyła swój numer i adres e-mail jako skrót sha256, ale nie całkowicie, ale tylko pierwsze 3 bajty.

Jak korzystam z AirDrop zamiast Tindera
Struktura pakietu BLE z inicjatora AirDrop. Używając skrótów z numeru telefonu i adresu e-mail, respondent rozumie, czy inicjator znajduje się na jego liście kontaktów.

Na przykład, jeśli Twoje konto Apple (aka iCloud, czyli iMessages) jest połączone z numerem +79251234567, skrót z niego zostanie obliczony w następujący sposób:

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

W rezultacie wartość w pakiecie BLE odleci 07de58 na numer telefonu. Wydaje się to niewystarczające, ale często te trzy bajty wystarczą, aby znaleźć prawdziwy numer telefonu.

Należy również pamiętać, że ustawienie prywatności AirDrop nie ma wpływu na dane zawarte w pakiecie BLE. Będzie w nim zawarty skrót numeru telefonu, nawet jeśli ustawione jest ustawienie „Dla wszystkich”. Pakiet BLE zawierający hash numeru telefonu wysyłany jest także po otwarciu okna Udostępnij i wpisaniu hasła do sieci Wi-Fi.

Szczegółową analizę struktury pakietów BLE i możliwych ataków na nie można znaleźć w badaniu Bleee jabłkowe i rosyjski tłumaczenie na Habré.

W badaniu Apple Bleee opublikowano gotowe skrypty w Pythonie służące do automatyzacji analizy danych w pakietach BLE. Gorąco polecam zapoznanie się z badaniami i wypróbowanie programów, jest tam wiele interesujących rzeczy.

AWDL (bezpośrednie łącze bezprzewodowe Apple)

AWDL to zastrzeżony dodatek Apple do zwykłej sieci Wi-Fi, który implementuje coś na wzór Wi-Fi Direct. Nie do końca wiem jak to działa, jest specjalny sposób ogłaszania i koordynowania kanałów i działa tylko na firmowych sterownikach Apple. Oznacza to, że tylko MacBooki/iPhone'y mogą łączyć się przez AWDL.

Smutni posiadacze telefonów z Androidem wciąż marzą jedynie o prawidłowo działającej funkcji Wi-Fi Direct.

Jak korzystam z AirDrop zamiast Tindera

Ale nie tak dawno temu chłopaki z laboratorium wydające się napisał całkowicie otwartą implementację AWDL i nazwał ją Otwórz łącze bezprzewodowe (SOWA). Aby uruchomić OWL, adapter Wi-Fi musi obsługiwać tryb monitorowania i wstrzykiwanie pakietów, więc nie będzie działać na każdym sprzęcie. Na stronie znajdują się przykłady konfiguracji na Raspberry pi. Działa to znacznie gorzej niż oryginalny AWDL, na przykład czas konfiguracji połączenia wydłuża się o ~10 sekund zamiast o kilka sekund w przypadku oryginału, ale działa.

Jak korzystam z AirDrop zamiast Tindera

Ponadto ci goście napisali od podstaw implementację protokołu AirDrop w Pythonie o nazwie Otwórz Drop. Można go używać zarówno w połączeniu z OWL do uruchamiania AirDrop na Linuksie, jak i z oryginalnym AWDL na macOS.

Jak zwinąć za pomocą AirDrop

Jak korzystam z AirDrop zamiast Tindera
Typowa sytuacja przy zwijaniu za pomocą AirDrop

Dość nudnej teorii, czas zacząć ćwiczyć. Jesteś więc uzbrojony we cały niezbędny sprzęt i jesteś gotowy, aby ruszyć do przodu i zwijać piłki przy użyciu zaawansowanej technologii.

Najpierw musisz pamiętać o głównych punktach:

  • AirDrop będzie działać tylko wtedy, gdy telefon jest odblokowany – najlepiej, jeśli cel cały czas patrzy na telefon. Najczęściej dzieje się to w miejscach, gdzie jest nudno, np. w metrze.
  • Potrzebuję czasu — zazwyczaj pozytywna konwersja następuje już przy 3-5 przesłanym obrazie, dlatego potrzebne jest przynajmniej 5 minut spokoju w jednym miejscu. Za pozytywną konwersję uważam moment, w którym zgodziłeś się poprzez AirDrop na dalszą komunikację w komunikatorze. Jest to trudne do wdrożenia na bieżąco, ponieważ nie jest od razu jasne, kto przyjął Twój ładunek, a najprawdopodobniej rozgrzejesz się, zanim będziesz mógł się na coś zgodzić.
  • Spersonalizowane kreacje działają lepiej — Nazywam ładunkiem zawartość multimedialną wysyłaną za pośrednictwem AirDrop. Samo zdjęcie z memem najprawdopodobniej do niczego nie doprowadzi; treść powinna być adekwatna do sytuacji i zawierać jasne wezwanie do działania.

Metoda klasyczna – wystarczy telefon

Nadaje się dla każdego posiadacza iPhone'a, nie wymaga żadnych specjalnych umiejętności innych niż społeczne. Przełączamy AirDrop na tryb „Wszyscy” i schodzimy do metra. Pewnego normalnego dnia (przed izolacją) w wagonie moskiewskiego metra zaobserwowałem coś takiego:

Jak korzystam z AirDrop zamiast Tindera
Lista celów

Jak widać, prawie wszystkie telefony transmitują imię i nazwisko właściciela, po czym łatwo możemy określić jego płeć i przygotować odpowiedni ładunek.

Ładunek

Jak pisałem powyżej, unikalny ładunek działa lepiej. Idealnie byłoby, gdyby zdjęcie zwracało się do właściciela po imieniu. Wcześniej musiałem kształtować kreatywność za pomocą edytora graficznego w aplikacji do notatek i jakiegoś mobilnego kodu pośredniczącego w Photoshopie. W rezultacie, zanim powstał wymagany obraz, trzeba było już wysiąść z samochodu.

Moja przyjaciółka Ania koteeqspecjalnie na moją prośbę napisał bot Telegramu, który na bieżąco generuje niezbędne zdjęcia z podpisem: @AirTrollBot. Bardzo jej dziękuję za to, że mogę teraz toczyć piłki dużo bardziej technologicznie niż wcześniej.

Wystarczy wysłać botowi linijkę tekstu, a on wygeneruje ją w postaci obrazu dokładnie odpowiadającego proporcjom obrazu podglądu w oknie AirDrop. Możesz wybrać postać na obrazku, naciskając przyciski. Opcjonalnie możesz także włączyć dodanie swojego loginu Telegram do zdjęcia w rogu.

Jak korzystam z AirDrop zamiast Tindera
Generator ładunku

Najgorsze było to, że obraz pojawił się natychmiast na ekranie ofiary, bez żadnej akcji. Nie trzeba było nawet klikać „zaakceptuj”. Widać było natychmiastową reakcję twarzy po załadowaniu ładunku. Niestety od wersji iOS 13 zdjęcia nieznanych kontaktów nie są już wyświetlane na ekranie. Oto jak to wyglądało wcześniej:

Jak korzystam z AirDrop zamiast Tindera
Ładunek dostarczony na iOS ≤12

Teraz zamiast podglądu wyświetlana jest tylko nazwa urządzenia nadawcy. Dlatego jedyną możliwością skontaktowania się po imieniu z ofiarą posiadającą iOS ≥13 jest ustawienie jej w ustawieniach swojego urządzenia, np. nazwanie telefonu „Hej, Julia”. Wskazówka: w nazwie urządzenia możesz używać emoji. Oczywiście ta metoda nie jest tak jasna jak w przypadku zdjęcia, ale znacznie zwiększa szansę na kliknięcie przycisku „zaakceptuj”.

Dalszy opis działań wykracza poza zakres artykułu technicznego i zależy wyłącznie od Twojej wyobraźni, improwizacji i humoru. Mogę tylko powiedzieć, że ci, którzy przyłączają się do tej gry i zaczynają odpowiadać zdjęciami lub wysyłać notatki, są zazwyczaj bardzo wesołymi, otwartymi i ciekawymi ludźmi. Ci, którzy po obejrzeniu zdjęcia po prostu nie reagują lub, co gorsza, po prostu odrzucają przekaz, są zwykle nudnymi snobami i pruderiami. Czynnik strachu również często odgrywa rolę: delikatni, nieśmiali ludzie boją się interakcji z tak aroganckim anonimowym nieznajomym.

Automatyczna maszyna pick-pick

Jeśli jesteś zbyt leniwy, aby ręcznie generować i wysyłać ładunki, a chcesz zautomatyzować proces, możesz stworzyć automatyczną maszynę wybierania głosowego, która w tle będzie wysyłać zdjęcia za pośrednictwem AirDrop do wszystkich osób w zasięgu. Będziemy używać Raspberry Pi Zero jako platformy sprzętowej, ale zrobi to każdy komputer z Linuksem, najważniejsze jest to, że karta Wi-Fi obsługuje tryb monitorowania i wstrzykiwanie pakietów.

Jak korzystam z AirDrop zamiast Tindera
Nadawca głośnika za pośrednictwem Airdrop w oparciu o raspberry pi zero z osłoną akumulatora UPS Lite

Istnieją programy typu Flooder AirDrop dla iPhone'ów Jailbreak, działają one stabilniej niż otwarte wersje na Raspberry Pi

Konfigurowanie OWL na raspberry pi opisano szczegółowo pod adresem strona projektu, ale wolę używać kompilacji Kali Linux dla Raspberry Pi Zero, ponieważ ma już zainstalowane poprawki Nexmon umożliwiające tryb monitorowania Wi-Fi na rpi0.

Warto pamiętać, że Airdrop (a raczej AWDL) jest aktywowany u pacjentów dopiero po otrzymaniu pakietu BLE. Dlatego musimy go wysyłać w kilkusekundowych odstępach. Można to zrobić za pomocą narzędzia py-bluetooth-utils. Korzystając z funkcji start_le_advertising() wysyłam ciąg danych z przykładów Apple bleee: 000000000000000001123412341234123400.

Kiedy już będziesz mieć działającego demona OWL, możesz uruchomić mój fork otwarta. W repozytorium znajduje się skrypt flooder.py, który wysyła każdemu zdjęcie kak_dela.jpeg.

Z moich obserwacji wynika, że ​​raspberry pi zero w jest niestabilne w trybie monitora. Po około 20 minutach aktywnego działania Floodera następuje awaria podsystemu Wi-Fi. Problem opisuje autor pwnagotchii prawdopodobnie jest spowodowane przegrzaniem. Konieczne jest zapewnienie watchdoga lub użycie bardziej stabilnego sprzętu

Tryb Maniacello - znam Twój numer

Jeśli chcesz pokazać się jako nieodpowiedni maniak i na zawsze zniechęcić do dalszej komunikacji z Tobą, możesz spróbować poznać numer telefonu osoby znajdującej się w pobliżu.

Jak dowiedzieliśmy się wcześniej, pakiety BLE wysyłane przez inicjatora zawierają pierwsze trzy bajty numeru telefonu sha256. Ten skrót można przechwycić, gdy ofiara kliknie przycisk „udostępnij” i rozpocznie skanowanie urządzeń zrzutowych lub w polu wejściowym dotknie hasła Wi-Fi dla nowej sieci (w ten sposób Apple szuka znajomych w zasięgu, od których możesz poprosić hasło sieciowe).

Będziesz musiał w jakiś sposób wywołać wiadomość skrótu od ofiary i przechwycić ją. Używam narzędzi z repozytorium Bleee jabłkowe. Ponieważ adresy MAC urządzeń Bluetooth są losowe i stale się zmieniają, będziesz musiał znaleźć inny sposób na określenie żądanego urządzenia na tej liście. Zadanie jest uproszczone przez fakt, że iOS transmituje aktualny stan telefonu, taki jak: ekran wyłączony, ekran włączony, ekran blokady, odblokowany itp. Dlatego po prostu obserwując działania ofiary, możesz porównać aktualny stan urządzenia z urządzeniem z tabeli. Najłatwiej jest uchwycić moment, w którym użytkownik wyjmuje telefon z kieszeni, włącza ekran i odblokowuje telefon palcem lub twarzą. Wszystko to będzie widoczne w snifferze.

Jak korzystam z AirDrop zamiast Tindera
ikona Х oznacza, że ​​przechwycono pakiet zawierający skróty telefoniczne.

Ich parser czasami się psuje, ale najczęściej działa. Nie będę całkowicie opisywał istoty luki, ponieważ została ona szczegółowo przeanalizowana przez autorów Apple Blee, opiszę jedynie moje doświadczenia. Powiem tylko, że używam adaptera USB Bluetooth na chipie CSR 8510, ponieważ działa on dla mnie znacznie stabilniej niż adapter Bluetooth wbudowany w MacBooka i włożony do maszyny wirtualnej.

Przechwyciliśmy więc skrót z telefonu ofiary i otrzymaliśmy pożądane trzy bajty z skrótu numeru telefonu.

Jak korzystam z AirDrop zamiast Tindera
Przechwycono pakiet BLE ze skrótem numeru telefonu za pomocą narzędzia read_ble_state.py

Wiemy, że w Rosji wszystkie numery telefonów komórkowych zaczynają się od kodu +79 i najprawdopodobniej telefon naszej ofiary ma ten sam kod. Okazuje się, że mamy zakres liczb od +79000000000 do +79999999999, czyli około miliarda liczb.

Aby zawęzić zakres, bierzemy tylko te kody, które faktycznie są zarejestrowane u dowolnego operatora, a resztę odrzucamy. W rezultacie zakres staje się o połowę mniejszy i wynosi około pół miliarda liczb.

Następnie generujemy sha256 ze wszystkich liczb i zapisujemy tylko pierwsze 3 bajty z każdego skrótu. Wprowadzamy tę listę do bazy Sqlite i budujemy indeks, aby przyspieszyć wyszukiwanie.

Tak wyglądają dane w bazie danych:

Jak korzystam z AirDrop zamiast Tindera
Wszystkie rosyjskie numery telefonów i pierwsze trzy bajty skrótu

Następnie mając hash ofiary możemy wyszukać w bazie danych wszystkie dopasowania. Zazwyczaj na hash przypada 15-30 dopasowań.

Jak korzystam z AirDrop zamiast Tindera
Wszystkie liczby pasujące do skrótu ofiary

Oczywiście nie wszystkie z tych liczb są faktycznie używane. Te niepotrzebne możemy odciąć za pomocą żądania HLR lub niewidocznego SMS-a. Spośród 30 numerów 5 zostało znalezionych w Internecie.

Jak korzystam z AirDrop zamiast Tindera
Wynik żądania HLR. Numery sieci są podświetlone na zielono.

Mógłbym nadal przeglądać liczby, na przykład dodać je wszystkie do Telegramu/Whatsapp i przeglądać awatary, przeglądać bazy danych, takie jak Getcontact i tak dalej. Okazało się jednak, że łatwiej było po prostu zadzwonić pod wszystkie pięć numerów jeden po drugim i obserwować, kiedy dzwoni telefon ofiary.

Jak korzystam z AirDrop zamiast Tindera
Cel zlokalizowany

wszystko

  • Zalewacz na raspberry pi jest bardzo niestabilny, musisz wypróbować inne pojedyncze płytki.
  • Natywny Flood dla iOS byłby znacznie lepszy, ale nie mogłem znaleźć takiego, który działałby na iOS 12-13 nawet z jailbreakiem.
  • Skrypt Flooder.py jest bardzo głupi. Prawdopodobnie mogłaby wygenerować spersonalizowany obraz, pobierając nazwę z nazwy urządzenia odbiorcy i wycinając słowo iPhone.
  • Sposób ustalania numeru telefonu można zoptymalizować sprawdzając jedynie fakt, że numer jest powiązany z iMessage. Najprawdopodobniej da ci to współczynnik trafień bliski 100%.

wniosek

To idealna rozrywka dla metra. Jest efekt wow, ciekawscy są tym zainteresowani. Było dużo improwizacji, zdarzały się bardzo zabawne przypadki. Okazuje się, że wiele osób jest gotowych na wspólną zabawę, a nawet rezygnację z planów, aby wysiąść na Twojej stacji metra i udać się na kawę. W ciągu tego roku poznałem wiele osób, z niektórymi nadal utrzymuję kontakt.

Czasami wyłączam logowanie do Telegramu i dobrze się bawię tak.

Jak korzystam z AirDrop zamiast Tindera

Jak korzystam z AirDrop zamiast Tindera

Źródło: www.habr.com

Dodaj komentarz