Le backdoor CryptoPHP a infecté plus de 23 000 sites web
Dont plus de 1 200 en France

Le , par Stéphane le calme, Chroniqueur Actualités
Dans un livre blanc, Fox-It, un spécialiste de sécurité basé aux Pays-Bas, présente CryptoPHP, une porte dérobée qui est arrivée par l’entremise de thèmes ou plugins piratés pour des systèmes de gestion de contenu populaires à l’instar de WordPress, Joomla ou même Drupal (bien que pour ce dernier le support semble limité).

Ce script malveillant, qui s’exécutera chaque fois qu’une personne visitera la page, utilise les fonctions des CMS pour des configurations de stockage et des injections dans les pages web. Précisons quand même que sur les sites WordPress, il cessera son exécution dès qu’une personne sera connectée afin d’éviter d’être détectée. Comme exemple d’injection, Fox-IT parle de l’injection de ‘echo’ dans WordPress qui va utiliser la fonction add_action :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
add_action('wp_head', array( 
 $this, 
 'JLKCxmYDqGERxDYMhmOj' 
)); 
add_action('wp_footer', array( 
 $this, 
 'JLKCxmYDqGERxDYMhmOj' 
));
Dans le cas où la porte dérobée est intégrée à une installation WordPress, elle ajoutera un compte administrateur supplémentaire dont le nom par défaut sera ‘system’. Si ce nom est déjà en utilisation, CryptoPHP ajoutera des chiffres à la fin jusqu’à ce qu’il tombe sur un nom qui n’est pas en cours d’utilisation. La même chose sera faite au niveau du compte administrateur qui est ‘afjiaa@asfuhus.cc.c’ mais les nombres seront placées cette fois-ci avant le ‘@’.

Les serveurs web infectés par CryptoPHP agissent comme un réseau de zombies. Ils se connectent à des serveurs de commande et de contrôle exploités par les hackers en utilisant un canal de communication chiffré et attendent les instructions. La première version de cette porte dérobée (0.1) avait une clé RSA de 1 024 bits, cette nouvelle version (1.0) dispose d’une clé RSA de 2048 bits. La porte dérobée va envoyer des informations sur les données de configuration à un serveur de commande et de contrôle qui incluent des statistiques sur la date d’installation, la dernière connexion, le numéro de version ou le nombre de visiteurs. Voici un exemple de configuration envoyé à un serveur C&C.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{ 
 "empty": 0, 
 "eval": true, 
 "exec": true, 
 "host": "http://127.0.0.1/", 
 "ip": "127.0.0.1", 
 "last_connect": "20141116", 
 "page": "index.php", 
 "publicKey": "-----BEGIN PUBLIC KEY-----[snipped..]", 
 "run": 4, 
 "serverKey": "BtajD2R2yR", 
 "started": "20141114", 
 "type": 0, 
 "ver": 1 
}
Selon Fox-IT, la porte dérobée est principalement utilisée pour l'optimisation de Black Hat SEO (Black hat search engine optimization). Leur supposition vient du fait qu’ils ont observé que les fonctionnalités ‘eval’ et ‘echo’ ont été utilisées pour injecter des liens et des textes sur les pages web des serveurs compromis. Le contenu ne sera alors injecté que quand le visiteur va ressembler à un web crawler sur la base du user agent ou du nom de domaine. Ils vont alors penser que les sites web compromis vont les dirigés vers ceux qui sont injectés, ce qui poussera le plus haut possible leur indexation dans les résultats retournés par les moteurs de recherche. C’est cette opération qui est connue sous le terme de Black Hat SEO. Vous pouvez le constater dans ce code :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$ip = $_SERVER['REMOTE_ADDR']; 
$agent = $_SERVER['HTTP_USER_AGENT']; 
$bot = false; 
$hostname = gethostbyaddr($ip); 
if ($hostname == $ip) { 
 $bot = false; 
} else { 
 $rip = gethostbyname($hostname); 
 if ($rip != $ip) { 
 $bot = false; 
 } else if ( 
 (preg_match("/bing|msnbot/i",$agent) && (preg_match("/msn/i",$hostname))) || 
 (preg_match("/google/i",$agent) && (preg_match("/google/i",$hostname))) || 
 (preg_match("/yahoo/i",$agent) && (preg_match("/yahoo/i",$hostname))) || 
 (preg_match("/twittervir/i",$agent) && (preg_match("/twittr/i",$hostname))) || 
 (preg_match("/yandex/i",$agent))) 
 { 
 $bot = true; 
 } else { 
 $bot = false; 
 } 
} 
if (strstr($agent, "chishijen1") !== false || 
 strstr($agent, "msnbot") !== false || 
 strstr($agent, "bing") !== false) 
{ 
 $bot = true; 
} 
if (!$bot) { 
 define('wp_footerLeo', true); 
}
En guise d’illustration, voici un exemple de ce qu’un visiteur normal d’un site compromis va voir et ce qu’un crawler de moteur de recherche va voir. La partie gauche est la page originale vue par le visiteur. Le côté droit montre la page quand elle a été visitée avec l’un des user agents mentionnés dans la portion de code plus haut. La page affiche donc des liens hypertextes pointant par exemple vers des jeux de hasard. Le bot d’un moteur de recherche verra ce lien comme valide et donnera au site injecté un plus grand classement dans les résultats.


