Como uso AirDrop en lugar de Tinder

Como uso AirDrop en lugar de Tinder

Os dispositivos Apple teñen unha excelente función Airdrop: está feita para enviar datos entre dispositivos. Neste caso, non é necesaria ningunha configuración ou emparejamento preliminar de dispositivos; todo funciona fóra da caixa en dous clics. Utilízase un complemento por wifi para transferir datos e, polo tanto, os datos transfírense a velocidades enormes. Ao mesmo tempo, usando algúns trucos, non só podes enviar ficheiros, senón tamén descubrir o número de teléfono da persoa que está no mesmo vagón do metro contigo.

Dende hai un ano utilizo esta función para facer interesantes coñecidos no camiño do traballo, no transporte público e nos establecementos de restauración. De media, consigo facer varios novos coñecidos ao día, e ás veces saio do metro en compañía dunha nova persoa.

Baixo o corte vouvos falar de todos os caquis.

Como funciona AirDrop?

Como uso AirDrop en lugar de Tinder

AirDrop é un protocolo para transferir ficheiros dentro dunha rede peer-to-peer. Pode funcionar tanto nunha rede local normal como por aire entre calquera dispositivo Apple. Analizaremos o último caso, cando dous dispositivos non están conectados a unha rede común, senón que simplemente están preto, por exemplo, dúas persoas con teléfonos viaxan nun vagón de metro e non están conectadas a unha rede Wi-Fi común.

Como uso AirDrop en lugar de Tinder
A primeira etapa da transmisión a través de AirDrop é o envío dun paquete BLE

Para iniciar a transferencia de datos a través de AirDrop, o teléfono do iniciador envía un paquete de transmisión BLE, que contén información hash sobre a conta de iCloud e o número de teléfono do propietario dos dispositivos do iniciador, coa proposta de establecer unha conexión a través do AWDL (Apple Wireless Direct Link). ), algo así como Wi-Fi. Fi Direct do mundo de Android. A estrutura deste paquete BLE é moi interesante, analizarémola máis adiante.

Por parte do destinatario, AirDrop pode estar en tres estados:

  • Apagado - non se detectará en absoluto
  • Só para contactos — acepta ficheiros só dos contactos da súa axenda de enderezos. Neste caso, considérase que o contacto é o número de teléfono ou correo electrónico ao que está vinculada a conta de icloud. A mesma lóxica para vincular contas funciona aquí que co mensaxeiro de iMessages.
  • Para todos - o teléfono será visible para todos

Como uso AirDrop en lugar de Tinder
Configuración de privacidade de AirDrop. O estado predeterminado está configurado en "Para contactos".

Dependendo da súa configuración de privacidade, o teléfono seguirá establecendo unha conexión a través de AWDL ou simplemente ignorará o paquete BLE. Se AirDrop está configurado como "para todos", entón no seguinte paso os dispositivos conectaranse entre si a través de AWDL, crearán unha rede IPv6 entre eles, dentro da cal AirDrop funcionará como un protocolo de aplicación normal usando mDNS sobre o protocolo IP estándar.

Como uso AirDrop en lugar de Tinder

Para experimentos, podes ver como funciona AWDL nun MacBook. Todo o intercambio baixo este protocolo ocorre a través da interface awdl0, que se pode capturar facilmente usando Wireshark ou tcpdump.

Nesta fase coñecemos tres entidades:

Paquete Bluetooth LowEnergy (BLE). - este paquete contén datos en función dos cales o teléfono decide se o iniciador está ou non na súa lista de contactos.
Enlace directo sen fíos de Apple (AWDL) — un substituto propietario de Wi-Fi Direct de Apple, activado se a comunicación a través de BLE foi exitosa.
AirDrop - un protocolo de aplicación que funciona nunha rede IP normal usando mDNS, HTTP, etc. Pode funcionar en calquera rede Ethernet.

Estrutura do paquete BLE

Pode parecer que este paquete BLE voa só unha vez desde o iniciador ao destinatario, e entón o intercambio ocorre só a través de AWDL. En realidade, unha conexión AWDL ten unha vida útil moi curta, só uns minutos ou menos. Así, se o destinatario do ficheiro quere responderche, tamén actuará como iniciador e enviará un paquete BLE.

Como entende o teléfono do receptor se o número/correo electrónico do iniciador está ou non na súa lista de contactos? Sorprendeume moito cando descubrín a resposta: o iniciador envía o seu número e correo electrónico como un hash sha256, pero non totalmente, senón só os 3 primeiros bytes.

Como uso AirDrop en lugar de Tinder
Estrutura dun paquete BLE do iniciador AirDrop. Usando hash do número de teléfono e correo electrónico, o respondedor comprende se o iniciador está na súa lista de contactos.

