Woher weiß ich, ob ein Remotecomputer Windows oder Linux verwendet?


10

Gibt es eine Möglichkeit, einen Befehl auszuführen (z. B. eine ICMP-Nachricht oder ein anderes Protokoll), eine Antwort von einem Remotecomputer (nicht in meinem eigenen lokalen lokalen Netzwerk) zu erhalten und die Nachricht zu analysieren, um Hinweise darauf zu finden, dass auf diesem Computer Windows oder ausgeführt wird ein Linux-Betriebssystem?


Was planen Sie mit diesen Informationen zu tun? Es kann nicht zuverlässig sein ...
pjc50

Eigentlich war ich letzte Woche bei einem Kunden und er verwendete ein System, das verhindert, dass jemand ein Windows-System in seinem Netzwerk verwendet. Es wurde von einem Remote-Server erstellt, der nicht dasselbe Netzwerk war. Ich finde es sehr seltsam, weil ich nicht wusste, wie es erstellt wurde.
Diogo

Es gibt verschiedene Möglichkeiten, dies zu tun. Wenn Sie beispielsweise DHCP zum Bereitstellen von Netzwerkadressen verwenden, enthält die DHCP-Anforderung Informationen zum Client-Betriebssystem.
Harry Johnston

Antworten:



10

Wenn Sie sich in einem IPv4-Netzwerk befinden, verwenden Sie einfach Ping. Wenn die Antwort eine TTL von 128 hat, wird auf dem Ziel wahrscheinlich Windows ausgeführt. Wenn die TTL 64 ist, führt das Ziel wahrscheinlich eine Unix-Variante aus.


Was meinst du mit wahrscheinlich?
Dchris

Was ist mit TTL = 255? Ich denke ist Unix ..
Dchris

1
Ich glaube nicht, dass ich jemals eine TTL von 255 gesehen habe.
Harry Johnston

Was ist die Erklärung dafür / Warum ist das der Fall?
Hervian

1
@Hervian, wenn Sie meinen, warum diese bestimmten TTLs ausgewählt wurden, müssen Sie die ursprünglichen Programmierer fragen. Wenn Sie meinen, warum die meisten oder alle UNIX-Varianten alle gleich sind und / oder warum die TTL für jede Windows-Version gleich ist, wäre dies nur Trägheit - ohne einen bestimmten Grund, etwas zu ändern, bleibt sie in der Regel gleich gleich.
Harry Johnston

2
: Presumes ping service enabled on Windows local and remote hosts
:
del _IX.txt, Windows.txt
ping -n 1 [computername|ipaddress] | findstr /i /c:"Reply" > ttl.txt
for /f "tokens=1-9* delims=:=< " %%a in (ttl.txt) do (
    if %%i leq 130 (
       if %%i geq 100 (
          echo Windows & rem or echo %%c >> Windows.txt
       ) else (
          if %%i equ 64 (
             echo *IX & rem or echo %%c >> _IX.txt
          )
       )
    )
)

Kann dies geändert werden, um mit einer Reihe von IPs zu funktionieren? Wenn ich dies ausführen wollte, um alle ttl für meinen gesamten Server-Stack zu finden.
Eddie Studer

1

Ein Weg ist die Verwendung von NMap . Aus der Antwort kann das Remote-Betriebssystem erraten werden.


1

Paket: xprobe 'OR' xprobe2
Beschreibung: Remote-Betriebssystemidentifikation Mit Xprobe2 können Sie bestimmen, welches Betriebssystem auf einem Remote-Host ausgeführt wird. Es sendet mehrere Pakete an einen Host und analysiert die zurückgegebenen Antworten. Die Funktionalität von Xprobe2 ist vergleichbar mit der Fingerabdruckfunktion des Betriebssystems in nmap.

Beispiel:
$ sudo apt-get install xprobe
$ sudo xprobe2 -T21-23,80,53,110 ###. ###. ###. ###

Referenz:
http://www.sys-security.com/html/projects/X.html
http://sourceforge.net/projects/xprobe/


0

Alter Beitrag, aber ich dachte, ich würde ihn auch ergänzen. Wenn das Gerät SNMP-fähig ist, können Sie auch nach sysDescr fragen, das Ihnen das verwendete Betriebssystem mitteilt.

Laden Sie einen guten MIB-Browser herunter, den ich hier verwende: http://www.ireasoning.com/downloadmibbrowserfree.php . Sie geben ihm im Grunde die IP-Adresse des Geräts und führen einen Walk-Vorgang durch.


Können Sie Ihre Antwort erweitern, um zu erklären, wie dies erreicht werden kann? Vielen Dank.
Fixer1234

Sie können einen MIB-Browser herunterladen. Ein guter Browser, den ich verwende, ist hier ireasoning.com/downloadmibbrowserfree.php . Sie geben ihm im Grunde die IP-Adresse des Geräts und führen eine Gehoperation durch
Johnathon64

0

Nach dem Vorschlag von Johnathon64 können Sie SNMP verwenden, um direkt auf dem Server abzufragen - vorausgesetzt, der Remote-Server selbst ist für die Verwendung von SNMP konfiguriert. Sie können eine Befehlszeilenabfrage wie die folgende starten, um dies zu tun:

snmpget -v1 -c public <RemoteServerIP> sysDescr.0 | sed -n 's/.*STRING: //p' | tr -d \"

Den Befehl selbst erklären:

  1. snmpget fragt das Objekt sysDescr ab, das den Standardnamen des Objekts enthält.
  2. Im Folgenden sedwird die Anfangsausgabe ausgeschlossen, die nur die abgefragte OID und den Anfang der Zeichenfolge enthält.
  3. Der letzte Befehl trschließt doppelte Anführungszeichen aus, die normalerweise in der SNMP-Abfrage enthalten sind.

Die letzten beiden Befehle dienen nur zum Formatieren der Ausgabe. Wenn Sie sie nicht benötigen, können Sie den ersten Befehl verwenden, um die gesamte Ausgabe zu extrahieren.

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.