45 adresses IP uniques ainsi que 191 domaines uniques ont été identifiés comme faisant partie de l’architecture C&C. Chaque adresse IP avait 3 ou 6 domaines qui étaient reliés à elle. Ces serveurs C&C ont été observés aux États-Unis (8, soit 17,8% de l’infrastructure), en Pologne (1, soit 2,2% de l’infrastructure), en Allemagne (18, soit 40% de l’infrastructure) et bien sûr aux Pays-Bas (18, soit 40% de l’infrastructure).

« Au total, 23 693 adresses IP uniques étaient reliées aux centres de contrôle », ont indiqué dans un billet de blog les chercheurs de Fox-IT. Cependant, le nombre de sites concernés est probablement plus élevé, parce que certaines de ces adresses IP correspondent à des serveurs d'hébergement web partagé qui ont plus d'un site infecté. Les cinq premiers pays infectés par CryptoPHP étaient les États-Unis (8657 adresses IP), l'Allemagne (2877 adresses IP), la France (1 231 adresses IP), les Pays-Bas (1008 adresses IP) et la Turquie (749 adresses IP).

Depuis la publication du rapport de Fox-IT sur CryptoPHP la semaine dernière, les hackers ont fermé les sites qui ont poussé les plug-ins et thèmes piratés pour en créer de nouveaux. Ils ont également introduit une nouvelle version de leur porte dérobée, sans doute dans une tentative d'échapper à la détection.

Les chercheurs Fox-IT ont publié deux scripts Python disponibles sur GitHub que les webmasters peuvent utiliser pour scanner leurs serveurs et leurs sites web à la recherche d’une éventuelle infection par CryptoPHP : check_url.py et check_filesystem.py. Ils ont également fourni des instructions pour le supprimer sur leur blog, tout en notant que finalement il est préférable de complètement réinstaller son CMS afin de repartir sur une base saine. Le premier script permet de scanner les fichiers système à la recherche de tous les fichiers 'social*.png' pour déterminer s'ils sont malveillants. Si CryptoPHP a été identifié, procédez comme suit :

  • enlevez les 'include' du backdoor. Par exemple, trouvez le script qui contient “<?php include(‘images/social.png’); ?>” tout en sachant que ce chemin peut varier ;
  • enlevez le backdoor lui même (social*.png) en l'effaçant ;
  • vérifiez votre base de données à la recherche de comptes administrateurs supplémentaires créés et effacez les ;
  • réinitialiser les informations d'identification de votre propre compte CMS ainsi que celui des autres administrateurs (qui sont les plus susceptibles d'être compromis).


obtenir les scripts de détection CryptoPHP sur GitHub

Source : blog Fox-IT


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de miky55 miky55 - Membre averti http://www.developpez.com
le 29/11/2014 à 17:57
ça aurait été plus malin de proposer un script php pour la détection, surtout pour les hébergements mutualisés.
Après comme d'habitude le malaware est distribué sur des sites qui proposent des thèmes gratuits, j'imagine que certains sont censé être payant, donc rien de nouveau sous le soleil.
Apparemment l'astuce des hackers est de planquer le code dans une image en de l'inclure comme un script php, je conseillerai donc de rechercher cette expression régulière pour détecter une infection : (include|require).*(jpg|jpeg|png|gif)
Avatar de Tsilefy Tsilefy - Membre chevronné http://www.developpez.com
le 01/12/2014 à 1:09
Tout à fait. Comme toujours un peu de bon sens permet d'éliminer un certain nombre de risques (pas tous):

- ne télécharger les plug-ins/extensions/modules/themes gratuits qu'à partir des dépôts officiels des CMS. Ils seront peut-être (sans doute?) bourrés de failles, mais en tout cas ils n'auront pas de backdoor.
- ne jamais, jamais utiliser des thèmes piratés.
- s'abonner à la newsletter sécurité du CMS qu'on utilise.
- Mettre le CMS à jour immédiatement lorsqu' une mise à jour de sécurité est disponible (d'où l'intérêt de la newsletter)
- Et si on a un accès console, régulièrement chercher "base64" et "eval" dans le contenu des fichiers, et vérifier minutieusement tout fichier qui contient ces mots-clés.
Offres d'emploi IT
Développeur - software craftsman (H/F)
Société Générale - Ile de France - Hauts-de-Seine
Intégrateur d'exploitation H/F
Safran - Ile de France - Issy-les-Moulineaux (92130)
Analyste SI-métier (poste également ouvert aux stagiaires, alternants et VIE du groupe)-(H/F)
Société Générale - Ile de France - Val-de-Marne

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil