{Spotify} – Comment et pourquoi créer des comptes à la volée

 

Salut à tous,

 

Une longue pause pour moi sur le blog, je ne vous ai pas donné trop de nouvelle car j'étais très fatigué.
Je vous parlais dernièrement de la création d'un HackerSpace à Nantes, nous avons commencé avec quelques amis à faire nos premiers pas dans ce projet. J'ai donc pu découvrir et aider lors d'un "Café Repair" (si vous ne connaissez pas je vous invite à jeter un œil ici https://repaircafe.org/fr/), cela nous a permis de constater qu'il était parfaitement possible de disposer de locaux à la journée sans mettre trop à la poche.
De fil en aiguille des projets commence à sortir de notre petit début de "communauté" !
C'est génial car cela me permettra dans certains cas de vous faire des feedbacks, et aussi de trouver de nouveaux thèmes pour mes articles.

Je démarre également une VAE à l'AFPA afin de valider enfin un diplôme BAC+4 après plusieurs années dans le monde professionnel ! En soit ça n'est pas vraiment quelques choses qui m'est utile pour trouver du boulot, mais ça reste quand même une certaine reconnaissance d'expertise.

Entrons à présent si vous le voulez bien dans le cœur du sujet !
Les articles que j'écris sont dans 98% des cas liés à mon histoire et aux gens que je rencontre.
C'est ainsi que m'est venu l'idée de ce sujet. On m'a demandé s'il était possible de profiter d'un abonnement "premium" spotify ... sans payer bien entendu !

La Case Prison

Lorsque mon petit dernier est né, j'ai dû me rendre au 36 rue du Bastion .. anciennement 36 quai des orfèvres ...

Le 36, quai des Orfèvres est le bâtiment où se trouvaient le siège, l'état-major et les services communs de la direction régionale de la police judiciaire de la préfecture de police de Paris. (Wikipedia)

Lorsque je dis j'ai dû me rendre, c'est surtout que l'on m'a convoqué car j'avais écrit un article sur la manière de renouveler la période d'essai de manière indéfinie de l'application Coyote.
Tout ça pour vous dire que parfois la réalité peut vous rattraper très vite, et que les articles que j'écris n'ont rien d'autre qu'une vocation pédagogique.
Si je vous dis "Comment profiter gratuitement de" ... il s'agit de montrer une méthodologie en l'illustrant par un cas concret.
Je ne vous incite pas à le reproduire chez vous, mais simplement à comprendre le "Comment ça marche".
Un peu comme un gars qui vous expliquerait les trucs et astuces qu'il y a derrière un tour de magie.

 

Pourquoi créer plusieurs comptes sur Spotify

Spotify permet à n'importe quel compte de profiter d'une période d'essai de 30 jours ...
Avoir plusieurs comptes, permet donc de profiter en continu du service Premium offert par Spotify

Si vous avez suivi l'actualité cette année, vous aurez surement vu celle concernant un hacker Bulgare qui est devenu millionnaire en arnaquant "légalement" Spotify !

Si vous n'avez pas lu cette info, je vais vous résumer la chose ici :
Le Hacker en question a créé plusieurs comptes "Premium" et les a programmés pour écouter en boucle, 24 heures sur 24 et 7 jours sur 7,  une playlist qu'il avait mise en ligne...
Pour info, Spotify rémunère 0,004 dollar par titre écouté ... 
Grâce à cette astuce il aurait amassé pas loin d'un million de dollars.

Bref on peut imaginer tout un tas  d'usage moins illégal aussi ... se créer un fan-club de 1 million d'abonnés par exemple ... etc ...

 

Le Challenge pour créer des comptes à la volée

Un truc qui m'amuse beaucoup, c'est le fait que des plateformes aussi grosses que Spotify se limitent à bloquer les robots uniquement sur leur plateforme Web !
Il est vrai que le captcha Google en refroidit plus d'un, tant il est performant dans la reconnaissance de "clics programmés" pour détecter les robots ...

