È possibile stabilire se due indirizzi IP appartengono allo stesso server?


21

Dati due indirizzi IP pubblici e le conoscenze che sono entrambi sulla stessa / 27 rete, sarebbe possibile determinare da una posizione remota (cioè un paese diverso) se appartengono a uno o due server?


2
Puoi approfondire ciò che stai cercando di realizzare e la natura dei server che stai cercando di identificare?
bobstro,

3
I tempi di ping possono fornire un indizio, ad esempio se tutti gli IP rispondono in un intervallo di tempo casuale, ma due di loro rispondono con quasi lo stesso ritardo.

10
Ti è permesso fare l'uno e vedere se anche l'altro non risponde?
Ben Voigt,

1
I tempi di ping di @ AndréDaniel falliranno totalmente se i server sono associati. Lo stesso rack non è lo stesso server.
TomTom,

Risposte:


29

No, non lo è, nel caso generale.


Alcune aggiunte, per rendere felici i nostri ospiti da SO:

  • Non c'è nulla nei protocolli TCP / IP di base (ad es. IP / TCP / UDP, ICMP) che abbia lo scopo specifico di fare la distinzione richiesta nella domanda.
  • Lo stesso vale per molti protocolli di livello superiore, ad es. HTTP.
  • È infatti possibile utilizzare differenze più o meno sottili nei modelli di risposta per fare un'ipotesi sul sistema. Se hai due sistemi molto diversi, ad esempio un server Linux e un server Windows, questo potrebbe essere sufficiente per essere sicuro di avere due host.
  • Ciò diventerà più difficile tanto più simili saranno i sistemi. Due nodi in un cluster Web HA con hardware e SO identici sono probabilmente impossibili da separare in questo modo. Lo considero il caso generale nella maggior parte degli scenari oggi.
  • Infine: due macchine virtuali nella stessa scatola fisica sono uno o due server? A seconda del motivo per cui si tenta di differenziare in primo luogo, questo potrebbe essere importante ed è assolutamente impossibile dirlo a livello di rete.

2
La risposta di Sven è corretta al 100%, ma potrebbe essere possibile indovinare se stanno eseguendo diversi sistemi operativi (tramite nmap o il test ping descritto qui kellyodonnell.com/content/determining-os-type-ping ). Potrebbero comunque essere entrambi vms in esecuzione da un solo host.
Andy,

1
@Andy: ecco perché ho detto "nel caso generale". In alcuni casi, puoi scoprirlo, ma d'altra parte, in alcuni casi non ti accorgi nemmeno che non c'è un computer dietro un singolo indirizzo IP ma cento ...
Sven

3
@Sven: la domanda è se due IP sono correlati a un singolo computer, non se i servizi su un IP comune sono correlati a più macchine. Sono d'accordo sul fatto che non esiste un metodo universale garantito per funzionare ogni volta, ma se si riesce a trovare abbastanza comunanza tra le risposte ricevute, potrebbe essere possibile fare un'ipotesi ragionevole. Michelle deve approfondire esattamente ciò che deve essere realizzato per determinare se esiste una soluzione utile. Importa se si tratta di una configurazione con bilanciamento del carico o virtuale, ad esempio?
bobstro,

1
Ambiguo quando si lancia nella virtualizzazione. Supponiamo di avere due VM, Guest A e Guest B, ognuna con IP diverso ma sulla stessa / 27 net. Supponiamo inoltre che entrambi questi guest siano ospitati dall'host C. In un certo senso, i due / 27 indirizzi appartengono a "server" diversi, ma in un altro senso potrebbero passare attraverso la stessa NIC e lo stesso host, quindi si può sostenere che gli IP appartengano allo stesso "server". Se il Guest A a sua volta ospita altre due VM, Guest X e Guest Y, anche con i propri indirizzi / 27, quale di questi IP appartiene allo stesso computer? E se "vMotion" fosse una di queste macchine virtuali? Non ho una buona risposta
Joshua Huber,

13

Curioso di "perché". Le preoccupazioni per le macchine dual homed sono in genere localizzate come mal di testa di alcuni sysadmin senza nome. I dettagli devono essere nascosti dal modello OSI.

Linux centric risposta in anticipo.

Esistono alcuni modi per generare le impronte digitali e fare un'ipotesi educativa.

  1. nmap -o e nmap con una scansione delle porte decente. I server non si legano sempre a entrambe le schede di rete. Ma molte volte lo fanno.

  2. Indirizzi MAC. Se avessi i mezzi per ottenere gli indirizzi MAC, ai produttori piace usare indirizzi consecutivi per l'hardware integrato. Due indirizzi MAC quasi identici hanno più probabilità la stessa scheda madre. Questo non si applica alle carte aftermarket, ovviamente.

  3. Saluti. Telnet, ftp, smtp e simili offrono tutti informazioni di identificazione. Verifica se questi servizi sono in esecuzione, offrono abbastanza informazioni distinte. I banner sono probabilmente rari oggi ma vale ancora la pena tentare.

  4. Test del comportamento indipendente della NIC. Ad esempio, prova a inciampare negando gli host fornendo un'autenticazione fasulla a ssh una dozzina di volte. Se viene negato l'host negato, al prossimo tentativo dovresti trovare che il socket si chiude immediatamente. Vedi se questo sta accadendo anche per l'altro IP.

