Il motivo user-set
viene mostrato se il motivo è impostato su ER_USER
. (Questo è memorizzato in un enum in portreasons.cc del repository github nmap.
Questa mappatura è impostata in portreasons.cc
:
reason_map_type::reason_map_type(){
reason_map[ER_RESETPEER] = reason_string("reset","resets");
reason_map[ER_UNKNOWN] = reason_string("unknown-response","unknown-responses");
reason_map[ER_USER] = reason_string("user-set","user-sets");
C'è un solo punto nel progetto NMAP quando viene impostato il motivo ER_USER, e questo è in questa parte di codice:
...
if (pingtype == PINGTYPE_NONE && !arpping_done)
hs->hostbatch[i]->reason.reason_id = ER_USER;
else
hs->hostbatch[i]->reason.reason_id = ER_LOCALHOST;
...
Il tuo indicatore Pn
indica che non dovrebbe essere utilizzato alcun ping, quindi la percentuale soprapingtype == PINGTYPE_NONE
, è impostata da questo flag, che convalida la prima parte del condizionale.
Ora è rimasto solo il !arpping_done
, che sembra essere " false
" nel risultato, poiché il motivo ER_USER è stampato alla fine.
Il flag è inizializzato come false
E l'unico codice che lo imposta su true è:
/* First I'll do the ARP ping if all of the machines in the group are
directly connected over ethernet. I may need the MAC addresses
later anyway. */
if (hs->hostbatch[0]->ifType() == devt_ethernet &&
hs->hostbatch[0]->af() == AF_INET &&
hs->hostbatch[0]->directlyConnected() &&
o.sendpref != PACKET_SEND_IP_STRONG &&
(pingtype == PINGTYPE_ARP || o.implicitARPPing)) {
arpping(hs->hostbatch, hs->current_batch_sz);
arpping_done = true;
}
/* No other interface types are supported by ND ping except devt_ethernet
at the moment. */
if (hs->hostbatch[0]->ifType() == devt_ethernet &&
hs->hostbatch[0]->af() == AF_INET6 &&
hs->hostbatch[0]->directlyConnected() &&
o.sendpref != PACKET_SEND_IP_STRONG &&
(pingtype == PINGTYPE_ARP || o.implicitARPPing)) {
arpping(hs->hostbatch, hs->current_batch_sz);
arpping_done = true;
}
Che potrebbe sembrare confuso, ma è spiegato nel commento:
I'll do the ARP ping if all of the machines in the group are
directly connected over ethernet.
Origine
Quindi la scansione ARP verrà eseguita solo se stai prendendo di mira una macchina sulla rete locale, che presumo non sia il caso.
Anche dai documenti, per spiegare il codice sopra un po 'meglio di quanto ho fatto io:
For machines on a local ethernet network, ARP scanning will still be performed (unless --disable-arp-ping or --send-ip is specified) because Nmap needs MAC addresses to further scan target hosts. In previous versions of Nmap, -Pn was -P0 and -PN.
Sul motivo per cui non vengono mostrati ulteriori risultati:
-Sn (nessuna scansione delle porte)
This option tells Nmap not to do a port scan after host discovery, and only print out the available hosts that responded to the host
discovery probes. This is often known as a “ping scan”, but you can
also request that traceroute and NSE host scripts be run. This is by
default one step more intrusive than the list scan, and can often be
used for the same purposes. It allows light reconnaissance of a target
network without attracting much attention. Knowing how many hosts are
up is more valuable to attackers than the list provided by list scan
of every single IP and host name.
Quindi, una breve conclusione:
Pn
ti fa ottenere un pingtype == PINGTYPE_NONE
vero, la ragione per cui ARP Ping è interpretato come false
è probabile che il dispositivo di destinazione non si trovi nella LAN di yoru o che non risponda alle query ARP. sn
indica a nmap NOT di scansionare le porte.