Kann man feststellen, ob zwei IP-Adressen zum selben Server gehören?


21

Wäre es bei zwei öffentlichen IP-Adressen und dem Wissen, dass sich beide im selben / 27-Netzwerk befinden, möglich, von einem entfernten Standort (dh einem anderen Land) aus zu bestimmen, ob sie zu einem oder zwei Servern gehören?


2
Können Sie näher erläutern, was Sie erreichen möchten und welche Art von Servern Sie identifizieren möchten?
Bobstro

3
Ping-Timings können einen Hinweis liefern - zum Beispiel, wenn alle IPs in einer zufälligen Zeitspanne antworten, aber zwei von ihnen mit nahezu derselben Verzögerung antworten.

10
Dürfen Sie das eine tun und sehen, ob das andere ebenfalls nicht mehr reagiert?
Ben Voigt

1
@ AndréDaniel Ping-Timings schlagen völlig fehl, wenn die Server gemeinsam genutzt werden. Das gleiche Rack ist nicht der gleiche Server.
TomTom

Antworten:


29

Nein, das ist im Allgemeinen nicht der Fall.


Einige Ergänzungen, um unsere Gäste von SO glücklich zu machen:

  • In den Basis-TCP / IP-Protokollen (z. B. IP / TCP / UDP, ICMP) gibt es nichts, was speziell dazu gedacht ist, die in der Frage geforderte Unterscheidung zu treffen.
  • Gleiches gilt für viele übergeordnete Protokolle, z. B. HTTP.
  • Es ist in der Tat möglich, mehr oder weniger feine Unterschiede in den Antwortmustern zu verwenden, um eine Vermutung über das System anzustellen . Wenn Sie zwei sehr unterschiedliche Systeme haben, z. B. einen Linux- und einen Windows-Server, reicht dies möglicherweise aus, um zwei Hosts zu haben.
  • Dies wird umso schwieriger, je ähnlicher die Systeme sind. Es ist wahrscheinlich unmöglich, zwei Knoten in einem HA-Webcluster mit identischer Hardware und identischem Betriebssystem auf diese Weise voneinander zu trennen. Ich halte dies heute in den meisten Szenarien für den allgemeinen Fall.
  • Zuletzt: Befinden sich zwei virtuelle Maschinen auf einem oder zwei Servern auf derselben physischen Box? Je nachdem, warum Sie überhaupt versuchen, zu differenzieren, ist dies möglicherweise wichtig und auf Netzwerkebene absolut unmöglich zu sagen.

2
Die Antwort von Sven ist zu 100% richtig, es kann jedoch vermutet werden, ob auf ihnen unterschiedliche Betriebssysteme ausgeführt werden (über nmap oder den hier beschriebenen Ping-Test kellyodonnell.com/content/determining-os-type-ping ). Möglicherweise sind beide weiterhin vms, die von dem einen Host ausgeführt werden.
Andy

1
@Andy: Deshalb habe ich "im allgemeinen Fall" gesagt. In einigen Fällen können Sie herausfinden, aber auf der anderen Seite, in einigen Fällen bemerken Sie nicht einmal, dass dies nicht ein Computer hinter einer einzelnen IP-Adresse ist, sondern einhundert ...
Sven

3
@Sven: Die Frage ist, ob zwei IPs mit einem einzelnen Computer korrelieren, nicht, ob Dienste auf einer gemeinsamen IP mit mehreren Computern korrelieren. Ich bin damit einverstanden, dass es nicht immer eine universelle Methode gibt, die garantiert funktioniert, aber wenn man genug Gemeinsamkeiten zwischen den eingegangenen Antworten findet, kann man möglicherweise eine vernünftige Vermutung anstellen. Michelle muss genau herausfinden, was erreicht werden muss, um festzustellen, ob es eine nützliche Lösung gibt. Ist es zum Beispiel wichtig, ob es sich um eine Lastausgleichs- oder eine virtuelle Konfiguration handelt?
Bobstro

1
Mehrdeutig, wenn Sie die Virtualisierung einsetzen. Angenommen, Sie haben zwei VMs, Gast A und Gast B, jeweils mit einer anderen IP-Adresse, jedoch im selben / 27-Netz. Angenommen, diese beiden Gäste werden von Host C gehostet. In gewisser Hinsicht gehören die beiden / 27-Adressen zu verschiedenen "Servern", in anderer Hinsicht könnten sie jedoch dieselbe Netzwerkkarte und denselben Host passieren, sodass man argumentieren kann, dass die IPs dazu gehören auf den gleichen "Server". Wenn Gast A wiederum zwei weitere VMs hostet, Gast X und Gast Y, ebenfalls mit ihren eigenen / 27-Adressen, welche dieser IPs gehören zum selben Computer? Was ist, wenn Sie eine dieser VMs "vMotion"? Ich habe keine gute Antwort.
Joshua Huber