Una rete A / 27 è ... cosa, 29 host? Direi che le possibilità di identificare una macchina doppia casa con elevata sicurezza sono super ridotte, forse del 5%. Ma dato così pochi host, potresti essere in grado di fare un'ipotesi colta.

Domanda divertente per un'intervista. Potrei davvero rubarlo.


4
Per quanto riguarda il n. 4, se entrambi gli indirizzi eseguono ssh ed è possibile connettersi ad esso, è possibile confrontare le chiavi dell'host. In linea di principio, a due server diversi potrebbe essere assegnata la stessa chiave host, ma sarebbe una configurazione molto strana. Quindi, se ottieni la stessa chiave host da entrambi gli indirizzi, è molto probabile che siano lo stesso server.
Nate Eldredge,

Due caselle con la stessa chiave host possono derivare dalla clonazione della macchina.
Peter Green,

7

In teoria, nella maggior parte dei casi è possibile fornire un livello di confidenza significativo. Ci sono un paio di avvertimenti che lo rendono molto più difficile in pratica.

Sovrapporrò altre risposte e probabilmente mi sono perso delle cose, ma questo è almeno un ragionamento dettagliato sul perché questi particolari bit contano o meno.

Per prima cosa, dimentica qualsiasi pensiero sugli indirizzi MAC. A meno che tu non abbia accesso diretto al segmento di rete, non sarai in grado di vederli.

Inoltre, non fidarti delle scansioni delle porte. È banale per le porte del firewall solo per determinati IP, avere software in ascolto solo su determinati IP o avere un sistema IDS / IPS che applica il filtro quando viene rilevata una scansione. Tutti questi risolveranno i tuoi test.

