Perché i robot telnet non stanno finendo l'handshake a tre vie?

4

Ho una regola di port forwarding che invia il traffico a un "honeypot" (chiamato "comp" sotto). Durante la notte, molti robot da tutto il mondo hanno tentato di connettersi, ma non è stato eseguito alcun servizio.

Ora, ho scritto un programma C che si lega a 23, accetta una connessione ed esce. Quando un bot esegue la scansione, Wireshark mostra il seguente handshake non riuscito per la maggior parte dei tentativi di connessione:

bot --> comp (SYN, port 23)
comp --> bot (SYN, ACK)
(sometimes): comp --> bot (TCP retransmission)
             ... (may have several retransmissions)
bot --> comp (RST)    (sometimes happens immediately after the SYN, ACK)

Ho visto una connessione bot di successo, ma la maggior parte dei tentativi ha come risultato sopra. So che il programma funziona perché quando telnet con il mio Android su 4G (cioè fuori dalla LAN), si verifica la normale stretta di mano a tre vie, seguita da una FIN, ACK immediata dal mio "honeypot", come previsto.

Perché molti dei tentativi di connessione bot falliscono? I robot non sono in grado di dire che non è un vero servizio telnet prima che finiscano di connettersi?

Modifica : inoltre, a volte inviano un altro SYN immediatamente dopo l'RST e quindi l'handshake procede con successo.

    
posta Vale132 12.01.2017 - 22:17
fonte

1 risposta

4

Eseguono scansioni delle porte, non tentando di stabilire una connessione.

Questa tecnica di scansione specifica è chiamata SYN scan . L'idea è che non è necessario completare l'intero handshake TCP per scoprire se una porta è aperta. Una scansione SYN è spesso preferita per stabilire una connessione completa perché è più veloce e meno evidente. Dalla guida di nmap :

SYN scan is the default and most popular scan option for good reasons. It can be performed quickly, scanning thousands of ports per second on a fast network not hampered by restrictive firewalls. It is also relatively unobtrusive and stealthy since it never completes TCP connections. [...]

This technique is often referred to as half-open scanning, because you don't open a full TCP connection. You send a SYN packet, as if you are going to open a real connection and then wait for a response. A SYN/ACK indicates the port is listening (open), while a RST (reset) is indicative of a non-listener. If no response is received after several retransmissions, the port is marked as filtered.

Puoi provare a riprodurre questo comportamento tentando di eseguire una scansione di SYN utilizzando nmap e controllando i risultati di Wireshark:

nmap -sS yourhost

The bots can't possibly tell that it's not a real telnet service before they even finish connecting?

Esatto, lo svantaggio di questa tecnica è che non possono realmente prendere le impronte digitali del servizio. Tutto quello che sanno è che il server ha accettato una connessione a quella porta.

    
risposta data 12.01.2017 - 22:31
fonte

Leggi altre domande sui tag