13

Neugierig auf "warum". Bedenken in Bezug auf Dual-Homed-Computer sind in der Regel als Kopfschmerzen eines unbekannten Systemadministrators zu bezeichnen. Details sollen vom OSI-Modell ausgeblendet werden.

Linux-zentrierte Antwort voraus.

Es gibt einige Möglichkeiten, Fingerabdrücke zu generieren und eine pädagogische Vermutung anzustellen.

  1. nmap -o und nmap mit einem anständigen Port-Scan. Server binden nicht immer an beide Netzwerkkarten. Aber oft tun sie es.

  2. MAC-Adressen. Wenn Sie die MAC-Adressen auf irgendeine Weise ermitteln konnten, verwenden die Hersteller für integrierte Hardware gerne aufeinanderfolgende Adressen. Es ist wahrscheinlicher, dass zwei nahezu identische MAC-Adressen dasselbe Motherboard sind. Dies gilt natürlich nicht für Nachrüstkarten.

  3. Schöne Grüße. Telnet, FTP, SMTP und dergleichen bieten identifizierende Informationen. Stellen Sie fest, ob diese Dienste ausgeführt werden, und bieten Sie ausreichend unterschiedliche Informationen an. Banner sind heute wahrscheinlich selten, aber immer noch einen Versuch wert.

  4. Testen Sie das NIC-unabhängige Verhalten. Versuchen Sie beispielsweise, Hosts zu stolpern, indem Sie ein Dutzend Mal eine falsche Authentifizierung für ssh bereitstellen. Wenn Hosts verweigern ausgelöst wird, sollten Sie feststellen, dass der Socket beim nächsten Versuch sofort geschlossen wird. Überprüfen Sie, ob dies auch für die andere IP-Adresse zutrifft.

A / 27 netto ist ... was, 29 Hosts? Ich würde sagen, die Chancen, eine Dual-Home-Maschine mit hohem Vertrauen zu identifizieren, sind sehr gering, vielleicht 5%. Bei so wenigen Gastgebern ist es jedoch möglich, dass Sie eine fundierte Vermutung anstellen können.

Lustige Frage für ein Interview. Ich kann es tatsächlich stehlen.


4
Was # 4 betrifft, können Sie die Hostschlüssel vergleichen, wenn auf beiden Adressen ssh ausgeführt wird und Sie eine Verbindung herstellen können. Grundsätzlich könnten zwei verschiedene Server den gleichen Hostschlüssel erhalten, aber es wäre eine sehr seltsame Einrichtung. Wenn Sie also denselben Hostschlüssel von beiden Adressen erhalten, handelt es sich höchstwahrscheinlich um denselben Server.
Nate Eldredge

Durch das Klonen von Computern können zwei Boxen mit demselben Hostschlüssel entstehen.
Peter Green

7

Theoretisch kann in den meisten Fällen ein aussagekräftiges Konfidenzniveau angegeben werden. Es gibt jedoch ein paar Einschränkungen, die es in der Praxis viel schwieriger machen.

Ich werde andere Antworten überlappen, und ich habe wahrscheinlich etwas verpasst, aber dies ist zumindest eine detaillierte Begründung, warum diese bestimmten Teile wichtig sind oder nicht.

Vergessen Sie jedoch zunächst die Gedanken an MAC-Adressen. Sofern Sie keinen direkten Zugriff auf das Netzwerksegment haben, können Sie diese nicht sehen.

Vertrauen Sie auch keinen Port-Scans. Es ist trivial, Firewall-Ports nur für bestimmte IP-Adressen zu konfigurieren, Software nur für bestimmte IP-Adressen empfangsbereit zu machen oder ein IDS / IPS-System zu verwenden, das die Filterung anwendet, wenn ein Scan erkannt wird. All dies wird Ihre Tests durcheinander bringen.

