Este blog ya no está activo, sigue informándote aquí:

lunes, 7 de marzo de 2016

Python.- Escáner para la CVE-2016-0800

Ya hace mas o meno una semana que [esta vulnerabilidad] está entre nosotros y seguro que mas de un gestor de vulnerabilidades ha tenido que correr para ir tapando agujeros. Pues casi desde que se publicó esta vulnerabilidad salió consigo [un escáner programado con python] que nos ayudará mucho a reconocer si somos vulnerables o no. 



Ejemplo de uso del escáner:
  • python scanner.py localhost 443
Vale, empezáis a ver cual es el problema ¿no? ¿Como me lo hago para poder escanear mis 700 equipos y mis 35 puertos de una tirada? Pues nada como saber un poco de Python. 

Vamos a la linea 354 del código del archivo scanner.py:

if __name__ == '__main__':
    if len(sys.argv) < 3:
        sys.exit('Usage: %s <hostname> <port> [-xmpp|-ftp|-proxy|-esmtp|-imap|-pop3|-bare]' % sys.argv[0])

    ip = sys.argv[1]
    port = int(sys.argv[2])
    scan_id = os.getcwd()
    dtime = datetime.datetime.now()
    print 'Testing %s on port %s' % (ip, port)
    ...

Y la substituimos por lo siguiente:

if __name__ == '__main__':
   
      lport = ["443"]

    ipsaqui = open("ponlasipsaqui.txt")

    for line in ipsaqui:
        ip = line.strip("\n")
        for item in lport:
            port = int(item)
            scan_id = os.getcwd()
            dtime = datetime.datetime.now()
            print 'Testing %s on port %s' % (ip, port)
            ...

Si sabéis un poco de Python lo que estamos haciendo con estas lineas es decirle que por cada linea que haya en el txt y por cada puerto que pongamos a la lista lport  cambie los valores de ip y port y siga con el flujo habitual del programa. Una vez acabe cambiara el puerto y cuando ya no le queden mas puertos entonces cambiará el valor de ip. 

El escáner funciona tanto por números de ip como por dominios aunque Python es así de divertido y nos regala un "\n" (Un salto de linea) en cada linea, por eso veis que la variable ip es igual a la linea quitándole la dichosa "\n"  (line.strip("\n"))

Seguro que se os ocurren mejores formas de hacerlo, pero por si no sabéis por donde empezar, creo que está bastante bien. 

Sed Buenos con esto 0;)

No hay comentarios:

Publicar un comentario