Depuis quelques jours sur Facebook on tombe sur des images comme celle présentée ci-dessous, vous promettant conversations privées ou logins / mot de passe de vos contacts :
Le pastebin sur lequel je suis tombé après qu’un ami se soit fait piéger est celui-ci : http://pastebin.com/jg04E8V6 Attention donc à ne pas éxécuter le code qui y est contenu, vous vous en doutez il ne fait absolument pas ce que l’on vous promet 😉 Si vous ne vous intéressez pas à la technique sautez directement à la conclusion.
J’ai passé quelques temps à désobfusquer le code en question (rendu volontairement difficilement lisible afin de dérouter une personne comprenant le Javascript) pour essayer de le comprendre et mis le résultat sur un autre pastebin : http://pastebin.com/0hWB1dVB (mieux non ?)
Au programme : pas mal d’héxa, des noms de variables volontairement illisibles, des retours à la ligne éclatés dans tous les sens, des tableaux de chaines de caractères utilisés plus tard par référence… Bref un beau bordel mais rien d’insurmontable. Par contre on remarque assez-vite que les méthodes d’obfuscation utilisées ne sont pas les mêmes partout, signe qu’il s’agit vraisemblablement d’un assemblage de plusieurs codes récupérés de ci de là. En faisant une recherche par la suite j’ai trouvé plusieurs versions du même code, avec d’autres IDs de pages, commentaires, personnes, … Bref il doit venir d’un endroit où l’on explique comment s’en servir (ou même un générateur), selon toutes vraisemblances un forum et d’après le nom des fonctions non obfusquées il est probable que ça soit d’origine turque (« arkadas » = « amis » en turc; « yorum yap » = « reviewed », …).
Et donc une fois exécuté que fait ce code ?
Il y a plusieurs fonctions avec chacune un but précis et qui vont récupérer votre identité, les jetons CSRF de sécurité et quelques autres paramètres afin de déclencher une ou plusieurs actions à votre insu en fonction de la version du code sur laquelle vous pourrez tomber.
Il vous transformera gentiment l’apparence de votre Facebook (pour y ajouter ce joli background notamment) : rien à craindre de ce côté là, rafraîchir la page rétablit le thème normal.
Le code est supposé jouer un son en fond automatiquement aussi, mais le son en question a disparu de son hébergeur.
function a(abone) – renommée chez moi en follow(id)
Comme son nom l’indique, vous abonne (follow) à l’utilisateur dont l’ID est passé en paramètre. Dans notre code il s’agit des 2 IDs : 100007551819909, 100007551819909. Semblent supprimés.
function sublist(uidss) – pas renommée chez moi
Vous fait suivre une liste ici les IDS 1387237681537946, 1387237764871271, 100007551819909, … (11 au total) De toutes celles que j’ai essayées il semble que Facebook ait suspendu l’existence.
function P(post) – renommée chez moi en likePost(post)
Vous fera liker, à votre insu toujours, un ou plusieurs posts. Ici les IDs 208440912680740, 1385472281714486, 1392225981039116, … (11 au total) Même chose, ils ont l’air d’avoir été supprimés par Facebook. Surement des posts de l’auteur dont le profil a été suspendu.
function Like(p) – pas renommée chez moi
Pour vous faire liker des pages en particulier. Ici les IDs sont 208440912680740, 1388348181426896, 464466333665657, … (11 au total)
function IDS(r) – pas renommée chez moi
Envoyer une demande d’ami. Ici les IDs sont 100007551819909, 100007551819909, 100007551819909. Pareil ils ont l’air supprimés.
function Report(ids) – pas renommée chez moi
Pas utilisée mais devrait permettre de signaler un utilisateur.
function arkadaslari_al(id) – pas renommée chez moi
« Obtenir amis » en turc. Sert à parcourir la liste d’amis d’un utilisateur (vous) par séries de 27 personnes et appellera plus tard la fonction yorum_yap afin qu’elle publie leur nom en commentaire d’un post dont l’ID est id (1392225981039116 ici, supprimé of course).
function RandomArkadas() – pas renommée
Pas utilisée ici mais est supposée récupérer 9 amis au hasard dans votre liste d’amis pour utilisation ultérieure.
function yorum_yap(id, msg) – pas renommée
« Avis » en turc, va ajouter un commentaire sous le post désigné par l’id le commentaire msg qui lui a été généré par arkadaslari_al
Conclusion
J’aurai pu pousser la désobfuscation un peu plus loin mais déjà à ce niveau on peut lire assez facilement le code et en comprendre son fonctionnement à la fois très basique et efficace. Globalement les promesses qui vont avec ce bout de code sont irréalisables, pire il aurait pu en profiter pour faire supprimer des pages (la fonction est là, juste pas utilisée) ou même vous piquer vos informations (ce qui n’est pas le cas dans la version que j’ai analysée mais qui est très simple à ajouter).
Globalement si vos amis ont été victime du truc vous-même ne risquez rien, si vous l’avez exécuté allez vérifier dans votre « activity log » présent sur votre profil sur la photo de couverture à droite (flemme de faire une capture d’écran) afin de vérifier les actions éventuellement effectuées à votre insu.
Facebook pourrait probablement lutter contre ceci mais globalement un code comme celui-ci est très simple à reproduire quelles que soient les mesures de sécurité mises en place du côté de Facebook puisqu’il sera toujours possible depuis un navigateur Web de reproduire l’action d’un humain en javascript. Par contre le social engineering qui est derrière : faire exécuter une action à quelqu’un qui ne la comprend pas en lui promettant quelque chose dont il peut avoir envie, ainsi que le vecteur de propagation idéal qu’est Facebook est assez redoutable.
Pour l’anecdote j’ai publié un statut facebook avec le lien du pastebin en précisant bien de ne pas l’exécuter. Statut que Facebook a tout simplement supprimé automatiquement, surement en dégommant tous les liens correspondants présents sur sa plateforme.
A vous de ne pas tomber dans le panneau 😉
Malheuresemnt on ne peux proteger les gens contre eux-memes….
merci pour le tuyau, et merci pour les explications c’est vraiment très intéressant
J’allais justement analyser ce script que j’ai récupéré. Merci pour cette bonne analyse.
Bonjour,
Analyse fine et intéressante, malheureusement la vieille rengaine : « la majorité des problèmes informatique a son origine entre la chaise et le clavier » est toujours d’actualité.. Les mêmes personnes qui font tourner les chaines facebook et autres hoax se feront très certainement avoir par ce genre de code…