Questo è un bug in Nmap. Grazie per averlo scoperto! Risposta breve: c'era un bug nel modo in cui abbiamo contato quanti indirizzi erano già stati scansionati, che ho appena corretto in r36341.
Risposta più lunga: Nmap esegue scansioni in più fasi. I più importanti per questo bug sono l'individuazione degli host (scansione Ping) e la scansione delle porte. Nmap esegue il loop su tutti gli indirizzi possibili, esegue la discovery dell'host in blocchi di grandi dimensioni quando necessario e acquisisce un certo numero di host "su" per eseguire la scansione delle porte in un gruppo. Interrompe il looping degli indirizzi quando ha abbastanza obiettivi per un gruppo di host o quando gli indirizzi si esauriscono. Per -iR
, gli indirizzi non si esauriscono mai, quindi controlliamo se o.numhosts_scanned
è inferiore a o.max_ips_to_scan
. Ciò funzionerebbe, tranne per il fatto che non consideriamo un "up" host "scansionato" fino a dopo la fase di scansione della porta. Quindi c'è il potenziale per controllare gli indirizzi extra. Durante una scansione lunga, la maggior parte di questi viene conteggiata comunque perché incrementano o.numhosts_scanned
dopo la fase di scansione delle porte e prima della fase di scoperta dell'host per il gruppo successivo, ma l'ultimo gruppo host avrà qualche riporto. Ho risolto questo problema aggiungendo un ulteriore controllo del ciclo per garantire che gli host "su" fossero aggiunti a o.numhosts_scanned
prima di verificare contro o.max_ips_to_scan
durante la fase di rilevamento.
Esempio di output di debug da nmap -iR 2 -p80 -d -n
:
Initiating Ping Scan at 15:14
Scanning 2 hosts [2 ports/host]
Completed Ping Scan at 15:14, 1.48s elapsed (2 total hosts)
Overall sending rates: 4.06 packets / s.
Questo dimostra che abbiamo corretto il ping di 2 indirizzi.
Nmap scan report for 20.240.133.236 [host down, received no-response]
Uno di questi era inattivo, quindi il rapporto viene stampato immediatamente. Uno di questi deve essere stato pubblicato perché abbiamo ricevuto solo uno di questi rapporti.
Initiating Ping Scan at 15:14
Scanning 54.28.85.198 [2 ports]
Completed Ping Scan at 15:14, 1.48s elapsed (1 total hosts)
Overall sending rates: 2.71 packets / s.
Oops! L'obiettivo "up" non è stato conteggiato per il numero di host scansionati, quindi ping scan pensa di doverne scansionare uno in più.
Nmap scan report for 54.28.85.198 [host down, received no-response]
Quello era giù. Quindi 2 host down e uno up.
Initiating Connect Scan at 15:14
Scanning 187.142.197.40 [1 port]
Completed Connect Scan at 15:14, 0.06s elapsed (1 total ports)
Overall sending rates: 17.06 packets / s.
Nmap scan report for 187.142.197.40
Host is up, received conn-refused (0.059s latency).
Scanned at 2016-09-29 15:14:26 UTC for 3s
PORT STATE SERVICE REASON
80/tcp closed http conn-refused
Final times for host: srtt: 59196 rttvar: 33779 to: 194312
Ed ecco il terzo: la porta 80 è stata chiusa.
Read from /usr/bin/../share/nmap: nmap-payloads nmap-services.
Nmap done: 3 IP addresses (1 host up) scanned in 3.06 seconds
Ed ecco l'output che mostra che 3 indirizzi IP sono stati scansionati, anche se ho richiesto solo 2.