Por exemplo, se a túa conta de Apple (tamén coñecida como iCloud, tamén coñecida como iMessages) está ligada ao número +79251234567, o hash da mesma calcularase así:

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

E como resultado, o valor do paquete BLE desaparecerá voando 07 de 58 para un número de teléfono. Isto non parece suficiente, pero moitas veces estes tres bytes son suficientes para descubrir o número de teléfono real.

Tamén é importante lembrar que a configuración de privacidade de AirDrop non afecta aos datos do paquete BLE. O hash do número de teléfono estará contido nel, aínda que se estableza a opción "Para todos". Ademais, envíase un paquete BLE cun hash do número de teléfono cando se abre a xanela Compartir e cando se introduce o contrasinal da rede Wi-Fi.

Para unha análise detallada da estrutura dos paquetes BLE e dos posibles ataques contra ela, lea o estudo Apple Bleee e ruso tradución a Habré.

O estudo de Apple Bleee publicou scripts Python preparados para automatizar a análise de datos en paquetes BLE. Recomendo encarecidamente consultar a investigación e probar os programas, hai moitas cousas interesantes.

AWDL (Apple Wireless Direct Link)

AWDL é un complemento propietario de Apple para a wifi normal que implementa algo como Wi-Fi Direct. Non sei ben como funciona, hai unha forma especial de anunciar e coordinar canles, e só funciona nos controladores propietarios de Apple. É dicir, só os MacBook/iPhone poden conectarse mediante AWDL.

Os tristes propietarios de teléfonos Android aínda só soñan cunha función Wi-Fi Direct que funcione correctamente.

Como uso AirDrop en lugar de Tinder

Pero non hai moito tempo os mozos de seemoo-lab escribiu unha implementación de código aberto de AWDL e chamouna Abre a ligazón sen fíos (CUUXO). Para executar OWL, o adaptador Wi-Fi debe admitir o modo de monitor e a inxección de paquetes, polo que non se executa en todos os hardwares. O sitio ten exemplos de configuración en Raspberry pi. Isto funciona moito peor que o AWDL orixinal, por exemplo, o tempo de configuración da conexión amplíase en ~ 10 segundos en lugar de un par de segundos para o orixinal, pero funciona.

Como uso AirDrop en lugar de Tinder

Ademais, estes mozos escribiron desde cero unha implementación do protocolo AirDrop en Python, chamada OpenDrop. Pódese usar tanto en conxunto con OWL para lanzar AirDrop en Linux como co AWDL orixinal en macOS.

Como enrolar a través de AirDrop

Como uso AirDrop en lugar de Tinder
Situación típica con enrolar a través de AirDrop

Basta de teoría aburrida, é hora de comezar a practicar. Así que estás armado con todo o equipo necesario e estás preparado para avanzar e enrolar bolas usando alta tecnoloxía.

Primeiro cómpre lembrar os puntos principais:

  • AirDrop só funcionará se o teléfono está desbloqueado - é mellor se o obxectivo está mirando constantemente o teléfono. A maioría das veces isto ocorre en lugares onde é aburrido, por exemplo, no metro.
  • Necesita tempo — normalmente, unha conversión positiva prodúcese na imaxe 3-5 enviada, polo que necesitas polo menos 5 minutos de silencio nun só lugar. Considero que unha conversión positiva é o momento no que aceptaches a través de AirDrop seguir comunicándose no messenger. Isto é difícil de implementar sobre a marcha, porque non está claro de inmediato quen aceptou a túa carga útil e, moi probablemente, quentarás antes de pór de acordo en algo.
  • A creatividade personalizada funciona mellor — Chamo payload ao contido multimedia que envías a través de AirDrop. Só unha imaxe cun meme probablemente non levará a ningún lado; o contido debe ser relevante para a situación e ter unha chamada á acción clara.

O método clásico - só un teléfono

Adecuado para todos os que teñan un iPhone, non requiren habilidades especiais que non sexan as sociais. Cambiamos AirDrop ao modo Todos e baixamos ao metro. Nun día normal (antes do autoillamento) nun vagón do metro de Moscova, observei algo así:

Como uso AirDrop en lugar de Tinder
Lista de obxectivos

Como podes ver, case todos os teléfonos transmiten o nome do propietario, polo que podemos determinar facilmente o seu sexo e preparar a carga útil adecuada.

Carga útil

Como escribín arriba, unha carga útil única funciona mellor. Idealmente, a imaxe debería dirixirse ao propietario polo nome. Anteriormente, tiña que esculpir a creatividade usando un editor gráfico na aplicación de notas e algún tipo de talón de Photoshop para móbiles. Como resultado, cando se debuxou a imaxe requirida, xa era necesario saír do coche.

