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

Sécurité Discussion :

Identifier un script "malin"


Sujet :

Sécurité

  1. #1
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut Identifier un script "malin"
    Bonjour,

    Nous hébergeons de nombreux sites web pour la plupart reliés à une base de données.

    Nos serveurs sont tous des Linux noyau 2.6 (distribution slackware).

    Le serveur HTTP est apache (branche 2.2), les développements sont fait en PHP (branche 5.2) et la base de données est MySQL (branche 5.0).

    Les développeurs sont des intervenants extérieurs avec plus ou moins de connaissances.

    Aujourd'hui nous avons un script qui est déclenché, nous le pensons, par un accès à une page et qui tente (qui tente car nous avons des firewalls qui bloquent ces tentatives) des connexions vers le port 6667 en tcp d'une multitude d'adresses IP environ toutes les heures ou demi-heure ceci dépendant du moment dans la journée.

    Le nombre de possibilités pour cacher un code pourri est impressionnante, nous ne pouvons pas fouiller toutes les données (html, css, sql, php, ...)

    Nous avons exploré plusieurs pistes, nous en sommes au moment, où quelques conseils extérieurs, expériences externes peuvent être les bienvenus.

    Nous avons exploré, au niveau apache, mod_dumpio et mod_ext_filter, au niveau réseau nous avons fait quelques captures tcpdump.

    tcpdump ne nous a rien apporté qui aurait pu nous permettre d'identifier le script fautif, il nous a simplement confirmé les tentatives de connexions et quelques autres paramètres.

    mod_dumpio nous posent un problème, il est configurable en "Server config" donc nous ne pouvons pas "dumper" juste un site. Nous enregistrons un trafic très important d'où la difficulté d'analyse des informations enregistrées.

    mod_ext_filter est peut être la solution, nous avons écrit un script en PERL qui enregistre l'environnement et les premiers caractères des données envoyés par le serveur.

    En recoupant ces informations avec l'analyse des logs d'apache en se basant sur les dates et heures des tentatives de connexions et en essayant d'analyser les modifications enregistrées sur les fichiers le jour du début de ces tentatives nous espérons retrouver le script ou au moins le site à partir du quel le script est déclenché.

    Nous avons l'impression qu'il y a peut être mieux, moins empirique. Si vous avez une expérience sur le sujet "your welcome".

    Merci de nous avoir lu.

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par ericduval Voir le message
    En recoupant ces informations avec l'analyse des logs d'apache en se basant sur les dates et heures des tentatives de connexions et en essayant d'analyser les modifications enregistrées sur les fichiers le jour du début de ces tentatives nous espérons retrouver le script ou au moins le site à partir du quel le script est déclenché.
    Je partirais de là aussi : si tu sais à partir de quand le script s'exécute, tu peux identifier dans les logs Apache les URL qui pourraient être responsables de l'appel de ce script si tant est que c'est un script PHP. Après, tu vas voir le code de ces différents scripts et tu essaies de comprendre. A mon avis, il faut suffisamment d'échantillons de logs pour affiner la recherche et cerner le script.

    Sinon, je tenterais la force brute : un sur tout le disque pour chercher un fichier qui contient le port 6667

    Tu peux aussi faire un pour identifier le ou les processus qui appellent le port 6667 quand le script tourne. Ca te donnera un PID donc avec un tu trouveras le processus en cause. Si c'est Apache, dommage, il ne restera plus qu'à aller consulter les logs mais si c'est autre chose qu'Apache, tu auras une chance de le trouver.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Sinon, je tenterais la force brute : un "grep -Rl 6667 *" sur tout le disque pour chercher un fichier qui contient le port 6667
    Nous avons déjà un peu fait ça sur les sauvegardes afin d'éviter de charger les serveurs de production. Nous pensons que le code est crypté ou écrit en hexadécimal comme ça tu peux toujours te gratter pour les analyses en force brute !

    Citation Envoyé par _Mac_ Voir le message
    Si c'est Apache, dommage, il ne restera plus qu'à aller consulter les logs mais si c'est autre chose qu'Apache, tu auras une chance de le trouver.
    C'est apache c'est pour ça que nous avons du mal à identifier le script fautif caché au milieu de milliers d'autres scripts.

  4. #4
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Trouvé !

    Les webmasters n'ont pas vraiment suivi les préconisations des développeurs de e107.org, quelques vieux bugs bien connus des utilisateurs de e107.

    http://e107.org/comment.php?comment.news.868

    http://www.untwistedvortex.com/2010/...ock-em-robots/

    La méthode empirique (citée dans mon premier message) fonctionne mais personne ne dispose d'autres solutions ? J'aurai bien aimé connaître vos façons de faire sur le sujet.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

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