tl; dr: J'explore les possibilités de faire correspondre des comptes avec des numéros de téléphone dans le segment des télégrammes russes.
De nombreuses personnes dans le monde souhaitent pouvoir désanonymiser un utilisateur arbitraire. Il peut s'agir de capitalistes qui n'évitent pas le spam, les services spéciaux, les escrocs et simplement les harceleurs. Les services sociaux tentent de manœuvrer entre la volonté d'attirer le plus grand public possible par l'importation de contacts et les limites d'accès à ces informations. Ils manœuvrent de différentes manières, certains se positionnent aussi socialement que possible, tandis que d'autres accordent plus d'importance à la vie privée. Ces derniers deviennent la cible d'attaques de partisans d'une confidentialité maximale.
Par défaut, dans Telegram, comme dans les messageries moins privées, vous pouvez obtenir un compte utilisateur, connaissant son numéro. Dans le même temps, le propriétaire du numéro peut limiter cette opportunité uniquement pour les contacts mutuels, pour cela, il existe une option spéciale. Par défaut, il est désactivé, ce qui signifie que nous avons un télégramme complet de gars négligents et délibérément publics. La fonctionnalité semble être due à un drain sur la base d'utilisateurs. J'ai décidé de déterminer combien il en coûterait pour créer une base de données similaire et si je pouvais en créer une.
J'ai limité mes intérêts aux utilisateurs russes uniquement. La base des tranches de nombres, comme il s'est avéré, est publiéeRossvyaz, qui a encore simplifié ma tâche en éliminant le besoin de supprimer des sites contenant de telles informations. Au total, le 7 septembre, les opérateurs ont reçu près de six cent millions de numéros, ou plutôt exactement 598035003.
J'ai pris quelques cartes SIM, `telethon` (module Python avec une implémentation à part entière de MTProto) et j'ai essayé de créer une telle base de données chez moi.
Partager des contacts et ajouter à un groupe
Vous vous souvenez de l' histoire du doyen de Hong Kong? Le bot a ajouté des utilisateurs au groupe par numéro de téléphone, obtenant ainsi un compte lié au téléphone. Dans le même article, un journaliste de ZDNet a contacté un représentant de Telegram. Ce dernier a déclaré que les importations en vrac seraient problématiques.
Nous soupçonnons que certains attaquants parrainés par le gouvernement ont exploité ce bug et l'utilisent pour cibler les manifestants de Hong Kong, présentant dans certains cas des dangers immédiats pour la vie des manifestants.
J'ai donc décidé de fouiller d'abord dans les contacts. L'interface des clients Telegram officiels vous permet de ne partager que les utilisateurs dont vous pouvez voir le numéro d'une manière ou d'une autre. Cependant, `telethon` vous permet de partager des contacts avec un nombre arbitraire. A en juger par son API, la fonction de partage consiste à envoyer un fichier d'un certain type . Pour une vérification préliminaire, j'ai esquissé un script qui a envoyé le contact spécifié à mon compte principal sans autres questions.
Pour vérifier avec le script, j'ai ouvert un compte "propre" (ci-après dénommé le Bot), et envoyé trois numéros à un autre compte (ci-après dénommé le Destinataire): Pacha, Dasha et le mien. Tout le monde a Telegram. Pacha a partagé son téléphone avec tout le monde. Dasha a ajouté le destinataire à ses contacts. J'ai ajouté mon numéro deux fois: d'abord en ajoutant Bot à mes contacts, puis j'ai supprimé le bot et me suis ajouté aux contacts de Bot.
Le résultat peut être interprété à partir de l'image: les contacts sont normalement scampés uniquement si le téléphone est disponible pour le bot. C'est encore pire avec l' ajout du chat . Je ne peux même pas ajouter des comptes avec un téléphone connu à Bot s'ils ont désactivé cette fonctionnalité dans les paramètres. De plus, les bots peuvent être rapidement bannis si les utilisateurs commencent à signaler du spam. Je ne doyen donc personne, il est temps d'oublier cette idée.
Synchronisation
La synchronisation des contacts, comme je l'ai dit, conduit potentiellement à des restrictions de compte. Mais à quoi ça ressemble? J'ai écrit un autre script qui prend des nombres aléatoires de la base de données et les ajoute aux contacts. Après cela, le script analyse les contacts, ajoute les identifiants des comptes trouvés dans la liste à la base de données, marque le reste avec des zéros et supprime les contacts de la liste.
Ensuite, j'ai couru 5000 numéros aléatoires, selon les rumeurs, ce sont les limites qui fonctionnent dans Telegram. Je n'ai trouvé aucun identifiant dans la sortie, sauf pour le Bot lui-même. Maintenant, afin d'exclure d'éventuelles erreurs dans le code et l'astuce du télégramme, j'ajoute manuellement le numéro de Dasha aux nombres aléatoires, je désactive la suppression des contacts de la liste, je réduis la taille de l'échantillon à 3000 numéros et je l'exécute à nouveau. Dasha n'est pas dans la liste ou dans la base de données. Une tentative pour ajouter manuellement Dasha laisse entendre que les limites de Telegram ont fonctionné.
Presque tout semble être bon. Pour m'en assurer, j'ai supprimé mon compte et l'ai réenregistré, réduit le nombre de téléphones à 3000, y compris Dasha, et relancé le script. Le résultat est similaire. Il semble que les limites n'affectent pas le compte, mais le numéro de téléphone à partir duquel les contacts sont synchronisés. Tout semble aller bien, et Telegram fournit un niveau raisonnable de protection contre la force brute.
Ou pas?
Au moins deux services sont mentionnés sur Internet qui auraient numérisé un large éventail de numéros. L'un d'eux que j'ai vérifié, cela fonctionne mal. Supposons que le second ne ment pas et qu'ils aient vraiment réussi. Supposons même qu'ils n'aient pas besoin de traiter les 600 millions de numéros et qu'ils connaissent quelque part 150 millions de numéros réellement actifs (un peu plus d'un numéro par habitant en Fédération de Russie). Combien cela coûtera-t-il d'analyser tout le monde en six mois, en respectant toutes les restrictions du messager? Et dans trois mois? Et dans un mois? Et en un jour?
Disons que vous pouvez numériser 5000 contacts à partir d'un numéro le premier jour et 100 autres chaque jour suivant . En six mois, à partir de chaque numéro, vous pourrez dénombrer 23000 contacts
(180*100+5000)
; pour effectuer une recherche, vous aurez besoin d'environ 6500 numéros(150000000/23000)
... Pas grand chose, non? Si chaque carte SIM coûte 150 roubles (ce qui est cher!), Le coût de leur achat sera inférieur à un million de roubles. Montant de levage même pour les petites entreprises! Pour les cartes SIM, vous n'avez même pas besoin de garder beaucoup de matériel, vous vous connectez et exécutez le script une fois par jour.
Mais comptons au maximum. Prenons l'ensemble du pool de 600 millions de numéros et réduisons le délai à un mois. Il s'avère que vous avez besoin de 75 000 cartes SIM, ce qui ne coûtera qu'une dizaine de fois plus.
(600000000/(5000+30*100)*150=11250000)
... Vous devrez essayer de trouver autant de cartes SIM, mais vous pouvez réduire leur coût dans un tel lot. Potentiellement, vous pouvez utiliser des services qui vous permettent d'enregistrer un compte à partir de 3,5 roubles chacun, et les pires contrevenants peuvent propager des chevaux de Troie pour voler des SMS. Ensuite, ce sera beaucoup moins cher. Le développement ne semble pas trop compliqué et l'hébergement de clients ne devrait pas non plus être un gros problème. Vous devrez peut-être utiliser de nombreux proxys, mais ce n'est pas certain.
Je n'ai pas pu collecter la base de données en raison des limites de Telegram, et c'est bien. Cela signifie qu'il existe un certain seuil d'entrée pour de telles actions. J'ai mis des scripts inutiles dans un git... Mais il n'y a rien d'extrêmement difficile à faire avec certaines ressources. Surtout si vous limitez les intérêts à des régions spécifiques, par exemple, dans la région autonome juive, il y a moins d'un million de numéros dans le pool, et au Bachkortostan, il y en a 12,5 millions.
J'ai suggéré que l'équipe Telegram informe l'utilisateur de la possibilité de cacher le téléphone. Et je vous rappelle que l'anonymat dans les services sociaux est conditionnel. Si vous ne voulez pas tomber sous le doyen massif, masquez votre numéro de téléphone Telegram pour tout le monde sauf vos contacts.