J'ai été averti sur twitter il y a quelques jours par un lecteur du blog qui est tombé sur un site malveillant qui clonait Blogmotion (merci @MealinPUI!)
J'ai donc été obligé de trouver une méthode pour bloquer ce serveur. Je vous propose ici ma méthode d'analyse avec du PHP puis de blocage du serveur au niveau d'Apache.
Analyse
C'est un nom de domaine gratuit du Centreafrique en ".cf" qui est utilisé, déjà ça annonce la couleur. Mais ils le font aussi avec des ".ga", gratuits également et correspondant à l'État de Géorgie, ".gq" pour la Guinée-Équatoriale... bref!
Lorsque l'on va sur ce site on arrive sur une copie de Blogmotion, enfin si l'on y regarde de pas trop près. Au début je me suis demandé si je n'avais pas été effectivement victime d'un piratage du code source tellement l'affichage était proche. Certes on peut cloner un site en html statique avec tous les médias, mais c'est peu fréquent.
Sauf que dans la page les mots et phrases ne veulent plus rien dire, ils sont tous remplacés par des liens publicitaires. J'ai au début cru que c'était une copie hors ligne et que donc je ne pouvais rien faire, ou pas grand chose. J'ai donc cherché dans les DNS qui était l'hébergeur, mais là encore les petits malins utilisent les services de Cloudflare qui masque complètement l'hébergeur réel.
Je préfère ne pas laisser cette situation trop perdurer car cela peut porter préjudice au référencement ce genre de clones, bien que normalement Google soit assez "intelligent" pour faire la part des choses.
Je contacte donc le service abuse du registrar Freenom et de Cloudflare pour leur signaler. Cloudflare a été très rapide (quelques minutes) en me disant qu'ils ne pouvaient pas donner l'IP ou nom de l'hébergeur mais qu'ils lui transféraient mon signalement.
En attendant, je continue mon investigation. Vu le temps de chargement des pages je trouve ça trop lent pour du static, même avec un serveur en carton. Je crée donc un nouveau dossier avec une page html bidon sur Blogmotion, et je saisis le chemin de ce dossier à la fin du domaine malveillant. Surprise : la fausse page d'affiche !
Cette fois c'est clair, tout se fait à la volée, avec une bête récupération de la page (comme un wget). En gros c'est un reverse proxy avec un script qui altère le contenu HTML à la volée de balises contenant un lien.
Récupération de l'IP du serveur
S'il y a un reverse proxy alors je peux récupérer son IP en PHP avec la variable $_SERVER["remote_addr"].
Voici le code PHP qui permet ceci :
function get_client_ip_env() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress; } $ip = @get_client_ip_env(); @file_put_contents('ip.log', date('H\:i:s') . ' ' . $ip . "\r\n", FILE_APPEND);
Ensuite j'accède à mon script depuis le serveur malveillant : http://toutpourri.lol/fake/coucou.php
et je récupère l'IP du serveur dans ip.log : 212.129.39.xxx
Résultat : j'obtiens une IP sur laquelle je fais un whois (j'aime bien dawhois.com). Surprise l'IP appartient à un bloc ipv4 de chez l'hébergeur français Online. Je signale donc l'IP au service abuse de Online : https://abuse.online.net mais comme nous sommes dimanche je n'aurai pas de réponse avant lundi :
Bonjour,
Je vous signale un abus provenant du site toutpourri.lol dont l'IP du serveur est 212.129.39.xxx qui fait partie des blocs IP qui vous sont attribués.
Ce site toutpourri.lol a cloné un site (https://blogmotion.fr) et remplace des mots à la volée dans le contenu des pages.
Un blocage a été mis en place côté serveur par rapport à cette IP. Toutefois je vous remercie de bien vouloir bloquer cet hébergement malveillant.
J'ai également notifié le registrar (freenom) ainsi que cloudflare qui va également prendre contact avec vous car leur service de reverse-proxying est utilisé.
Merci par avance
Cordialement
Code plus light si besoin :
<?php echo '<pre>'; print_r($_SERVER); echo '</pre>'; ?>
Blocage du serveur
Maintenant que je connais l'IP du serveur je peux la bloquer, mais pour rigoler un peu je préfère rediriger le serveur vers un compteur de visite (merci free et son service de pages persos qui tourne encore!) pour chaque page appelée. Au passage je connaitrais aussi le trafic qui arrive via ce site malveillant (malinx !).
Blogmotion est hébergé sur un serveur mutualisé chez Yulpa qui utilise apache pour servir le contenu web. Je décide donc de rediriger tout ce qui provient de l'IP 212.129.39.xxx grâce à une règle de ré-écriture dans un fichier .htaccess :
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} ^212\.129\.39\.xxx [NC] RewriteRule ^.* http://perdu.com [R,L] </IfModule>
Important : ce code doit être au tout début de votre fichier .htaccess si vous aviez déjà des choses dedans (WordPress ou autre), sinon il risque de ne pas être interprété à causes des directives précédents ayant déjà un drapeau de fin.
Note : Je vous conseille d'essayer la directive sur un sous-dossier créé pour cette occasion histoire de ne pas couper tout l'accès à votre site en cas d'erreur dans la directive ou de son interprétation par le serveur Apache (erreur 500...). Si vous êtes sur nginx il faudra adapter le code, n'hésitez pas à le poser en commentaire.
J'ai remarqué que ce script était inefficace pour la racine du site, probablement à cause d'un système de cache du reverse proxy. Pour s'assurer que le code fonctionne il faut créer un autre sous-dossier et y accéder depuis le domaine malveillant : ndd-pourri.lol/tototest
Astuce : si ça ne marche pas essayez avec votre propre ip (monip.org) pour vérifier si votre serveur Apache accepte la directive
Enfin, si vous placez la directive dans un vhost, pensez à bien recharger le service apache/httpd.
Conclusion
Le lundi matin vers 10h j'ai eu la réponse d'Online
Le service abuse de @online_fr est plutôt réactif, merci à eux !
— 𝕩ɦΛƦҠ (@xhark) August 20, 2018
Celle-ci qui contenait la réponse du client :
Hello.
All what can be copied the site deleted from site and domain. DNS problems on the server fixed.
We're apologize for the incoviniences.
Effectivement, ce n'est plus Blogmotion qui apparaît lorsque l'on va sur le site, mais c'est un autre site qui se fait piller... je ne sais pas si c'est mieux mais ça ne me concerne plus. D'ailleurs encore aujourd'hui le site est actif...
J'espère que cette petite mésaventure, son analyse et sa solution serviront à d'autres même si je ne le vous souhaite pas 🙂
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
13 commentaires
Bien joué !
Explications claires, cela pourra servir à d'autres.
Le plus fou/triste c'est que le Online laisse faire et que ce n'est probablement qu'un cas parmi des millions d'autres...
PS : c'est gentil, mais t'étais pas obligé de me mentionner, surtout que je ne ne produit pas franchement de contenu en rapport avec la thématique BM 😉
Merci pour le retour d'expérience. Faire la chasse aux malveillants sur Internet quand on héberge est une lutte de tous les instants 😉
"c'est un autre site qui se fait piller... je ne sais pas si c'est mieux mais ça ne me concerne plus."
Ce n'est certes plus ton problème, mais rien ne t'empêche de prévenir le propriétaire du blog en question, au cas où il ne serait pas au courant (comme toi au début de l'article, quand tu ids qu'un lecteur t'as prévenu).
Pour prendre l'exemple (moins grave, certes) du plagia, c'est souvent par hasard ou parce qu'on me le signale que je tombe sur les sites qui copient mes articles sans me citer...
@Mealin: c'est normal 🙂
@zwindler: j'avais notifié le site suivant, mais de toutes façons ils changent souvent de cible malheureusement
Très très intéressant. J'ai eu le même souci il y a quelques temps avec 2 sites qui aspiraient certains articles (aucune idée des critères) pour les afficher sur d'autres sites avec des pubs. Étrangement, je n'ai pas fait grand chose et cela s'est arrêté tout seul. Mais je n'avais pas pensé à importer une page à la con pour récupérer les infos pertinentes... 😉 ! Bien joué et très instructif.
Online et Cloudflare ne vont pas bloquer un client au moindre signalement non plus ici les gens veulent des liberte mais des que ca gene vos interets bizarement il faut etre plus arbitraire....
Bien joué et merci pour ce retour à la fois très constructif et instructif
Bien joué 😉
Au final, quelles sont les stats du compteur mis en place (même sur courte période histoire d'avoir une idée des revenus qu'il génère en pratiquant de la sorte).
Ca pourrait également valoir le coup de regarder quel service publicitaire le cow boy utilise pour les prévenir, histoire de bloquer son compte et annuler les éventuelles revenus qu'il s'est fait sur ton boulot.
Super article.
Comment s'y prend le "malfaisant" pour la copie ?
A chaque accès d'un client a http://blogmotion.cf, le proxy va chercher sur blogmotion.fr la page en question, installe la page sur le faux site, modifie tout ce qu'il veut, puis redirige le client sur le site ?
@Stephane: oui, mais il n'installe pas la page mais la transmet au client après modification à la volée
@Mr Xhark:
Ok, y'a des tools (déjà existants) qui font ca ??
@Stephane:
Ok, oubliez cette dernière et ridicule question 🙂 En tout cas merci pour l'article ...
bonjour,
@Stephane
@Mr Xhark
@zwindler
@Mealin
j'arrive par hasard sur cette page instructive après une recherche sur le fonctionnement des dns.
Il y a un site (non frauduleux du moins je pense) qui semble utiliser ce système pour produire des pages absurdes. je pense qu'il est encore en ligne. il s'agit de débilitron point com ou org ou fr je ne sais plus. dans ce cas on peux accéder à par exemple wikipedia (c'est le plus drôle d'ailleurs 🙂 et le site s'affiche fonctionnel mais un algorithme remplace certains mots de façon à rendre la page lisible mais totalement absurde. A part le fais que j'ai bien rigolé quelques jours avec ça il y a plus de 10 ans. Ne pensez-vous qu'il s'agit de la même méthode? c'est effectivement un accès par proxy qui modifie la page à la volée avant de l'afficher coté client.
louis