A miña amiga Anya lugareq, concretamente a petición miña, escribiu un bot de Telegram que xera as imaxes necesarias cunha lenda sobre a marcha: @AirTrollBot. Agradézolle moito que agora podo rodar as bólas moito máis tecnoloxicamente que antes.

Basta con enviarlle ao bot unha liña de texto e xerarao en forma de imaxe que coincida exactamente coa relación de aspecto da vista previa na xanela de AirDrop. Pode seleccionar un personaxe da imaxe premendo os botóns. Tamén podes activar opcionalmente engadir o teu inicio de sesión de Telegram á imaxe da esquina.

Como uso AirDrop en lugar de Tinder
Xerador de carga útil

O peor foi que a imaxe apareceu inmediatamente na pantalla da vítima sen ningunha acción. Nin sequera tivo que facer clic en "aceptar". Poderías ver a reacción instantánea na cara ao cargar a carga útil. Desafortunadamente, a partir de iOS 13, as imaxes de contactos descoñecidos xa non se mostran na pantalla. Aquí tes o que parecía antes:

Como uso AirDrop en lugar de Tinder
Carga útil entregada en iOS ≤12

Agora, en lugar dunha vista previa, só se mostra o nome do dispositivo do remitente. Polo tanto, o único xeito de poñerse en contacto cunha vítima con iOS ≥13 polo seu nome é configuralo na configuración do teu dispositivo, por exemplo, chamando ao teléfono "Yulia, ola". Consello: podes usar emoji no nome do dispositivo. Por suposto, este método non é tan brillante como cunha imaxe, pero aumenta moito a posibilidade de facer clic no botón "aceptar".

A descrición máis detallada das accións está fóra do alcance dun artigo técnico e depende só da túa imaxinación, improvisación e humor. Só podo dicir que os que se unen a este xogo e comezan a responderche con imaxes ou enviando notas adoitan ser xente moi alegre, aberta e interesante. Os que, despois de mirar a imaxe, simplemente non responden, ou peor aínda, simplemente rexeitan a mensaxe, adoitan ser aburridos esnobs e mojidos. O factor medo tamén xoga a miúdo un papel: as persoas fráxiles e tímidas teñen medo de interactuar con un estraño anónimo tan arrogante.

Máquina pick-pick automática

Se che é demasiado preguiceiro para xerar e enviar cargas útiles manualmente e queres automatizar o proceso, podes facer unha máquina automática de selección de voz, que en segundo plano enviará imaxes a través de AirDrop a todos os que estean ao alcance. Usaremos a Raspberry Pi Zero como plataforma de hardware, pero calquera ordenador con Linux fará, o principal é que a tarxeta Wi-Fi admite o modo monitor e a inxección de paquetes.

Como uso AirDrop en lugar de Tinder
Remitente do altofalante mediante Airdrop baseado en raspberry pi zero w + protector de batería UPS Lite

Hai programas flooder AirDrop para iPhones Jailbreak, funcionan máis estables que as versións abertas no raspberry pi

A configuración de OWL en Raspberry Pi descríbese en detalle en sitio do proxecto, pero prefiro usar a compilación Kali Linux para Raspberry Pi Zero porque xa ten parches Nexmon instalados para activar o modo de monitor Wi-Fi en rpi0.

É importante lembrar que Airdrop (ou mellor dito AWDL) actívase para os pacientes só despois de recibir un paquete BLE. Polo tanto, debemos envialo a intervalos de varios segundos. Isto pódese facer usando a utilidade py-bluetooth-utils. Usando a función start_le_advertising(), envío a cadea de datos dos exemplos de apple bleee: 000000000000000001123412341234123400.

Unha vez que teñas un daemon OWL funcionando, podes lanzar o meu fork opendrop. Hai un script no repositorio flooder.py, que envía a todos unha imaxe kak_dela.jpeg.

Segundo as miñas observacións, o raspberry pi zero w é inestable no modo de monitor. Despois duns 20 minutos de operación de inundación activa, o subsistema Wi-Fi falla. O problema é descrito polo autor pwnagotchi, e presumiblemente é causado por un sobrequecemento. É necesario proporcionar un vixilante ou utilizar hardware máis estable

Modo Maniacello - Sei o teu número

Se queres mostrarte como un maníaco inadecuado e desanimar para sempre o desexo de seguir comunicándose contigo, podes tentar descubrir o número de teléfono da persoa que está preto.

Como soubemos anteriormente, os paquetes BLE enviados polo iniciador conteñen os tres primeiros bytes do número de teléfono sha256. Este hash pódese capturar cando a vítima fai clic no botón "Compartir" e comeza a escanear os dispositivos de lanzamento de aire ou toca o contrasinal da wifi para unha nova rede no campo de entrada (deste xeito, Apple busca amigos dentro do alcance aos que pode solicitar o contrasinal da rede).