Ok, quindi il modo in cui puoi dirlo è semplice: la probabilità che due caselle siano esattamente identiche è bassa a meno che non siano comunque correlate tra loro. Quindi quello che stai effettivamente facendo è provare a dimostrare che sono scatole diverse, non provare a dimostrare che sono uguali.

  1. Ping. È necessario testare entrambi contemporaneamente ed eseguire molti test. Si scopre che mentre c'è jitter nei tempi di rete è un rumore pseudo-casuale di qualità abbastanza alta, se hai abbastanza campioni in un piccolo intervallo di tempo il rumore si espande in media abbastanza per darti un confronto accurato.

    Ogni hop di livello 2 in una rete aggiunge una piccola quantità di latenza, livelli di congestione diversi forniranno valori di latenza diversi. Se i due IP mostrano una latenza simultanea significativamente diversa, allora puoi presumere che probabilmente non siano la stessa casella.

    Avvertenza 1: un singolo server con due uplink (non collegati) e configurato con un IP diverso su ciascun uplink potrebbe presentare uno squilibrio uplink sufficiente per eliminarlo.

  2. Scansione della porta. Le porte di destinazione possono trovarsi in uno dei tre stati: ascolto, chiuso, filtrato. Quello in cui si trovano in realtà non è molto utile come indicato sopra, ma ci sono ancora informazioni utili da avere.

    1. Le scatole con porte aperte su più IP probabilmente eseguiranno lo stesso software su tutti gli IP. È possibile eseguire, diciamo, nginx su un IP e apache su un altro, ma la maggior parte delle persone non si preoccupa. Impronta digitale dei servizi in esecuzione per cercare somiglianze. Cerca quale software e versione sta pubblicizzando, quali opzioni supporta, quale nome host (se presente) è pubblicizzato, se ci sono delle stranezze nel comportamento del software, cose del genere.

      I servizi Web sono i meno utili per questo, molto più utili sono cose come SMTP (difficile da abbinare a causa del supporto di sendmail, perdite di molte informazioni), SNMP (una miniera d'oro di informazioni), SSH (chi gestisce più demoni SSH? ) e HTTPS (se sei fortunato e stanno eseguendo lo stesso software puoi verificare le differenze nella configurazione SSL, una configurazione identica ma insolita è un buon indicatore). L'NTP era un buon test, ma ora è bloccato a causa del suo uso intenso come amplificatore DoS, SNTP non è abbastanza preciso per una pistola fumante allo stesso modo.

    2. Impronta digitale di livello 3. Il modo principale per eseguire il fingerprinting di un sistema operativo in remoto è quello delle stranezze nella sua implementazione TCP / IP. I dettagli esatti sono troppo lunghi per entrare qui, ma essenzialmente i metadati dei pacchetti perdono molte informazioni, così come il modo in cui una porta chiusa o filtrata risponde a una connessione e il comportamento di un host quando riceve pacchetti non validi. Sebbene queste caratteristiche non siano una cosa certa per dire ciò che è in esecuzione, sono ragionevolmente garantite che siano vicine alle stesse per ogni IP associato a un particolare stack TCP / IP. Sistemi significativamente diversi dovrebbero avere caratteristiche significativamente diverse.

    Avvertenza 2: è probabile che due box che eseguono esattamente lo stesso sistema operativo e le patch del fornitore siano uguali. Su Windows, due copie della stessa versione di Windows che eseguono aggiornamenti automatici saranno piuttosto indistinguibili a meno che non abbiano firewall diversi in esecuzione. Su Linux è probabile che le differenze siano principalmente legate alla versione e alle opzioni del kernel fornite. Questo test può solo dare un'alta probabilità che due IP non siano sullo stesso sistema operativo.

  3. Replay attacchi. Con l'elenco delle porte aperto su entrambi gli IP, eseguire azioni identiche su ciascun IP e cercare discrepanze nel comportamento. Cose come timeout, messaggi di errore, limiti di tentativi, ecc. Alcuni software sono più difficili o meno spesso configurati per differire in base all'IP. Se sai che un IP accetta la posta per un determinato dominio, controlla se l'altro IP accetta anche la posta per quel dominio.

    Avvertenza 3: si tratta di dati di qualità inferiore rispetto alla parte relativa al servizio di impronte digitali del test 2 perché questa roba è più facile da configurare in modo diverso su IP diversi e sono possibili tutti i tipi di interazione dietro le quinte. L'elevata probabilità di risultati falsi rende scarsa fiducia in tali risultati.

Quindi, come ho detto, la teoria di base è che host diversi saranno probabilmente configurazioni diverse e che perde informazioni.

Ciò che non tiene conto è che è molto più difficile stabilire se lo stesso sito in esecuzione su due IP è lo stesso server o due server configurati per la ridondanza. Inoltre, non tiene conto degli amministratori di sistema che eseguono la gestione della configurazione per mantenere i loro sistemi molto simili. Né tiene conto degli host che stanno eseguendo DNAT su più servizi in esecuzione su host diversi su un singolo indirizzo IP.

La tecnologia di virtualizzazione lancia alcune strane chiavi in ​​cantiere. I sistemi containerizzati come Docker condividono abbastanza dello stack per rendere i contenitori separati più simili di quanto potrebbero effettivamente essere. Le reti virtuali collegate a una nicchia fisica dovrebbero essere impossibili da distinguere dall'hardware fisicamente separato, ma non lo sono, principalmente a causa del fatto che il bridge è un software e quindi i pacchetti devono passare attraverso lo stack IP dell'host.

Esistono molti modi per confondere le persone che cercano di verificare la ripetibilità. Il meglio che puoi sperare è uno schema che abbia un basso margine di dubbio.

La morale di questo, per le persone che eseguono server, è che dovresti configurare i tuoi server in modo da perdere il minor numero di informazioni possibile:

  1. Abbassa il più possibile le informazioni sul banner. Meno un attacco conosce la tua configurazione, meglio è per te.

  2. Chiedi al software di accettare solo connessioni sull'IP su cui dovrebbe essere pubblicato e solo quando necessario. Se non è necessario che sia accessibile dall'esterno, associarlo solo a localhost. Ridurre la superficie di attacco è sempre buono.

  3. Se devi assolutamente ascoltare qualcosa e vuoi evitare la correlazione tra due IP, cerca di ridurre al minimo le opzioni insolite. Vuoi che si fonda.

  4. Avere un firewall in esecuzione con un criterio di rilascio predefinito. Penso che potrebbe esserci un valore in una configurazione IDS che risponde agli aggressori con risposte casuali, il rumore renderebbe più difficile per un attaccante fidarsi dei propri risultati, ma risulterebbe nel farti distinguere.

  5. I moduli di ritardo casuali sono inutili per prevenire attacchi di temporizzazione. No davvero. Scegli un numero casuale quindi tira un dado un sacco di volte, scrivendo il risultato più il numero che hai scelto all'inizio. Ciò che si ottiene è un intervallo con un offset fisso. Se il numero casuale viene sostituito, l'intervallo si sposta. Se l'intervallo viene modificato, l'offset rimane invariato ed è solo una questione di ripetere il processo di campionamento per ottenere una nuova linea di base.

  6. I normalizzatori dello stack IP esistono ma sono stati una parte trascurata della ricerca sulla sicurezza l'ultima volta che ho guardato. Probabilmente sarebbe un bel mercato in cui investire per un fornitore di sicurezza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.