Page 1 sur 3 123 DernièreDernière
Affichage des résultats 1 à 10 sur 27

Discussion: Script php pour les sipvicious

  1. #1
    Membre Association
    Date d'inscription
    octobre 2010
    Messages
    100
    Downloads
    0
    Uploads
    0

    Script php pour les sipvicious

    Code PHP:
    #!/usr/bin/php
    <?php
    // ####################################################
    // #                                                  #
    // #           4sipviciuous VER 0.1 | 2011            #
    // #                   DOTSMART                       #
    // #            http://www.dot-smart.com              #
    // #                                                  #
    // ####################################################
    //
    // L intérêt de ce script est de pouvoir analyser les fichiers log d'1 asterisk et de partager les informations des scans sur la grappe entière.
    // Les nÅ“uds de la  grappe connaitrons avant le scan les ip susceptibles de les scanners
    // Pourquoi php-cli ? pourquoi pas !
    // ereg = deprecated
    //
    //
    // Structure de la table 4sipvicious
    //  CREATE TABLE IF NOT EXISTS `ip_blocked2` (
    //  `id` int(11) NOT NULL AUTO_INCREMENT,
    //  `date_insert` datetime NOT NULL,
    //  `date` varchar(30) NOT NULL,
    //  `ip` varchar(30) NOT NULL,
    //  `port` varchar(5) NOT NULL,
    //  `autorise` int(11) NOT NULL,
    //  PRIMARY KEY (`id`),
    //  KEY `ip` (`ip`,`port`,`date_insert`)
    //  ) ENGINE=MyISAM  DEFAULT
    //
    // Crontab -e | */5 * * * * sudo /usr/bin/php ../../4sipvicious2.php > /dev/null 2>&1
    //
    // Penser au logrotate pour Ã©viter des traitements de logs trop volumineux
    //
    // roadmap :    ajouter exp. regulieres pour iptables et gestion du port
    //              ajouter la gestion de l’état 2 pour autoriser une ip depuis la database + iptables + suppression dans iptables si présente
    //              centraliser les clients ipbx
    //              passe 1 ip en défaut au bout de X tentatives, he oui les  utilisateurs ont le droit de se tromper ! (gestion, peut Ãªtre envoyer un Ã©mail a l utilisateur ?)

    $host           "LA DB";
    $login          "LE LOGIN MYSQL";
    $mdp            "LE MDP MYSQL";
    $db             "4sipvicious";
    $action         NULL;
    $stack_ip       = array();                                                                               // Création de la stack ip
    $stack_info     = array();                                                                               // Création de la stack info
    $fichier        "/var/log/asterisk/messages";                                                          // Fichier de log asterisk
    if (!$fp fopen($fichier,"r"))                                                                          // Ouverture du fichier,
            
    {       print "Error open file\n"; exit;                                                         // si problème on affiche et exit les pointes seches
    }else   {       print "Read file $fichier ...\n";                                                        // Pas de problème ... la suite
            
    while(!feof($fp)) {                                                                              // La boucle du fichier
                    
    $Ligne fgets($fp,4096);                                                                // Lecture des ligne
                    
    ereg("\[(.*){1}\].*\].*failed for '(.*):(.*)' - No matching peer found",$Ligne,$askip);  // On recherche exp reg pour 1.8 supprimer :.* pour les < 1.8
                    
    if ($askip == TRUEarray_push($stack_info, array($askip[1], $askip[2], $askip[3]));     // On push l'ip trouvee dans la stack avec les infos correspondantes
            
    }                                                                                                // Fin de la boucle
            
    fclose($fp);                                                                                     // On ferme le fichier de log
    }                                                                                                        // fin de lecture du fichier log
                                                                                                             // Maintenant on verifie et integre Ãƒ* la BD
    $link mysql_connect($host$login$mdp);                                                              // CX a la mysql
    if (!$link) { die('Could not connect: ' mysql_error()); exit; }                                        // piti erreur pour la DB ?
    mysql_select_db($db,$link);                                                                              // on sélection la DB 4sipvicious
    print 'DB connected successfully\n';
                                                                                                             
    // Ah le (if not exist) de mysql quel bonheur
    reset($stack_info);                                                                                      // on reset la stack
    foreach ($stack_info as $v1) {                                                                           // On boucle la stack ip_info
    $da=$v1[0];     print "date:"   .$da."|";
    $ip=$v1[1];     print "ip:"     .$ip."|";
    $po=$v1[2];     print "port:"   .$po."\n";

    $query  mysql_query("select `id` from `ip_blocked2` where `date` = '".$da."' and `ip` = '".$ip."' and `port` = '".$po."';");
    $num    mysql_num_rows($query);

    if(
    $num == 0)
            {                                                                                                
    // Si inexistante,ajout
                    
    $sql "INSERT INTO  `4sipvicious`.`ip_blocked2` (`id` ,`date_insert` ,`date` ,`ip` ,`port` ,`autorise`) VALUES (NULL , NOW( ) ,  '$da',  '$ip',  '$po',  '0');";
                    
    $result mysql_query($sql);
                    print 
    "record insert for ".$ip;
    } elseif(
    $num 0) {
                    print 
    "record exit, remember 1 per seconde :(, we are not not reference ";               // inexistante
            
    }

    }
                                                                                                             
    // On s'occupe d'iptables
    $commande       popen('iptables-save -c 2>&1''r');                                                   // Facile
    $iptables       = (fread($commande8096));                                                              // c'est fini !
    pclose($commande);                                                                                       // Fermeture popen
                                                                                                             // Bouclage de des ips et verification de son existance dans iptables
                    
    $sql mysql_query("SELECT DISTINCT(ip), port FROM `4sipvicious`.`ip_blocked2`");        // On liste les ip unique avec le port
                    
    while ($result mysql_fetch_array($sql)) {
    if (
    preg_match("/".$result['ip']."/",$iptables))        {                                                // ip db est elle existante dans iptables ?
                    
    print $result['ip']." is present, next\n";
    } else{
                    
    $action .= "/sbin/iptables -I INPUT -s ".$result['ip']." -p udp --dport ".$result['port']." -j DROP\n";
                    print 
    $result['ip']." is not present, next\n";
            }

    }
    if (
    $action == TRUE)            system($action);                                                         // On lance iptables avec toutes les ip a dropper
    if (mysql_close($link))                                                                                  // On ferme tout et sortie
    print 'down connected successfully\n';
    exit;
    ?>

  2. #2
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 418
    Downloads
    0
    Uploads
    0
    en une ligne:

    Code:
    iptables -A INPUT -p udp -m string --string "sipvicious" --algo bm --to 300 -m udp --dport 5060 -j DROP

    et bye bye sipvicious.....

  3. #3
    Membre Association
    Date d'inscription
    octobre 2010
    Messages
    100
    Downloads
    0
    Uploads
    0
    C'est moins rigolo et nous aimons les expressions régulières
    et puis ça évolue vite (d'ailleurs le sipvicous, n'est pas toujours sipvisious) . Au moins là ... mais y' bien d'autres méthodes.

  4. #4
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 418
    Downloads
    0
    Uploads
    0
    :-) :-) :-) :-) :-) j'aime bien ta réponse...

    + sérieusement, j'ai tous les noms des scanners rentrés dans mes iptables, et j'ai jeté fail2ban à la poubelle.... enfin, qd meme pas, mais il n'intercepte jamais rien... alors que mes iptables choppent 3-4 scanners / jour

    la "beauté" de ces filtres iptables, c'est que le scanner ne voit meme pas le serveur voip... alors que f2b lui révèle (avec ton script, seulement sur le premier serveur attaqué).

    je peux faire parvenir l'ensemble des signatures que j'ai en PM, j'ai pas trop envie de trop distribuer, sinon elles vont évoluer !

  5. #5
    Membre Association
    Date d'inscription
    octobre 2010
    Messages
    100
    Downloads
    0
    Uploads
    0
    Citation Envoyé par jean Voir le message
    la "beauté" de ces filtres iptables, c'est que le scanner ne voit meme pas le serveur voip... alors que f2b lui révèle (avec ton script, seulement sur le premier serveur attaqué).
    C'est vrai, mais ou est le plaisir

    Citation Envoyé par jean Voir le message
    je peux faire parvenir l'ensemble des signatures que j'ai en PM, j'ai pas trop envie de trop distribuer, sinon elles vont évoluer !
    Avec plaisir. je t'enverrai en échange la collecte faite depuis 4 ans un peu lourd le fichier.

  6. #6
    Membre Association
    Date d'inscription
    septembre 2010
    Localisation
    Isle sur la Sorgue 84800
    Messages
    369
    Downloads
    0
    Uploads
    0
    Tout ça est très bien mais suite à pas mal d'audits sur des serveurs ayant eu des
    cracks importants, sauf quelques rares cas de serveurs mal configurés, 9 fois sur 10 un bon hacker arrive avec tout ce qu'il faut pour utiliser le compte
    ayant déjà collecté les infos coté point faible, l'utilisateur,
    j'ai publié il y à quelques mois un code pour hacker les audiocodes avec 50% de réussite.
    Bricolez un petit
    robot (même pas dur a faire) pour scanner des ranges d'ip en permanence
    ou mieux (mais légèrement plus complexe) le distribuer le sous forme de Virus :-) et vous pouvez scanner le monde et obtenir des comptes valides frais chaque matin en vous levant :-)

  7. #7
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 418
    Downloads
    0
    Uploads
    0
    pas franchement compris ta réponse...

    bien sur, l'utilisateur est un point faible (nous serions tous plus heureux sans utilisateurs... ou pas !). C'est pour ca que certains soft, comme freepbx ont des modules de détection de password faibles

    en revanche, bien sur que c'est simple de scanner... mais avec un bon iptables et un fail2ban, un scanner sans relation avec un utilisateur a du mal rentrer

  8. #8
    Membre Association
    Date d'inscription
    octobre 2010
    Messages
    100
    Downloads
    0
    Uploads
    0
    Citation Envoyé par jean Voir le message
    nous serions tous plus heureux sans utilisateurs... ou pas
    Il est quand même préférable d'avoir des utilisateurs, que ferions nous sans eux ?!

  9. #9
    Membre Association
    Date d'inscription
    août 2010
    Messages
    856
    Downloads
    0
    Uploads
    0
    Il pourrait être intéressant de mettre en place un serveur Asterisk "pot de miel" qui récupère les ip, le nombre de tentatives depuis chaque, la date de la dernière, etc... et de partager tout ça entre les membres de l'asso

  10. #10
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 418
    Downloads
    0
    Uploads
    0
    @ds3 - Umour évidemment ;-) (sans bande dessinée...)

    @ffossard - il y a tellement d'ip qui scannent... en fait j'ai un honey pot, mais qui me permet de récupérer les signatures des scanners, et je les rajoute dans mes iptables.

    je reste convaincu que cette technique (signatures dans iptables) est la plus efficace en premier niveau... il en faut d'autres pour ceux qui passent, mais ils sont rares !

    J.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •