No hay salida desde el script nmap

0

Estoy tratando de usar el script nmap ssl-dh-params para identificar qué grupo específico de Diffie-Hellman de 1024 bits está usando un servidor TLS. Sin embargo, el script no me da ningún resultado y no puedo entender por qué:

C:\Users\user3553031>nmap -p 1234 --script=ssl-dh-params 10.0.0.1
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-09 17:55 Pacific Daylight Time
Nmap scan report for somehost.somedomain (10.0.0.1)
Host is up (0.022s latency).

PORT     STATE SERVICE
1234/tcp open  unknown
MAC Address: 01:01:01:01:01:01 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 3.34 seconds

Sé que hay un detector de TLS en ese puerto y que es compatible con los conjuntos de cifrado DHE: el script ssl-enum-ciphers genera una salida que incluye lo siguiente:

PORT     STATE SERVICE REASON
1234/tcp open  unknown syn-ack ttl 55
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 1024) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 1024) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       Key exchange (dh 1024) of lower strength than certificate key
|_  least strength: A

Eso también me dice que las secuencias de comandos no están completamente interrumpidas en mi compilación de nmap. Sé que la secuencia de comandos está instalada porque cuando intento ejecutar una secuencia de comandos con un nombre sin sentido, aparece un error. Así que parece que se cumplen las condiciones previas para ssl-dh-params . Sin embargo, no obtengo resultados de él, ni de nmap para indicar que intenté ejecutar ese script, incluso cuando ejecuto nmap con -vvvvv -ddddd .

¿Qué está pasando? ¿Estoy cometiendo algún error? ¿Está roto el script?

    
pregunta user3553031 10.07.2018 - 03:05
fuente

2 respuestas

2

Los scripts de Nmap requieren que la función "regla" devuelva true antes de que se ejecuten contra un objetivo. La función de la regla para ssl-dh-params comprueba los números de puerto SSL comunes, pero también para ver si la detección de versión ( -sV ) encontró SSL presente. Puede hacer que funcione en cualquier puerto fácilmente agregando -sV , o si tiene prisa, -sV --version-light .

Debido a que ssl-enum-ciphers es un script muy popular que la gente suele solicitar para ejecutarse en puertos inusuales, expandimos la función de regla para que ese script también envíe algunas sondas de detección de SSL si no se solicitó la detección de versiones. No hicimos este cambio en otras secuencias de comandos ssl-* porque menos usuarios se quejaron de los resultados perdidos de esta manera. Consideraremos agregar esto a otros scripts en el futuro.

EDITAR: Hoy moví el código de sondeo adicional de ssl-enum-ciphers a la función shortport.ssl para que todos los scripts relacionados con SSL / TLS puedan funcionar de la misma manera. Las sondas solo se enviarán una vez por puerto; el resultado se almacena en caché y será verificado por los otros scripts según sea necesario. Míralo en el próximo lanzamiento de Nmap.

    
respondido por el bonsaiviking 10.07.2018 - 20:23
fuente
1

Es posible que desee verificar el código fuente del script en / usr / share / nmap / scripts.

Por lo que puedo ver, parece tener una regla, es decir, una regla que determina si el script es realmente aplicable para este puerto:

portrule = function(host, port)
  return shortport.ssl(host, port) or sslcert.getPrepareTLSWithoutReconnect(port)
end

Desde la doucmentation parece que shortport.ssl verifica si el puerto es un puerto ssl común . Así que tal vez ese es el problema aquí. Intente copiar el script NSE y modificar la línea de retorno (no lo probé yo mismo):

portrule = function(host, port)
  return shortport.port_or_service(1234,"ssl")
end

Consulte el Tutorial de escritura de scripts NSE para obtener más información sobre las reglas.

    
respondido por el John Nemo 10.07.2018 - 14:03
fuente

Lea otras preguntas en las etiquetas