Mais là où ça devient amusant c'est qu'il est parfaitement possible de créer des comptes depuis un smartphone ... via l'application mobile ... ou la version "bureau" (Linux : snap install spotify).

Ici ... point de Captcha !
Il suffit juste de faire un peu de reverse engineering pour étudier comment la magie opère.

 

L'étude de l'application de bureau et de l'application mobile

Après avoir tenté de faire quelques petites bricoles avec un désassembleur et un éditeur hexadécimale, je me suis dit que ça n'était pas la bonne approche...
Qu'il valait mieux étudier le réseau !
Aujourd'hui la sécurité avant tout, fait que les éditeurs se mettent de plus en plus à travailler en HTTPS, j'ai donc tenté de rediriger tout ce qui sortait sur le port 443 vers le port 80 ... traduction : j'ai essayé de forcer l'application à communiquer en "clair" et non en chiffré !
ça n'a pas été très concluant non plus :'(
Mais j'ai quand même pu récupérer ce domaine "apresolve.spotify.com"

Par déduction, il est assez simple de comprendre que Spotify consulte ici la liste des serveurs sur lesquels il peut s'appuyer pour communiquer.
Il essaye un par un les serveurs de cette liste, jusqu'à en trouver un qui soit disponible...
Là aussi ... pourquoi fermer une porte si on laisse la fenêtre ouverte ....

Cette liste contient des serveurs configurés sur le port 80 !

J'ai donc en éditant mon fichier hosts (/etc/hosts  pour Linux ou C:\Windows\System32\drivers\etc\hosts pour Windows) fait en sorte que l'application Spotify récupère cette liste depuis mon ordinateur et non auprès du vrai serveur "apresolve.spotify.com".

Ce qui m'a permis de ne renvoyer à l'application ... que la liste des serveurs sur le port 80 !
Pour tout vous avouer cette manipulation n'a pas été très utile ..
Mais toujours en analysant le réseau j'ai pu obtenir le fruit de tous ces efforts !

En récupérant une ancienne version de l'application mobile (moins sécurisé) ...
J'ai constaté que Spotify avait gardé la rétrocompatibilité, pour permettre aux gens qui ne mettent jamais à jour leurs applications, ou bien qui sont sur de vieux smartphones / tablettes dans de vieilles versions android, d'avoir l'application qui fonctionne !
Ainsi avec une application comme "Packet Capture", vous pourrez voir ce que votre application envoie et reçoit !
Et paf ! ça fait des Chocapics !!!

Une simple requête POST directement sur le serveur de Spotify ... et le compte est créé, en une seule requête !

Il y a un paramètre "key" ... j'ai pensé à un token temporaire, cependant, celui-ci fonctionne tout le temps ... après je pense qu'il s'agit d'un moyen d'identifier la provenance de création des comptes, permettant ainsi de désactivé tous les comptes qui ont été créé avec ce token.

Il devient possible de créer des dizaines ... centaines de comptes à la minute !

Mais là vous allez me dire ... mais comment faire pour avoir des centaines d'adresses emails ?
En réalité, il n'en suffit que d'une seule, un compte GMAIL, qui vous permet de créer des alias à la volée.
Si vous avez une adresse email : jean-pierre@gmail.com
Vous pourrez donner à n'importe qui cette adresse en préfixant "jean-pierre" par un "+" suivi de ce que vous voulez :

  • jean-pierre+123@gmail.com
  • jean-pierre+456@gmail.com
  • jean-pierre+789@gmail.com
  • jean-pierre+koffe@gmail.com
  • ...

Vous n'avez besoin de rien faire d'autre que d'écrire "+" suivi de ce que vous voulez, et hop les mails seront envoyés à votre gmail ! Vous aurez créé dynamiquement ce que l'on appelle un alias :)

A partir de là, vous pouvez faire ce que vous voulez ;)

 

Le Script final

Comme d'habitude je tiens à rappeler qu''il s'agit d'un "Hack" temporaire.
Spotify mettra très probablement en place une sécurité qui rendra ce script obsolète, donc ne venez pas me mettre en 2020 que ce script / et ou cette méthode ne fonctionne pas

