Come cercare le porte aperte dai socket TCP / UDP con nmap o altri strumenti?

2

Sono nuovo di nmap e ultimamente sto esplorando con esso alcuni dispositivi sulla LAN corrente per le porte aperte dai programmi socket in esecuzione.

Per prima cosa ho eseguito un semplice server UDP sulla mia macchina sulla porta 55555 e ho scansionato l'host locale con queste opzioni:

nmap -sT -sU -d -d localhost

(So che -sT è inutile per questo caso ma l'ho provato in tutte le mie prove)

Mostra la porta 55555 come chiusa. Ho terminato il processo del server e la porta è ancora chiusa.

Non sono sicuro di poter eseguire la scansione delle porte socket TCP / UDP da nmap. È possibile farlo con nmap o qualche altro strumento?

    
posta 3bdalla 18.02.2016 - 10:53
fonte

3 risposte

4

Credo che dovresti capire pienamente il protocollo TCP / IP, come sono fatte le interconnessioni, filtrate / bloccate completamente. Per i principianti -sT (TCP connect) è il tipo più affidabile di connessione poiché completa un handshake completo. L'output NMAP varia in base a ciò che si sta analizzando, indipendentemente dal fatto che i target abbiano o meno filtri / firewall. C'è un modo più semplice di vedere quali porte sono aperte sui tuoi sistemi. Si chiama netstat. Accedendo a uno qualsiasi dei tuoi computer, puoi semplicemente eseguire un netstat su quelle macchine per vedere cosa è stabilito, o in ascolto. Ciò ti fornirà un'immagine più accurata dell'applicazione utilizzando una porta. (ad esempio, se per qualche motivo assegno la porta 21 al mio server http, la vedrai invece che supponiamo che io stia eseguendo FTP).

Ma torniamo alla tua domanda sul vedere l'output. Ci sono due viste qui (essendo che hai digitato localhost) ... Quello che vedrai, rispetto a quello che vedrà qualcuno al di fuori della LAN. Se si utilizza un sistema Linux / BSD, non è necessario eseguire nmap. È possibile utilizzare LSOF:

$ sudo lsof -i -n | awk '{print $1"\t"$8"\t"$9}'

Questo mostrerà tutti i socket di rete in uso. Ma se ANCORA vuoi usare nmap, devi capire come funziona nmap per impostazione predefinita (ad esempio, quante porte verranno cercate, poiché per defaultnmap eseguirà solo la scansione delle porte più comuni di 1000. Servizio in esecuzione, diciamo che la porta 24681 non verrà visualizzata. È raro).

Ma ANCORA vuoi usare nmap. Suggerisco di avere una visione completa che provi:

nmap -sT -Pn -T2 -vvv -A -p 1-65535 localhost

Funzionerà bene, richiederà un po 'di tempo a livello locale e NON funzionerà bene contro non-localhost. Questo perché tutte le reti non sono le stesse. Ad esempio, se una rete è VLAN'd, PVLAN'd, o separata / intersecata con dire IPS / IDS / Firewall può rispondere in modo diverso. Ad esempio, se uno switch ha alcuni ACL della creatività, il tuo switch potrebbe intercettarlo e rispondere alla scansione NMAP (non alla destinazione). Questo di solito accade quando vedi un bersaglio che risponde come se TUTTE le porte fossero aperte.

RIEPILOGO: per vedere cosa sta girando sulla tua macchina, ti conviene loggarti e usare qualcosa come lsof o netstat. Se stai provando contro la tua rete LOCALMENTE (sulla stessa sottorete) potresti aver bisogno di armeggiare con diversi servizi (TCP / UDP), tempistiche (lente contro scansioni veloci / insane), porte e così via.

    
risposta data 18.02.2016 - 17:30
fonte
1

Non sono sicuro di capire se si desidera "elencare i socket host locali" o "scansionare le porte TCP / UDP": scriverò questo post per il secondo significato (scansione)

Se il tuo server è in ascolto su UDP 55555, non ha senso usare -sT (TCP Scan) o -sS (TCP Syn Stealth scan) poiché si basa sull'handshake TCP. (Syn - Syn / Ack - Ack). Come suggerito da munkeyoto, devi osservare come funziona il protocollo per capire cosa fa la scansione. (Libro suggerito: 'Practical Packet Analysis' o 'Nmap Network Discovery'). Si noti inoltre che Windows non supporta la scansione della propria macchina (localhost) con SYN Stealth Scan

La scansione UDP funziona inviando un'intestazione UDP vuota (senza dati) ad ogni porta di destinazione. In base alla risposta, o alla sua mancanza, la porta è assegnata a uno dei quattro stati:

  • Qualsiasi risposta UDP dalla porta di destinazione (insolita) == > aperto
  • Nessuna risposta ricevuta (anche dopo le ritrasmissioni) == > aperto | filtrato
  • Errore irraggiungibile porta ICMP (tipo 3, codice 3) == > chiuso
  • Altri errori irraggiungibili ICMP (tipo 3, codice 1, 2, 9, 10 o 13) == > filtrato

Un buon modo per migliorare l'affidabilità della scansione delle porte UDP è utilizzare Rilevamento versione (a.k.a Service fingerprinting -sV):

Per scansionare la tua porta UDP, vorrei usare:

$ sudo nmap -sUV <targetIP> -p 55555

Se si desidera eseguire la scansione di più di una porta, la scansione richiederebbe molto più tempo. (Ti rimanderò al link )

Se tutto questo post è confuso, ti consiglierei di leggere i due libri sopra citati, le tecniche di scansione richiedono alcune conoscenze specifiche su TCP, UDP, ICMP e altri protocolli.

    
risposta data 20.02.2016 - 13:51
fonte
0

Per la scansione TCP, puoi utilizzare una shell Bash e i relativi file pseudo-dispositivo della rete ad es.

for port in {1..65535}; do
  timeout 1 bash -c "</dev/tcp/localhost/$port" 2> /dev/null && echo Port $port open. || echo Port $port closed.
done
    
risposta data 20.10.2016 - 17:35
fonte

Leggi altre domande sui tag