Ok, die Art und Weise, wie Sie das beurteilen können, ist einfach: Die Wahrscheinlichkeit, dass zwei Kästchen genau identisch sind, ist gering, sofern sie nicht auf andere Weise zusammenhängen. Was Sie also tatsächlich tun, ist zu beweisen, dass es sich um verschiedene Boxen handelt, und nicht, dass sie gleich sind.

  1. Klingeln. Sie müssen beide gleichzeitig testen und viele Tests durchführen. Es stellt sich heraus, dass es in Netzwerkzeiten zwar zu Jitter kommt, es sich jedoch um ein ziemlich hochwertiges Pseudozufallsrauschen handelt. Wenn Sie jedoch in einem kurzen Zeitrahmen genügend Samples haben, wird das Rauschen so weit gemittelt, dass Sie einen genauen Vergleich erhalten.

    Jeder Layer-2-Hop in einem Netzwerk erhöht die Latenz geringfügig. Unterschiedliche Überlastungsgrade führen zu unterschiedlichen Latenzwerten. Wenn die beiden IP-Adressen eine signifikant unterschiedliche gleichzeitige Latenz aufweisen, können Sie davon ausgehen, dass es sich wahrscheinlich nicht um dieselbe Box handelt.

    Vorsichtsmaßnahme 1: Ein einzelner Server mit zwei Uplinks (nicht verbunden) und einer anderen IP auf jedem Uplink kann ein ausreichendes Uplink-Ungleichgewicht aufweisen, um dies auszuschalten.

  2. Port-Scan. Zielports können sich in einem von drei Zuständen befinden: Abhören, Geschlossen, Gefiltert. Was sie sind, ist nicht wirklich nützlich, wie oben erwähnt, aber es gibt immer noch nützliche Informationen zu haben.

    1. Bei Boxen mit Ports, die auf mehreren IP-Adressen geöffnet sind, wird höchstwahrscheinlich auf allen IP-Adressen dieselbe Software ausgeführt. Es ist beispielsweise möglich, Nginx auf einer IP-Adresse und Apache auf einer anderen auszuführen, aber die meisten Leute kümmern sich nicht darum. Fingerabdruck der Dienste, die ausgeführt werden, um nach Ähnlichkeiten zu suchen. Suchen Sie nach der Software und der Version, für die die Werbung erfolgt, welche Optionen unterstützt werden, welcher Hostname (falls vorhanden) angekündigt wird, ob das Verhalten der Software irgendwelche Macken aufweist.

      Webdienste sind dafür am wenigsten nützlich, viel nützlicher sind Dinge wie SMTP (aufgrund der Sendmail-Unterstützung schwer zu mischen und abzugleichen, es gehen viele Informationen verloren), SNMP (eine Informationsgoldmine), SSH (wer führt mehrere SSH-Daemons aus? ) und HTTPS (wenn Sie Pech haben und dieselbe Software verwenden, können Sie nach Unterschieden in der SSL-Konfiguration suchen. Eine identische, aber ungewöhnliche Konfiguration ist ein guter Indikator). NTP war früher ein guter Test, wird aber jetzt aufgrund der starken Verwendung als DoS-Verstärker hart gesperrt. SNTP ist für eine rauchende Waffe nicht genau genug.

    2. Schicht 3 Fingerabdruck. Die wichtigste Möglichkeit, ein Betriebssystem per Fernzugriff mit Fingerabdrücken zu versehen, besteht darin, die TCP / IP-Implementierung zu vereinfachen. Die genauen Details sind viel zu lang, um darauf eingehen zu können, aber im Wesentlichen geben die Paketmetadaten viele Informationen preis, ebenso wie ein geschlossener oder gefilterter Port auf eine Verbindung reagiert und wie sich ein Host verhält, wenn er fehlerhafte Pakete empfängt. Diese Eigenschaften sind zwar keine Garantie dafür, dass sie ausgeführt werden, sie sind jedoch bei jeder an einen bestimmten TCP / IP-Stack gebundenen IP garantiert nahezu identisch. Signifikant unterschiedliche Systeme sollten signifikant unterschiedliche Eigenschaften haben.

    Einschränkung 2: Zwei Boxen, auf denen genau dasselbe Betriebssystem und dieselben Hersteller-Patches ausgeführt werden, sehen wahrscheinlich gleich aus. Unter Windows sind zwei Kopien derselben Windows-Version, auf denen automatische Updates ausgeführt werden, nicht zu unterscheiden, es sei denn, auf ihnen werden unterschiedliche Firewalls ausgeführt. Unter Linux hängen die Unterschiede wahrscheinlich hauptsächlich damit zusammen, welche Kernel-Version und -Optionen ausgeliefert werden. Dieser Test kann nur mit hoher Wahrscheinlichkeit angeben, dass zwei IPs nicht auf demselben Betriebssystem ausgeführt werden.

  3. Attacken wiederholen. Führen Sie bei geöffneter Liste der Ports auf beiden IP-Adressen identische Aktionen für jede IP-Adresse aus und suchen Sie nach Unstimmigkeiten im Verhalten. Dinge wie Zeitüberschreitungen, Fehlermeldungen, Wiederholungslimits usw. Manche Software ist schwieriger oder seltener so konfiguriert, dass sie sich je nach IP unterscheidet. Wenn Sie wissen, dass eine IP-Adresse E-Mails für eine bestimmte Domain akzeptiert, prüfen Sie, ob die andere IP-Adresse auch E-Mails für diese Domain akzeptiert.

    Vorsichtsmaßnahme 3: Dies sind Daten mit geringerer Qualität als der Service-Fingerprinting-Teil von Test 2, da diese Informationen auf verschiedenen IP-Adressen leichter unterschiedlich konfiguriert werden können und alle Arten von Interaktionen hinter den Kulissen möglich sind. Die hohe Wahrscheinlichkeit falscher Ergebnisse gibt wenig Vertrauen in diese Ergebnisse.

