it-swarm.dev

Come funziona "traceroute over TCP", quali sono i rischi e come può essere mitigato?

Esiste un'utilità chiamata tcptraceroute e questo miglioramento chiamato intrace che viene utilizzato proprio come un traceroute standard, ma funziona su TCP.

  • In che modo il flag syn è TCP utilizzato per ottenere funzionalità simili a traceroute (quando ICMP è spento)

  • Quali informazioni possono essere divulgate (o altri rischi)?

  • Come può essere mitigato? (router, host, ... entrambi?)

Questo è stato descritto come simile al comando nmap quando viene passato il flag -sS. Se questo è accurato, cosa significa in realtà?

24

Tutti gli strumenti di tracerouting si basano sul seguente principio: inviano pacchetti di breve durata e attendono i pacchetti ICMP che segnalano la morte di questi pacchetti. Un pacchetto IP ha un campo chiamato "TTL" (come "Time To Live") che è decrementato ad ogni hop; quando raggiunge 0, il pacchetto muore e si suppone che il router su cui ciò accade rispedisca un messaggio ICMP "Tempo scaduto" . Tale messaggio ICMP contiene l'indirizzo IP di detto router, rivelandolo in tal modo.

Nessuno degli strumenti a cui ti colleghi può fare qualcosa se un firewall blocca i pacchetti ICMP "Tempo scaduto". Tuttavia, il blocco di tali pacchetti tende a interrompere Internet (poiché gli host modificano in modo adattivo TTL nei pacchetti che inviano per far fronte a percorsi di rete lunghi e hanno bisogno di questi ICMP per questo processo), quindi, su base generale, i pacchetti ICMP "Tempo trascorso" non sono bloccati.

Ciò che è spesso bloccato , tuttavia, è il tipo di pacchetti di breve durata che traceroute invia. Questi sono i pacchetti con TTL artificialmente basso. Se vengono bloccati da un firewall, non muoiono mai "di vecchiaia", e quindi nessun ICMP ha superato il tempo. Per l'elaborazione TTL e l'ICMP "Time Expassed", il tipo di pacchetto non ha importanza; questo si verifica a livello IP. Ma i firewall guardano anche al contenuto dei pacchetti. L'obiettivo è quello di ingannare i firewall in modo che consentano al pacchetto di breve durata di fluire (e quindi morire).

Il semplice traceroute utilizza sia i pacchetti UDP, sia i pacchetti "Echo" ICMP, entrambi i tipi vengono regolarmente bloccati da (oltre) amministratori zelanti. tcptraceroute utilizza invece un pacchetto TCP "SYN", ovvero il tipo di pacchetto che si verificherebbe come primo passo nel TCP "stretta di mano a tre vie". Questo tipo di pacchetto non viene generalmente bloccato dal firewall, almeno finché la porta di destinazione è "consentita". tcptraceroute non completerà alcun TCP; si basa solo sull'idea che i pacchetti SYN non vengano sparati a vista dai firewall.

intrace fa un passo avanti in quanto attende una esistente TCP (lo fa controllando tutti i pacchetti, à la tcpdump). Quando vede una connessione e l'utente preme INVIO, intrace invierà pacchetti di breve durata che appaiono come parte della connessione osservata. intrace può farlo perché ha visto i pacchetti e quindi conosce gli indirizzi IP, le porte e i numeri di sequenza. Tutti i firewall rilevanti lasceranno passare questi pacchetti, poiché (ovviamente) consentono l'osservato TCP. I pacchetti di breve durata sono regolati in modo da non interrompere la TCP (ovvero sono semplici pacchetti "ACK" senza dati da soli, quindi il il sistema operativo di destinazione semplicemente li ignorerà).


Modifica: Ho notato che non ho risposto a una parte della domanda. Ecco qui: non c'è rischio. Non c'è nulla da mitigare.

traceroute rivela gli indirizzi IP dei router coinvolti nei pacchetti di routing. Gli indirizzi IP non sono pensati per essere segreti e sono piuttosto facili da ottenere per gli aggressori in vari modi (mi viene in mente la scansione di massa, ma anche la ricerca di sacchi della spazzatura per le stampe delle mappe di rete - la moderna moda del riciclaggio rende le immersioni in cassonetto molto più facili e attività più pulita di quella che era). Tuttavia, un mito relativamente diffuso è che mantenere segreti i tuoi indirizzi in qualche modo garantisce sicurezza. Di conseguenza, molti amministratori di sistema considerano traceroute come una grave violazione, da riparare e bloccare il più presto possibile. In pratica, tuttavia, questo è tutto baloney. Se rivelare alcuni indirizzi IP interni è un grosso problema, significa che la tua rete è condannata.

