Skąd mam wiedzieć, czy zdalny komputer używa systemu Windows lub Linux?


10

Czy istnieje sposób na uruchomienie polecenia (takiego jak komunikat ICMP lub inny protokół), uzyskanie odpowiedzi ze zdalnego komputera (nie w mojej prywatnej sieci lokalnej) i przeanalizowanie komunikatu w celu znalezienia dowodów na to, że na tym komputerze działa system Windows lub system operacyjny Linux?


Co planujesz zrobić z tymi informacjami? To może nie być wiarygodne ...
pjc50

Właściwie byłem w zeszłym tygodniu na kliencie, a on korzystał z systemu, który uniemożliwiłby każdemu korzystanie z systemu Windows w jego sieci. Został stworzony przez zdalny serwer, który nie był jedną tą samą siecią, myślę, że to bardzo dziwne, ponieważ nie wiedziałem, jak to się stało.
Diogo

Istnieje wiele sposobów, aby to zrobić. Na przykład, jeśli używasz DHCP do dostarczania adresów sieciowych, żądanie DHCP zawiera informacje o systemie operacyjnym klienta.
Harry Johnston,

Odpowiedzi:



10

Jeśli korzystasz z sieci IPv4, po prostu użyj polecenia ping. Jeśli czas reakcji wynosi 128, oznacza to, że prawdopodobnie celem jest system Windows. Jeśli TTL wynosi 64, w celu prawdopodobnie działa jakiś wariant Uniksa.


Co przez to rozumiesz?
Dchris,

Co z TTL = 255? Myślę, że to Unix ..
Dchris,

1
Nie sądzę, żebym kiedykolwiek widział TTL wynoszącą 255.
Harry Johnston,

Jakie jest wyjaśnienie tego / Dlaczego tak jest.
Hervian

1
@Hervian, jeśli masz na myśli, dlaczego wybrano te konkretne TTL, musisz zapytać oryginalnych programistów. Jeśli masz na myśli, dlaczego większość lub wszystkie warianty UNIX są takie same i / lub dlaczego TTL jest taki sam dla każdej wersji systemu Windows, byłaby to po prostu bezwładność - przy braku jakiegokolwiek szczególnego powodu, aby coś zmienić, zwykle pozostaje podobnie.
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
          )
       )
    )
)

Czy można to zmodyfikować, aby działało z szeregiem adresów IP? Gdybym chciał to uruchomić, aby znaleźć wszystkie ttl dla całego stosu moich serwerów.
Eddie Studer

1

Jednym ze sposobów jest użycie NMap . Na podstawie odpowiedzi może odgadnąć zdalny system operacyjny.


1

Pakiet: xprobe „OR” xprobe2
Opis: Zdalna identyfikacja systemu operacyjnego Xprobe2 pozwala określić, który system operacyjny działa na zdalnym hoście. Wysyła kilka pakietów do hosta i analizuje zwrócone odpowiedzi. Funkcjonalność Xprobe2 jest porównywalna z funkcją odcisku palca systemu operacyjnego w nmap.

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

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


0

Stary post, ale pomyślałem, że też do tego dodam, jeśli urządzenie obsługuje SNMP, możesz również zapytać o sysDescr, który powie ci, którego systemu operacyjnego używa.

Pobierz przeglądarkę MIB, dobrą, której używam, jest tutaj: http://www.ireasoning.com/downloadmibbrowserfree.php . Zasadniczo podajesz mu adres IP urządzenia i wykonujesz operację marszu.


Czy możesz rozszerzyć swoją odpowiedź, aby wyjaśnić, jak to osiągnąć? Dzięki.
fixer1234

Możesz pobrać przeglądarkę MIB, dobrą, której używam, jest tutaj ireasoning.com/downloadmibbrowserfree.php . Zasadniczo podajesz mu adres IP urządzenia i wykonujesz operację marszu
Johnathon64

0

Zgodnie z sugestią Johnathon64 można użyć SNMP do zapytania bezpośrednio na serwerze - zakładając, że sam serwer zdalny jest skonfigurowany do korzystania z SNMP. Aby to zrobić, możesz uruchomić zapytanie z wiersza polecenia:

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

Wyjaśnienie samego polecenia:

  1. snmpget wyśle ​​zapytanie do obiektu sysDescr, który zawiera domyślną nazwę obiektu.
  2. Poniższe sedwyklucza początkowe wyjście, które zawiera tylko odpytywany OID i początek ciągu.
  3. Ostatnie polecenie trwyklucza wszelkie cudzysłowy, zwykle znajdujące się w zapytaniu SNMP.

Ostatnie dwa polecenia służą tylko do sformatowania danych wyjściowych - jeśli ich nie potrzebujesz, możesz użyć pierwszego polecenia, aby wyodrębnić pełne dane wyjściowe.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.