Wie ich bereits sagte, ist die zugrunde liegende Theorie, dass verschiedene Hosts wahrscheinlich unterschiedliche Konfigurationen haben und dass Informationen verloren gehen.

Was dies nicht erklärt, ist, dass es viel schwieriger zu sagen ist, ob derselbe Standort, der auf zwei IPs ausgeführt wird, derselbe Server ist oder zwei Server, die für Redundanz konfiguriert sind. Außerdem werden Systemadministratoren, die das Konfigurationsmanagement ausführen, nicht berücksichtigt, um ihre Systeme sehr ähnlich zu halten. Es werden auch keine Hosts berücksichtigt, die mehrere Dienste, die auf verschiedenen Hosts ausgeführt werden, auf eine einzige IP-Adresse DNATen.

Virtualisierungstechnologie wirft einige ungerade Schlüssel in den Arbeiten. Containerisierte Systeme wie Docker teilen genügend Stapel, um die einzelnen Container ähnlicher aussehen zu lassen, als sie tatsächlich sind. Virtuelle Netzwerkkarten, die mit einer physischen Netzwerkkarte verbunden sind, sollten nicht von physisch getrennter Hardware zu unterscheiden sein, was jedoch nicht der Fall ist, da es sich bei der Brücke um Software handelt und die Pakete daher den Host-IP-Stack passieren müssen.

Es gibt viele Möglichkeiten, Leute zu verwirren, die versuchen, die Wiederholbarkeit zu testen. Das Beste, auf das Sie hoffen können, ist ein Muster mit einem geringen Zweifel.

Die Moral für Leute, die Server betreiben, ist, dass Sie Ihre Server so konfigurieren, dass möglichst wenig Informationen verloren gehen:

  1. Bannerinformationen so weit wie möglich ablehnen. Je weniger ein Angriff über Ihre Konfiguration weiß, desto besser für Sie.

  2. Lassen Sie die Software nur Verbindungen auf der IP akzeptieren, auf der sie bereitgestellt werden soll, und nur dann, wenn dies erforderlich ist. Wenn es nicht von außen zugänglich sein muss, stellen Sie sicher, dass es nur an localhost gebunden ist. Die Reduzierung der Angriffsfläche ist immer gut.

  3. Wenn Sie unbedingt etwas hören müssen und die Korrelation zwischen zwei IPs vermeiden möchten, versuchen Sie, ungewöhnliche Optionen auf ein Minimum zu beschränken. Sie möchten, dass es sich einfügt.

  4. Führen Sie eine Firewall mit einer Standardrichtlinie zum Löschen aus. Ich denke, ein IDS-Setup, das auf Angreifer mit zufälligen Antworten reagiert, hat möglicherweise einen Wert. Durch Rauschen wird es für einen Angreifer schwieriger, seinen Ergebnissen zu vertrauen, aber Sie werden dadurch hervorgehoben.

  5. Zufällige Verzögerungsmodule sind wertlos, um Timing-Angriffe zu verhindern. Nicht wirklich. Wählen Sie eine Zufallszahl und würfeln Sie ein paarmal. Notieren Sie sich das Ergebnis und die zu Beginn gewählte Zahl. Am Ende haben Sie einen Bereich mit einem festen Versatz. Wenn die Zufallszahl ersetzt wird, verschiebt sich der Bereich. Wenn der Bereich geändert wird, bleibt der Versatz gleich und es ist nur eine Frage des Wiederholens des Abtastvorgangs, um eine neue Basislinie zu erhalten.

  6. IP-Stack-Normalisierer gibt es zwar, sie waren jedoch ein vernachlässigter Teil der Sicherheitsforschung, als ich das letzte Mal nachgesehen habe. Es wäre wahrscheinlich ein schöner Markt, in den ein Sicherheitsanbieter investieren könnte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.