Preoccuparsi della segretezza degli indirizzi IP è come attivare un importante piano di risposta agli incidenti perché un estraneo ha appreso il menu nella caffetteria dell'azienda. È sproporzionato. Concesso, avere una conoscenza precisa e approfondita dell'infrastruttura di rete può solo aiutare gli attaccanti; ma non in quantità davvero significative. Mantenere segreti gli indirizzi IP non vale la pena interrompere la connettività attraverso un filtro eccessivo (ad esempio, bloccare l'ICMP "frammentazione richiesta" è mortale per qualsiasi client dietro un collegamento ADSL + PPPoE).

44
Thomas Pornin

Sia traceroute che tcptraceroute lavorano sullo stesso principio di base:

  1. Invia un pacchetto con un TTL davvero basso
  2. Scopri chi restituisce un ICMP TTL superato a TTL scadenza
  3. Se il mittente è la destinazione, interrompere
  4. Altrimenti, incrementa il TTL di 1 e torna al passaggio # 1

L'unica differenza è quale tipo di pacchetto viene inviato (l'impostazione predefinita è UDP su Linux, ICMP su Windows e TCP sta diventando un'opzione più popolare). Tutti genereranno messaggi di errore ICMP da dispositivi utili nel mezzo quando scade il TTL.

  • Pertanto, non c'è nulla di speciale nel pacchetto UDP/ICMP/TCP che lo rende traceroute-y. Il flag SYN viene utilizzato perché i dispositivi che intervengono come i firewall spesso consentono SYN ma bloccano altri pacchetti TCP che non fanno parte di una connessione stabilita.
  • Le stesse informazioni sono fornite come nel traceroute normale, ma può essere più probabile che siano consentite rispetto al traceroute normale. Prendi un sito web come Amazon.com. Il traceroute basato su UDP si ferma a 205.251.248.5, che è probabilmente un firewall di qualche tipo. Traceroute basato su TCP alla porta 80 - che sappiamo che "Amazon.com consente" - fa un passo avanti al 72.21.194.212.
  • Traceroute può essere mitigato non autorizzando i pacchetti o bloccando le risposte dell'ICMP. Il primo è il motivo per cui tcptraceroute è diventato più popolare; qualsiasi sito che consente la connettività su almeno un TCP - come un sito Web - consente i pacchetti. Il blocco delle risposte ICMP ha l'effetto collaterale di violare i fondamentali di rete IP necessari, che varia da leggermente scortese selvaggiamente controproducente.

nmap -sS eseguirà una scansione SYN, in cui vengono inviati solo i pacchetti SYN. Tuttavia, non eseguirà un traceroute in sé e per sé; devi combinarlo con l'opzione --traceroute (e quindi penso che stai ancora eseguendo la scansione, non solo eseguendo un traceroute, quindi se vuoi tracciare ti consiglio tcptraceroute o traceroute -T se il tuo sistema operativo lo supporta).

7
gowenfawr
  • Come si trova il flag syn in TCP utilizzato per ottenere funzionalità simili a traceroute (quando ICMP è spento)

Qualsiasi pacchetto IP attiverà una risposta ICMP "Tempo scaduto" da un router intermedio quando il valore TTL raggiunge lo zero. Potrebbe trattarsi di TCP, UDP, ICMP o qualsiasi altro. Fintanto che i router intervengono passerà il pacchetto, la traccia funzionerà. Il traceroute tradizionale usa richieste di eco ICMP, ma questo è solo per convenzione.

Si noti che se ICMP è consentito o meno sul server di destinazione è del tutto irrilevante poiché è il router intermedi che stanno restituendo le risposte scadute. L'unica cosa che potresti perdere è una risposta dall'host di destinazione finale, ma con traceroute questa è la risposta meno importante, poiché ciò che traceroute ti fornisce è l'elenco dei router intermedi.

L'uso di un flag SYN sul TCP potrebbe potenzialmente ottenere un SYN/ACK dal server di destinazione, o forse no, se la porta non è aperta o una politica blocca il pacchetto. Ma ancora , il server di destinazione è il meno importante. Potresti anche inviare un UDP o un TCP continuazione se tutto ciò che ti interessava era la lista degli hop.

Alcuni router sono configurati per trattare i pacchetti PING in modo diverso; percorso diverso, priorità diversa, ecc. L'uso di TCP invece può fornire risultati diversi che dovrebbero essere più indicativi del percorso TCP richiederebbe.

  • Quali informazioni possono essere divulgate (o altri rischi)?

Niente che non sia pubblico. Se la tua sicurezza dipende dal mantenere segreto questo tipo di informazioni, allora dovresti sederti e riconsiderare le decisioni che ti hanno portato qui.

  • Come può essere mitigato? (router, host, ... entrambi?)

Non c'è nulla da mitigare. Ovviamente, puoi sempre scollegare il tuo server, questo mitigherà ogni sorta di cose. Altrimenti, prima di utilizzare una strategia di mitigazione, dovresti considerare cosa stai guadagnando e cosa stai rinunciando. In questo caso, non sembra che tu abbia nulla da guadagnare.

2
tylerl