Nessun output dallo script nmap

0

Sto provando a utilizzare lo script nmap ssl-dh-params per identificare quale specifico gruppo Diffie-Hellman a 1024 bit utilizza un server TLS. Tuttavia, lo script non mi dà alcun risultato e non riesco a capire perché:

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

So che esiste un listener TLS su quella porta e supporta le cipheruites DHE: lo script ssl-enum-ciphers fornisce l'output che include quanto segue:

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

Questo mi dice anche che lo scripting non è completamente infranto nella mia build nmap. So che lo script è installato perché quando provo a eseguire uno script con un nome senza senso, ottengo un errore. Quindi sembra che le precondizioni a ssl-dh-params siano soddisfatte. Tuttavia non ottengo alcun risultato da esso o da nmap per indicare che ho provato a eseguire lo script, anche quando eseguo nmap con -vvvvv -ddddd .

Cosa sta succedendo? Sto facendo un errore? Lo script è rotto?

    
posta user3553031 10.07.2018 - 03:05
fonte

2 risposte

2

Gli script di Nmap richiedono che la funzione "regola" restituisca true prima che vengano eseguiti contro un obiettivo. La funzione di regola per ssl-dh-params controlla i numeri di porta SSL comuni, ma anche per determinare se il rilevamento della versione ( -sV ) ha rilevato SSL presente. Puoi farlo funzionare facilmente su qualsiasi porta aggiungendo -sV o se hai fretta, -sV --version-light .

Poiché ssl-enum-ciphers è uno script molto popolare che le persone spesso richiedono di eseguire su porte insolite, abbiamo ampliato la funzione di regole per lo script per inviare anche alcune sonde di rilevamento SSL se il rilevamento della versione non è stato richiesto. Non abbiamo apportato questa modifica ad altri script ssl-* perché un numero inferiore di utenti si è lamentato dei risultati mancanti in questo modo. Considereremo l'aggiunta di questo ad altri script in futuro.

EDIT: oggi ho spostato il codice di esplorazione extra da ssl-enum-ciphers nella funzione shortport.ssl in modo che tutti gli script relativi a SSL / TLS possano funzionare nello stesso modo. Le sonde verranno inviate solo una volta per porta; il risultato viene memorizzato nella cache e verrà controllato dagli altri script in base alle esigenze. Guardalo nella prossima versione di Nmap.

    
risposta data 10.07.2018 - 20:23
fonte
1

Potresti voler controllare il codice sorgente dello script in / usr / share / nmap / scripts.

Da quello che vedo, sembra che abbia una portrina, cioè una regola che decifra se lo script è effettivamente applicabile per questa porta:

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

Dalla doucmentation sembrerebbe che shortport.ssl controlli se la porta è una porta ssl comune . Quindi forse questo è il problema qui. Prova a copiare lo script NSE e modifica la riga di restituzione (non l'ho verificato personalmente):

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

Consulta il tutorial di scrittura degli script NSE per maggiori informazioni sulle regole.

    
risposta data 10.07.2018 - 14:03
fonte

Leggi altre domande sui tag