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
scannerl — El motor de fingerprinting distribuido y modular | Kitploit
Herramientas/GitHubGitHub/kudelskisecurity/scannerl
ReconocimientoMapeo de RedesRecopilación de Información
GitHubkudelskisecurity/scannerl

scannerl

El motor de fingerprinting distribuido y modular

Ver Repositorio
21942hace 8 añosRevisado por Kitploit

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

Scannerl

License: GPL v3 AUR

Scannerl es un motor modular de fingerprinting distribuido implementado por Kudelski Security. Scannerl puede generar huellas digitales de miles de objetivos en un solo host, pero también puede distribuirse fácilmente a través de múltiples hosts. Scannerl es al fingerprinting lo que zmap es al escaneo de puertos.

Scannerl funciona en Debian/Ubuntu/Arch (pero probablemente funcione en otras distribuciones también). Utiliza una arquitectura maestro/esclavo donde el nodo maestro distribuye el trabajo (host(s) a identificar) a sus esclavos (locales o remotos). Toda la implementación es transparente para el usuario.

Por qué usar Scannerl

Cuando se utilizan herramientas convencionales de fingerprinting para análisis a gran escala, los investigadores de seguridad a menudo se topan con dos limitaciones: primero, estas herramientas suelen estar diseñadas para escanear relativamente pocos hosts a la vez y no son adecuadas para grandes rangos de direcciones IP. Segundo, si se escanea un gran rango de direcciones IP protegidas por dispositivos IPS, la probabilidad de ser incluido en una lista negra es mayor, lo que podría llevar a un conjunto de información incompleto. Scannerl está diseñado para sortear estas limitaciones, no solo proporcionando la capacidad de identificar múltiples hosts simultáneamente, sino también distribuyendo la carga entre un número arbitrario de hosts. Scannerl también hace que la distribución de estas tareas sea completamente transparente, lo que hace que la configuración y el mantenimiento de proyectos de fingerprinting a gran escala sean triviales; esto permite centrarse en los análisis en lugar de la tarea hercúlea de gestionar y distribuir procesos de fingerprinting manualmente. Además del factor de velocidad, scannerl ha sido diseñado para permitir configurar fácilmente análisis de fingerprinting específicos en unas pocas líneas de código. No solo es fácil configurar un clúster de fingerprinting, sino que se puede ajustar añadiendo escaneos finamente ajustados a sus campañas de fingerprinting.

Es la herramienta más rápida para realizar campañas de fingerprinting a gran escala.

Para más información:

  • Fingerprint all the things with scannerl at BlackAlps
  • Fingerprinting MySQL with scannerl
  • Fingerprint ICS/Scada with scannerl
  • Distributed fingerprinting with scannerl
  • 6 months of ICS scanning

Tabla de contenidos

  • Instalación

  • Uso

    • Uso independiente
    • Uso distribuido
    • Módulos disponibles
    • Argumentos de módulos
    • Formato de resultados
  • Extender Scannerl

  • Contribuir

  • Licencia y Copyright

Consulte la wiki para más información.

Instalación

Consulte las diferentes opciones de instalación en la página de instalación de la wiki

Para instalar desde el código fuente, primero instale Erlang (al menos v.18) eligiendo el paquete correcto para su plataforma: Descargas de Erlang

Instale los paquetes requeridos:

root@kitploit:~
# en debian
$ sudo apt install erlang erlang-src rebar

# en arch
$ sudo pacman -S erlang-nox rebar

Luego compile scannerl:

root@kitploit:~
$ git clone https://github.com/kudelskisecurity/scannerl.git
$ cd scannerl
$ ./build.sh

Obtenga el uso ejecutando

root@kitploit:~
$ ./scannerl -h

Scannerl está disponible en AUR para usuarios de arch linux

  • scannerl
  • scannerl-git

Los DEBs (Ubuntu, Debian) están disponibles en los lanzamientos.

Los RPMs (Opensuse, Centos, Redhat) están disponibles en https://build.opensuse.org/package/show/home:chapeaurouge/scannerl.

Configuración distribuida

Se necesitan dos tipos de nodos para realizar un escaneo distribuido:

  • Nodo maestro: aquí es donde se ejecuta el binario de scannerl
  • Nodo(s) esclavo(s): aquí es donde scannerl se conectará para distribuir todo su trabajo

El nodo maestro necesita tener scannerl instalado y compilado, mientras que el nodo(s) esclavo(s) solo necesita tener Erlang instalado. Toda la configuración es transparente y se realiza automáticamente por el nodo maestro.

Requisitos para un escaneo distribuido:

  • Todos los hosts tienen la misma versión de Erlang instalada
  • Todos los hosts pueden conectarse entre sí usando clave pública SSH
  • Los nombres de todos los hosts se resuelven (use /etc/hosts si no hay un DNS adecuado configurado)
  • Todos los hosts tienen la misma cookie de seguridad Erlang
  • Todos los hosts deben permitir la conexión al puerto EPMD de Erlang (TCP/4369)
  • Todos los hosts tienen abierto el siguiente rango de puertos: TCP/11100 a TCP/11100 + número-de-esclavos

Uso

root@kitploit:~
$ ./scannerl -h
   ____   ____    _    _   _ _   _ _____ ____  _
  / ___| / ___|  / \  | \ | | \ | | ____|  _ \| |
  \___ \| |     / _ \ |  \| |  \| |  _| | |_) | |
   ___) | |___ / ___ \| |\  | |\  | |___|  _ <| |___
  |____/ \____/_/   \_\_| \_|_| \_|_____|_| \_\_____|

USO
  scannerl MODULO OBJETIVOS [NODOS] [OPCIONES]

  MODULO:
    -m <mod> --module <mod>
      mod: el módulo de fingerprinting a utilizar.
           los argumentos se separan con dos puntos.

  OBJETIVOS:
    -f <objetivo> --target <objetivo>
      objetivo: una lista de objetivos separados por coma.
    -F <ruta> --target-file <ruta>
      ruta: la ruta del archivo que contiene un objetivo por línea.
    -d <dominio> --domain <dominio>
      dominio: una lista de dominios separados por coma.
    -D <ruta> --domain-file <ruta>
      ruta: la ruta del archivo que contiene un dominio por línea.

  NODOS:
    -s <nodo> --slave <nodo>
      nodo: una lista de nodos (nombres de host, no IPs) separados por coma.
    -S <ruta> --slave-file <ruta>
      ruta: la ruta del archivo que contiene un nodo por línea.
            un nodo también se puede proporcionar con un multiplicador (<nodo>*<nb>).

  OPCIONES:
    -o <mod> --output <mod>     lista separada por comas de módulo(s) de salida a utilizar.
    -p <puerto> --port <puerto>     el puerto a identificar.
    -t <seg> --timeout <seg>    tiempo de espera del proceso de fingerprinting.
    -T <seg> --stimeout <seg>   tiempo de espera de conexión del esclavo (por defecto: 10).
    -j <nb> --max-pkt <nb>      máximo de paquetes a recibir (int o "infinity").
    -r <nb> --retry <nb>        contador de reintentos (por defecto: 0).
    -c <cidr> --prefix <cidr>   subdividir rango con prefijo > cidr (por defecto: 24).
    -M <puerto> --message <puerto>  puerto para escuchar mensajes (por defecto: 57005).
    -P <nb> --process <nb>      máximo de procesos simultáneos por nodo (por defecto: 28232).
    -Q <nb> --queue <nb>        máximo de resultados no procesados en cola (por defecto: infinity).
    -C <ruta> --config <ruta>   leer argumentos desde un archivo, uno por línea.
    -O <modo> --outmode <modo>  0: en el Maestro, 1: en el esclavo, >1: en el broker (por defecto: 0).
    -v <val> --verbose <val>    ser verboso (0 <= int <= 255).
    -K <opt> --socket <opt>     opción de socket separada por coma (clave[:valor]).
    -l --list-modules           listar módulos fp/salida disponibles.
    -V --list-debug             listar opciones de depuración disponibles.
    -A --print-args             Mostrar el registro de argumentos.
    -X --priv-ports             usar solo puerto de origen entre 1 y 1024.
    -N --nosafe                 continuar incluso si algunos esclavos fallan al iniciar.
    -w --www                    DNS intentará con www.<dominio>.
    -b --progress               mostrar progreso.
    -x --dryrun                 ejecución en seco.

Consulte la wiki para más información.

Uso independiente

Scannerl puede usarse en el host local sin ningún otro host. Sin embargo, seguirá creando un nodo esclavo en el mismo host desde el que se ejecuta. Por lo tanto, también se deben cumplir los requisitos descritos en Configuración distribuida.

Una forma rápida de hacer esto es asegurarse de que su host pueda resolverse a sí mismo con

root@kitploit:~
grep -q "127.0.1.1\s*`hostname`" /etc/hosts || echo "127.0.1.1 `hostname`" | sudo tee -a /etc/hosts

y crear una clave SSH (si aún no está presente) y añadirla a authorized_keys (necesita un servidor SSH en ejecución):

root@kitploit:~
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

El siguiente ejemplo ejecuta una captura de banner HTTP en google.com desde localhost

root@kitploit:~
./scannerl -m httpbg -d google.com

Uso distribuido

