Attacchi di rete: Scansione delle porte

Luca Cicchinelli/ dicembre 28, 2016/ Networks/ 0 comments

Analizzeremo alcune delle tecniche utilizzate per la scansione delle porte di un dato dispositivo.
Per entrare in conoscenza di quali porte sono aperte a connessioni di tipo TCP e quali no.

Ogni porta viene associata ad un determinato servizio.
Sapendo quali porte sono aperte possiamo capire quali servizi sono in esecuzione sul dispositivo vittima della scansione.

Scansione SYN

Per stabilire una connessione TCP si utilizza un handshake di tipo TCP/IP:

  1. A invierà un pacchetto SYN a B
  2. ,ricevuto il pacchetto SYN, manderà indietro un pacchetto di risposta di tipo SYN/ACK ad A
  3. Quando A riceverà questo pacchetto di risposta invierà a B un pacchetto ACK per aprire definitivamente la connessione.

Una scansione di tipo SYN non completa l’handshacking, perciò non viene mai stabilita una connessione completa.

Verrà inviato soltanto il pacchetto SYN iniziale, verso una determinata porta, analizzandone la risposta ottenuta.
Se la risposta sarà un pacchetto di tipo SYN/ACK significa che la porta verso cui è stato inviato il pacchetto accetta le connessioni.

In questo caso sarebbe opportuno inviare un pacchetto RST per terminare la connessione.

Questo tipo di scansione delle porte è molto rischioso in quanto facilmente rilevabile.
Una possibile soluzione è inviare diversi pacchetti SYN, con indirizzi di origine spoofati, nascondendoci in mezzo un pacchetto SYN non spoofato.

I pacchetti con indirizzo spoofato devono avere indirizzi di origine reali altrimenti si rischierebbe un attacco SYN flooding.

Scansioni FIN, X-mas e Null

Questi tre tipi di scansioni comportano tutte l’invio di un pacchetto TCP senza senso.
Se una porta è in ascolto non invierà nessun pacchetto di risposta ma se una porta è chiusa, seguendo il protocollo seguendo il protocollo (RFC 793)  verrà inviato un pacchetto RST.

Sfruttando questo pacchetto di risposta potremo determinare se una porta è aperta o meno, senza effettuare alcun tentativo di connessione.

  1. La scansione FIN invia un pacchetto TCP con il flag FIN attivo
  2. La scansione X-mas invia un pacchetto TCP con i flags FIN, URG e PUSH attivati
  3. La scansione Null invia un pacchetto TCP senza alcun flag attivo

Questi tipi di scansione sono meno facili da rilevare ma non sono completamente affidabili in quanto alcuni sistemi non inviano pacchetti RST come dovrebbero.

Scansione idle

L’aggressore in questo tipo di scansione deve essere a disposizione di un host idle inutilizzato che abbia un’implementazione TCP e che produca ID IP sequenziali con un incremento fisso.

Innanzitutto si contatta l’host idle con un pacchetto SYN osservando l’ID IP della risposta, si ripete questo processo più volte fino a quando non si può determinare l’incremento del’ID IP dato da ciascun pacchetto.

Poi si invia un pacchetto SYN spoofato con l’indirizzo IP dell’host idle a una porta del target in modo da fargli credere che sia stato l’host ad inviargli il pacchetto SYN.

  • Se la porta è aperta alla ricezione del pacchetto SYN verrà inviato un pacchetto SYN/ACK verso l’host idle che risponderà con un pacchetto RST in quanto non era stato lui ad inviare il pacchetto SYN iniziale
  • Se la porta risulta chiusa il target non invierà nessun pacchetto SYN/ACK di risposta all’host, di conseguenza l’host non invierà nessun pacchetto RST.

Ora l’aggressore contattando nuovamente l’host idle potrà determinare se la porta è aperta o meno semplicemente visualizzando l’ID IP in quanto:

Se la porta è aperta l’ID IP aumenterà di due intervalli (Il pacchetto RST inviato al target; il pacchetto di risposta all’aggressore)
Se la porta è chiusa l’ID IP aumenterà di un solo intervallo (Il pacchetto di risposta all’aggressore)

Conclusione

Il fine di HOWORKS è quello di informare, non mi assumo nessuna responsabilità dell’uso che farete delle informazioni contenute in questo articolo.
Per qualsiasi dubbio potete contattarci utilizzando i commenti o le nostre pagine social.

Facci sapere cosa ne pensi con un commento!