(function(){
	/*
	*	Dave-Hill (c) 2018-2019
	*	Dyrk.org
	*/
    if (!(/https\:\/\/www\.spotify\.com.*?/.exec(document.location.toString()))) {
		return alert("Vous devez être sur le site de Spotify pour réaliser le Hack");
	}
	if (!localStorage.getItem('email')){
		localStorage.setItem('email', 	prompt("Adresse Gmail à utiliser pour la création des comptes"));
		localStorage.setItem('mdp',	 	prompt("Mot de passe à définir par défaut pour la création des comptes\nIl doit faire plus de 8 caractères"));
	}
    var gmail=localStorage.getItem('email') ,
		password=localStorage.getItem('mdp'),
        username= encodeURIComponent([gmail.split('@')[0], '+', 
        		  Math.floor((Math.random() * 1000) +1)].join('')),
        request=new XMLHttpRequest(), params="", params_object = {
            "email"			 : username+'@gmail.com',
            "username"		 : username,
            "password_repeat": password,
            "password"	 	 : password,
            "postal_code"	 : "1",
            "gender"	 	 : Math.floor((Math.random() * 2)) == 0 ? 'male':'female',
            "birth_day"  	 : Math.floor((Math.random() * 30) + 1),
            "birth_month"	 : Math.floor((Math.random() * 12) + 1),
            "birth_year" 	 : Math.floor((Math.random() * 50) + 1950),
            "creation_point" : "client_mobile",
            "iagree"         : "1",
            "key"            : "142b583129b2df829de3656f9eb484e6", 
            "creation_flow"  : "client_mobile",
            "invitecode"     : ""
        };
    for (var i in params_object){ params+=i+"="+params_object[i]+"&"; }
    request.open('POST','https://www.spotify.com/fr/xhr/json/sign-up/');
    request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    request.addEventListener('load', function(e){  
        var test = JSON.parse(e.target.response).errors,
			html = document.getElementsByTagName('html')[0], 
			div = document.createElement('div');
        if (test) {
				alert("Erreur \n"+JSON.stringify(test));
		}
		else {
				html.textContent = "";
				html.appendChild(div);
				div.setAttribute('style','position:fixed;top:50%;left:5%;width:300px;height:200px;background:#FFF;border:1px solid black;border-radius:20px;padding:10px;font-size:24px');
				html.setAttribute('style', 'background:100% url("https://www.highreshdwallpapers.com/wp-content/uploads/2017/05/Sexy-Cheeky-Wallpaper.jpg")');
				div.textContent = "username : "+decodeURIComponent(username)+"@gmail.com   - password : "+password+
									" - Veuillez confirmer votre adresse mail dans votre boite mail";
				html.setAttribute('style', 
				'background:100% 100% url("https://d2v9y0dukr6mq2.cloudfront.net/video/thumbnail/rhqunD2Gioflxfgx/girl-dj-sexy-dancing-and-smiling-with-joy-slow-motion_rtjg3io4g_thumbnail-full01.png");');
		}
    });
    request.send(params);
})()

 

Conclusion

J'espère que cet article vous aura plu, j'ai pris pas mal de temps pour vous l'écrire, et passé pas mal de temps sur le sujet ^^
Merci à tous de votre fidélité, et aux encouragements que je reçois par mail, et par commentaire.
Petit rappel, cet article n'a pas vocation à créer des bandits, mais à permettre aux gens de comprendre un peu la manière dont les "hackers" procèdent ...
Une meilleure compréhension d'une faille de sécurité, permet de s'en prémunir.
Ici, la faille réside dans le fait que Spotify garde en vie les vielles versions d'Android ...
Et permettent des création de compte sans protection par Captcha, contraindre les utilisateurs à passer par la plateforme Web, ce n'est pas "user friendly" mais ça sécurise.
Il faut également se prémunir des alias Google et / ou limiter le nombre de création de compte possible avec des alias.

Partagez ce contenu

15 comments

Répondre à Malts Annuler la réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *