Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Prober — Marco de pruebas automatizado y reproducible de seguridad de redes usando Ansible y BATS para verificar DNS, disponibilidad de hosts, puertos abiertos y configuración TLS desde múltiples puntos de vista. | Kitploit
Herramientas/GitLabGitLab/isnic/prober
Escáneres de VulnerabilidadesEscaneo de PuertosAuditoría de ConfiguraciónSeguridad de RedesPruebas de PenetraciónAnálisis de DNS
GitLabisnic/prober

Prober

Marco de pruebas automatizado y reproducible de seguridad de redes usando Ansible y BATS para verificar DNS, disponibilidad de hosts, puertos abiertos y configuración TLS desde múltiples puntos de vista.

Ver Repositorio
14hace 5 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Verificar supuestos de red de forma reproducible

Este proyecto utiliza Ansible para generar archivos de prueba BATS que verifican supuestos de seguridad sobre la infraestructura de red. Las pruebas se ejecutan desde máquinas de prueba ("nodos prober") en las que se despliega Prober.

Esta herramienta está diseñada para pruebas automatizadas y reproducibles de redes propias. Admite múltiples nodos prober ejecutando pruebas, cada uno con una vista diferente de la red sondada — por ejemplo, una vista desde la zona externa, desde una zona interna, y una vista desde dentro de la DMZ.

Usar Prober para sondear redes para las que no estás autorizado podría ser ilegal.

Requisitos

En el maestro de Ansible utilizado para desplegar pruebas a los nodos prober:

  • ansible (¡obvio!)
  • python*-netaddr (en GNU/Linux) / py*-netaddr (en FreeBSD)

En los propios nodos prober:

  • bash
  • ssh
  • nmap
  • dig/kdig
  • testssl
  • y cualquier otra dependencia que instale el rol de Ansible.
  • En un sistema donde revises los resultados (archivos *.tap), quizás quieras instalar tappy. Los resultados se mantienen en cada nodo prober, en repositorios git locales (por defecto, en /var/run/prober/results/, ver más abajo las opciones de configuración), con commits etiquetados con la fecha de finalización de cada ejecución de escaneo, para registro histórico y fácil comparación.

    Operación

    Se utiliza Ansible para generar pruebas en los nodos prober. Un nodo prober puede ser cualquier host FreeBSD o GNU/Linux, siempre que sea posible instalar las dependencias de Prober. No necesita estar dedicado a pruebas, pero se recomienda — un escaneo de una red de tamaño razonable tomará horas, usará mucha CPU y generará bastante tráfico.

    Tiene sentido desplegar Prober en varias máquinas diferentes para comprobar cómo se ve tu red desde distintos puntos de observación (por ejemplo: red interna, DMZ, Internet).

    En el directorio de pruebas en los nodos prober se crea un script run-tests.sh para facilitar la ejecución de las pruebas. Las pruebas se ejecutan de manera que se asegure que <simultaneous_tests_count> pruebas se estén ejecutando simultáneamente en todo momento — esta variable es la forma principal de controlar cuántos recursos usa un escaneo y cuánto ancho de banda necesita.

    Los resultados de las pruebas se guardan luego en un repositorio git local, con commits etiquetados con la fecha en que finalizó una ejecución determinada (que puede ser diferente de la fecha de inicio para algunas ejecuciones largas de escaneo).

    Si se trata de una infraestructura más grande que solo unos pocos hosts, puede tener sentido usar una herramienta como Mitogen para acelerar drásticamente la generación de pruebas.

    Inicio rápido

    1. Prepara un servidor Debian o FreeBSD para usarlo como nodo prober (llamémoslo prober.example.com), asegúrate de tener acceso SSH a él y poder hacer sudo en él.

    2. Copia el inventario de ejemplo como inventories/test/.

    3. En ese inventario test:

      1. edita group_vars/all.yml y establece zone_nameserver, zone_domains, address_blocks a tu gusto; supongamos que agregas example.com como el único dominio a sondear.
      2. edita el archivo hosts, configurando tu nodo prober prober.example.com en la sección [prober-nodes]; digamos que estableces tested_zone como test.
    4. Copia la configuración de zona de ejemplo como data/<tested_zone>.yml (por lo tanto, en nuestro caso: data/test.yml) y edítala; como mínimo, la clave tested_zone_settings.name debe contener el tested_zone (es decir, test).

    5. Exporta tu zona DNS y guárdala como data/<dns_zone>.zone (en nuestro caso: example.com).

    6. Ejecuta el playbook:

      root@kitploit:~
      ansible-playbook prober.yml -i inventories/test/ -vvv
      

      Esto generará las pruebas en el nodo prober y configurará un cronjob para ejecutarlas cada noche a la 01:00 AM

    Ahora puedes hacer ssh al nodo prober e inspeccionar las pruebas generadas en /opt/prober/. Una vez que estés satisfecho, puedes ejecutarlas con: /opt/prober/run_tests.sh. Los resultados se guardarán en /var/run/prober/results.

    Configuración

    Variables de configuración (definidas en probers.yml):

    • tests_directory (por defecto: /opt/prober):
      directorio en los nodos prober donde se generan los archivos de prueba (archivos *.bats).

    • results_repo_directory (por defecto: /var/run/prober/results): directorio del repositorio para los resultados de las pruebas (archivos *.tap); allí se inicializa un repositorio git y se crea un subdirectorio tap/ para los resultados reales; los resultados se confirman en el repositorio git, los commits se etiquetan con una fecha en formato yyyy-mm-dd (el commit con los resultados de una prueba que finalizó el 19 de marzo de 2020 se etiqueta como 2020-03-19, por ejemplo).

    • simultaneous_tests_count (por defecto: 20):
      cuántas pruebas se ejecutan simultáneamente.

    • prober_dev (por defecto: sin definir):
      omite ciertas tareas que no tienen sentido en una máquina de desarrollo (como configurar cron o zabbix).

    Zonas

    Las zonas se definen en archivos ./data/<nombre_de_zona>.yml con la clave principal siendo la cadena "tested_zone_settings", que a su vez contiene las claves:

    • name: el nombre de la zona, que coincide con el nombre del archivo (sin extensión); por ejemplo: "internal", "external", "dmz"
    • default (opcional): la configuración predeterminada para todos los hosts en esta zona
    • claves de expresión regular (que comienzan necesariamente con un carácter "^") que coinciden con múltiples FQDN
    • una clave por cada FQDN que necesita configuración explícita

    La clave default, cada clave de expresión regular y cada clave de dominio a su vez pueden contener estas claves:

    • resolve: si el host debe resolver a la dirección IP relevante (booleano true/false, o la cadena "skip")
    • ping: si el host debe responder a ping (booleano true/false, o la cadena "skip")
    • ports: lista de puertos TCP y UDP permitidos para estar abiertos (subclaves "tcp" y "udp", cada una contiene un array de enteros que definen los puertos permitidos, o la cadena "skip"), y puertos con TLS habilitado para hacer una inspección más profunda (la subclave tls, que contiene un dict con números de puerto como claves y el tipo de servicio TLS o la palabra "skip" como valor)
      ports: "skip" es una abreviatura de:
      root@kitploit:~
      ports:
        tcp: "skip"
        udp: "skip"
        tls: "skip"
      
      Los tipos de servicio TLS son los que testssl.sh soporta para la opción -t/--starttls, "https" para prueba HTTPS (incluyendo cabeceras), o "tls" para prueba TLS genérica.
      AVISO: Las pruebas TLS no se ejecutan a menos que el puerto también esté marcado como abierto en la clave "tcp".
    • skip: si el host debe omitirse por completo (booleano)

    Puedes ver la configuración de ejemplo aquí.

    Los valores predeterminados globales se definen en probers.yml. Para cada host sondado, estos se combinen con los valores predeterminados de la zona relevante, luego con las claves de expresión regular que coinciden con un nombre de host dado, y finalmente con la configuración específica del host.

    Esto significa que la configuración de hosts específicos en una zona determinada tiene prioridad sobre la configuración de las claves de expresión regular, que a su vez tienen prioridad sobre los valores predeterminados de la zona, que a su vez tienen prioridad sobre los valores predeterminados globales.

    La clave ports se trata de manera especial: si ciertos puertos están listados en algún lugar de la cadena de herencia de configuración, es imposible eliminarlos más abajo en la cadena, solo se pueden agregar números de puerto adicionales, o usar "skip" para omitir las pruebas de todos los puertos de un protocolo dado por completo.

    Los archivos de zona se seleccionan según la variable tested_zone establecida para cada nodo prober.

    Pruebas por IP vs. pruebas por nombre de host

    Algunas pruebas tienen sentido en el contexto de direcciones IP individuales, independientemente de cuántos dominios/nombres de host resuelvan a ellas; por ejemplo, verificar si ciertos puertos están abiertos. Por ejemplo, supongamos que a.example.com y b.example.com apuntan a la misma dirección IP. Con la configuración del ejemplo anterior, eso significa que los puertos 8080/tcp y 8443/tcp deben estar abiertos, y que se espera HTTPS en el puerto 8443/tcp.

    Algunas pruebas tienen sentido en el contexto de combinaciones particulares de dominio/nombre de host y dirección IP; por ejemplo, si el certificado TLS presentado para un nombre de dominio particular en una dirección IP particular es válido.

    Estos dos tipos de pruebas se implementan generando dos listas separadas de objetivos:

    • lista por IP, donde cada elemento es de la forma:
      <dirección-ip> <nombrehost1> (<nombrehost2> <nombrehost3> ... <nombrehostN>)
      Las direcciones IP no deben repetirse en esta lista;
    • lista por nombre de host, donde cada elemento es de la forma:
      <dirección-ip> <nombrehost>
      Se puede esperar que las direcciones IP se repitan en esta lista.

    Algunos archivos de prueba se generan solo para objetivos de la primera lista (por ejemplo, pruebas de puertos abiertos), y otros solo para objetivos de la segunda lista (por ejemplo, relacionadas con TLS).

    Puertos y pruebas

    Algunas pruebas no tienen sentido si ciertos puertos no están abiertos. Las pruebas relacionadas con TLS se generan para un host determinado solo si algún puerto TCP relevante está configurado como open en la zona dada.

    Por defecto, si alguno de los puertos conocidos habilitados para TLS está configurado como abierto en la clave ports.tcp, se generarán pruebas TLS para ellos. La lista de puertos conocidos habilitados para TLS está definida en la variable default_host_settings.

    Preguntas Frecuentes

    En general, la diferencia entre Prober y muchas otras herramientas o servicios similares suele resumirse en alguna combinación de:

    • ser auto-alojado, con nodos Prober desplegables en cualquier ubicación dentro o fuera de tu infraestructura;
    • centrarse en escaneos regulares y reproducibles que verifican supuestos bien definidos y configurables;
    • darte control sobre el cronograma de las ejecuciones de pruebas y acceso a los resultados de escaneo sin procesar.

    ¿En qué se diferencia de Shodan?

    Shodan rastrea Internet para encontrar sistemas expuestos. Prober rastrea tu propia infraestructura para verificar tus supuestos sobre ella, desde tantos puntos de observación como necesites. Se centra en la reproducibilidad de los resultados mediante pruebas bien definidas y ejecuciones regulares programadas, e intenta entregar un resultado booleano "pasa/falla" para cada uno de los supuestos probados (con los datos completos del escaneo disponibles para inspección).

    ¿En qué se diferencia de BitSight?

    BitSight verifica su idea de supuestos razonables sobre tu infraestructura, sin darte control ni información sobre cuándo exactamente se realizará un escaneo, ni proporcionar los datos de escaneo sin procesar. Prober verifica tus supuestos sobre tu infraestructura, lo hace en tu cronograma y proporciona todos los datos de escaneo sin procesar para su inspección.

    ¿En qué se diferencia de Natlas?

    Natlas parece estar más cerca de Shodan (rastrear para encontrar hosts expuestos, mostrar resultados en respuesta a consultas), pero con la capacidad de auto-alojarse (y por lo tanto también de ejecutar el Agente Natlas en diferentes ubicaciones dentro y fuera de tu infraestructura, como los nodos Prober). Prober ejecuta escaneos regulares de tu infraestructura para verificar tus propios supuestos sobre ella, tal como se expresan en la configuración.

    Preguntas grandes

    • ¿Cambiar a un sistema de pruebas más potente?
      • BATS tiene limitaciones molestas, por ejemplo: no hay forma de hacer pruebas condicionales ("si la Prueba A falla, entonces salta la Prueba B", etc.)
      • ¿Abandonar el sistema de pruebas por completo?
        • https://docs.ansible.com/ansible/latest/reference_appendices/test_strategies.html
        • https://github.com/benwebber/ansible-tap
    • Los escaneos de bloque completo IPv6 son imposibles de completar en un milenio
      • proporcionar una forma de configurar la heurística para seleccionar IPs a escanear (aleatorio, comenzar desde abajo con un "paso" configurado, etc.)

    Agradecimientos

    Logotipo basado en Lupa por verry obito, ID; CC-By y Red por Creative Stall, PK; CC-By, vía the Noun Project.

    Descargar herramienta