Terás que activar dalgún xeito a mensaxe hash da vítima e capturala. Estou usando utilidades do repositorio Apple Bleee. Dado que os enderezos MAC de Bluetooth dos dispositivos son aleatorios e cambian constantemente, terás que atopar outra forma de determinar o dispositivo desexado nesta lista. A tarefa está simplificada polo feito de que iOS transmite o estado actual do teléfono como: pantalla apagada, pantalla activada, pantalla de bloqueo, desbloqueado, etc. Polo tanto, simplemente observando as accións da vítima, pode comparar o estado actual do dispositivo co dispositivo da táboa. O xeito máis sinxelo é captar o momento no que o usuario saca o teléfono do peto, acende a pantalla e desbloquea o teléfono co dedo ou coa cara. Todo isto será visible no sniffer.

Como uso AirDrop en lugar de Tinder
Insignia Х significa que se capturou un paquete con hashs de teléfono.

O seu analizador ás veces rompe, pero a maioría das veces funciona. Non vou contar completamente a esencia da vulnerabilidade, xa que foi analizada en detalle polos autores de Apple Blee, só describirei a miña experiencia. Só direi que uso un adaptador Bluetooth USB nun chip CSR 8510, xa que funciona moito máis estable para min que o adaptador Bluetooth integrado nun MacBook e inserido nunha máquina virtual.

Así que collemos o hash do teléfono da vítima e recibimos os cobizados tres bytes do hash do número de teléfono.

Como uso AirDrop en lugar de Tinder
Paquete BLE interceptado co número de teléfono utilizando a utilidade read_ble_state.py

Sabemos que en Rusia todos os números de móbil comezan co código +79 e, moi probablemente, o teléfono da nosa vítima teña o mesmo código. Resulta que temos un rango de números de +79000000000 a +79999999999, uns mil millóns de números.

Para reducir o rango, tomamos só os códigos que realmente están rexistrados con calquera operador e descartamos o resto. Como resultado, o rango faise a metade máis grande, preto de medio billón de números.

A continuación, xeramos sha256 a partir de todos os números e gardamos só os 3 primeiros bytes de cada hash. Introducimos esta lista na base de datos Sqlite e construímos un índice para acelerar a busca.

Este é o aspecto dos datos da base de datos:

Como uso AirDrop en lugar de Tinder
Todos os números de teléfono rusos e os tres primeiros bytes do hash

A continuación, tendo o hash da vítima, podemos buscar todas as coincidencias na base de datos. Normalmente hai 15-30 coincidencias por hash.

Como uso AirDrop en lugar de Tinder
Todos os números que coincidan co hash da vítima

Obviamente, non todos estes números se usan realmente. Podemos cortar os innecesarios mediante unha solicitude HLR ou un SMS invisible. De 30 números, 5 foron atopados en liña.

Como uso AirDrop en lugar de Tinder
O resultado da solicitude HLR. Os números de rede están resaltados en verde.

Podería seguir examinando os números, por exemplo, engadilos todos a Telegram/Whatsapp e mirar os avatares, consultar bases de datos como Getcontact, etc. Pero resultou máis fácil chamar aos cinco números un por un e ver cando soa o teléfono da vítima.

Como uso AirDrop en lugar de Tinder
Obxectivo localizado

Todos

  • A inundación do raspberry pi é moi inestable, cómpre probar outras placas individuais.
  • Un flooder nativo para iOS sería moito mellor, pero non puiden atopar un que funcione en iOS 12-13 nin sequera con jailbreak.
  • O script flooder.py é moi estúpido. Probablemente podería xerar unha imaxe personalizada tomando o nome do nome do dispositivo do destinatario e cortando a palabra iPhone.
  • O método para determinar un número de teléfono pódese optimizar comprobando só o feito de que o número está ligado a iMessage. É probable que isto lle proporcione un índice de acertos próximo ao 100%.

Conclusión

Este é o entretemento perfecto para o metro. Hai un efecto wow, os curiosos están interesados ​​nisto. Houbo moita improvisación, houbo casos moi divertidos. Resulta que moitas persoas están listas para xogar e mesmo cancelar os seus plans para baixar na túa estación de metro e subir a tomar un café. Ao longo do ano coñecín moita xente e sigo comunicándome con algunhas delas.

Ás veces desactivo o inicio de sesión de Telegram e divírtome como isto.

Como uso AirDrop en lugar de Tinder

Como uso AirDrop en lugar de Tinder

Fonte: www.habr.com

Engadir un comentario