Para realizar un escaneo distribuido, es necesario preconfigurar los hosts que serán utilizados por scannerl para distribuir el trabajo. Consulte Configuración distribuida para más información.

Scannerl espera una lista de esclavos a utilizar (proporcionada mediante los parámetros -s o -S).

root@kitploit:~
./scannerl -m httpbg -d google.com -s host1,host2,host3

Listar módulos disponibles

Scannerl listará los módulos disponibles (módulos de salida así como módulos de fingerprinting) con el parámetro -l:

root@kitploit:~
$ ./scannerl -l

Módulos de fingerprinting disponibles
================================

bacnet             UDP/47808: Identificación Bacnet
chargen            UDP/19: Identificación de factor de amplificación Chargen
fox                TCP/1911: Identificación FOX
httpbg             TCP/80: Identificación de cabecera HTTP Server
                     - Arg1: [true|false] seguir redirección [Por defecto:false]
httpsbg            SSL/443: Identificación de cabecera HTTPS Server
https_certif       SSL/443: Capturador de certificado HTTPS
imap_certif        TCP/143: Capturador de certificado IMAP STARTTLS
modbus             TCP/502: Identificación Modbus
mqtt               TCP/1883: Identificación MQTT
mqtts              TCP/8883: Identificación MQTT sobre SSL
mysql_greeting     TCP/3306: Identificación de versión de Mysql
pop3_certif        TCP/110: Capturador de certificado POP3 STARTTLS
smtp_certif        TCP/25: Capturador de certificado SMTP STARTTLS
ssh_host_key       TCP/22: Capturador de clave de host SSH

Módulos de salida disponibles
========================

csv                salida a csv
                     - Arg1: [true|false] guardar todo [Por defecto:true]
csvfile            salida a archivo csv
                     - Arg1: [true|false] guardar todo [Por defecto:false]
                     - Arg2: Ruta del archivo
file               salida a archivo
                     - Arg1: Ruta del archivo
file_ip            salida a stdout (solo ip)
                     - Arg1: Ruta del archivo
file_mini          salida a archivo (solo ip y resultado)
                     - Arg1: Ruta del archivo
file_resultonly    salida a archivo (solo resultado)
                     - Arg1: Ruta del archivo
stdout             salida a stdout
stdout_ip          salida a stdout (solo IP)
stdout_mini        salida a stdout (solo ip y resultado)

Argumentos de módulos

Se pueden proporcionar argumentos a los módulos con dos puntos. Por ejemplo, para el módulo de salida file:

root@kitploit:~
./scannerl -m httpbg -d google.com -o file:/tmp/result

Formato de resultados

El resultado devuelto por scannerl a los módulos de salida tiene la siguiente forma:

root@kitploit:~
{módulo, objetivo, puerto, resultado}

Donde

  • módulo: el módulo utilizado (átomo de Erlang)
  • objetivo: IP o nombre de host (cadena o dirección IPv4)
  • puerto: el puerto (entero)
  • resultado: ver más abajo

La parte resultado tiene la forma:

root@kitploit:~
{{estado, tipo}, Valor}

Donde {estado, tipo} es una de las siguientes tuplas:

  • {ok, resultado}: el fingerprinting del objetivo tuvo éxito
  • {error, up}: el fingerprinting no tuvo éxito pero el objetivo respondió
  • {error, desconocido}: el fingerprinting falló

Valor es el valor devuelto - puede ser un átomo o una lista de elementos.

Extender Scannerl

Scannerl ha sido diseñado e implementado teniendo en cuenta la modularidad. Es fácil añadir nuevos módulos:

  • Módulo de fingerprinting: para consultar un protocolo o servicio específico. Como ejemplo, el módulo fp_httpbg.erl permite recuperar la entrada server en la respuesta HTTP.
  • Módulo de salida: para enviar la salida a una base de datos/sistema de archivos específico o mostrar el resultado en un formato específico. Por ejemplo, los módulos out_file.erl y out_stdout.erl permiten enviar la salida a un archivo o a stdout (comportamiento predeterminado si no se especifica).

Para crear nuevos módulos, simplemente siga el comportamiento (fp_module.erl para módulos de fingerprinting y out_behavior.erl para módulos de salida) e implemente sus módulos.

Los nuevos módulos pueden añadirse ya sea en tiempo de compilación o dinámicamente como un archivo externo.

Consulte la página de la wiki para más información.

Contribuir

Siéntase libre de abrir un issue o un PR.

Licencia y Copyright

Copyright(c) 2017 Nagravision SA.

Este programa es software libre: puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU versión 3 publicada por la Free Software Foundation.

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia Pública General de GNU para más detalles.

Debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa. Si no es así, consulte http://www.gnu.org/licenses/.

Descargar herramienta