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' )); |
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 } |
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); } |
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