Come faccio a sapere se un computer remoto utilizza Windows o Linux?


10

Esiste un modo per eseguire un comando (come un messaggio ICMP o un altro protocollo), ottenere una risposta da una macchina remota (non sulla mia rete locale privata) e analizzare il messaggio per trovare alcune prove che questa macchina esegue Windows o un sistema operativo Linux?


Cosa pensi di fare con queste informazioni? Potrebbe non essere affidabile ...
pjc50,

In realtà ero su un cliente la scorsa settimana e stava usando un sistema che impediva a chiunque di usare un sistema Windows sulla sua rete. È stato creato da un server remoto che non era la stessa rete, ma è molto strano perché non sapevo come fosse fatto.
Diogo,

Ci sono molti modi in cui potresti farlo. Ad esempio, se si utilizza DHCP per fornire indirizzi di rete, la richiesta DHCP include informazioni sul sistema operativo client.
Harry Johnston,

Risposte:



10

Se sei su una rete IPv4, usa solo ping. Se la risposta ha un TTL di 128, la destinazione probabilmente sta eseguendo Windows. Se il TTL è 64, probabilmente il target sta eseguendo una variante di Unix.


Cosa intendi con "propibile"?
Dchris,

Che dire di TTL = 255? Penso che sia Unix ..
Dchris

1
Non credo di aver mai visto un TTL di 255.
Harry Johnston,

Qual è la spiegazione per questo / Perché è questo il caso.
Hervian,

1
@Hervian, se vuoi dire perché sono stati scelti quei TTL particolari, dovresti chiedere ai programmatori originali. Se intendi perché la maggior parte o tutte le varianti UNIX sono tutte uguali e / o perché il TTL è lo stesso per ogni versione di Windows, sarebbe solo inerzia: in assenza di un motivo particolare per cambiare qualcosa, tende a rimanere il stesso.
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
          )
       )
    )
)

Questo può essere modificato per funzionare con una gamma di IP? Se volessi eseguire questo per trovare tutti i ttl per l'intero stack del mio server.
Eddie Studer,

1

Un modo per procedere è utilizzare NMap . Dalla risposta, può indovinare il sistema operativo remoto.


1

Pacchetto: xprobe 'OR' xprobe2
Descrizione: Identificazione del sistema operativo remoto Xprobe2 consente di determinare quale sistema operativo è in esecuzione su un host remoto. Invia diversi pacchetti a un host e analizza le risposte restituite. La funzionalità di Xprobe2 è paragonabile alla funzionalità di fingerprinting del sistema operativo in nmap.

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

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


0

Vecchio post, ma ho pensato di aggiungere anche questo, se il dispositivo è abilitato per SNMP puoi anche cercare sysDescr che ti dirà il sistema operativo che sta usando.

Scarica un browser MIB, uno di quelli che utilizzo è qui: http://www.ireasoning.com/downloadmibbrowserfree.php . Fondamentalmente gli dai l'indirizzo IP del dispositivo e fai una passeggiata.


Puoi espandere la tua risposta per spiegare come farlo? Grazie.
fixer1234,

Puoi scaricare un browser MIB, uno di quelli che uso è qui ireasoning.com/downloadmibbrowserfree.php . Fondamentalmente gli dai l'indirizzo IP del dispositivo e fai una passeggiata
Johnathon64,

0

Seguendo il suggerimento di Johnathon64, è possibile utilizzare SNMP per eseguire query direttamente sul server, presupponendo che il server remoto stesso sia configurato per utilizzare SNMP. È possibile avviare una query della riga di comando come quella seguente per farlo:

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

Spiegando il comando stesso:

  1. snmpget interrogherà l'oggetto sysDescr, che contiene il nome predefinito dell'oggetto.
  2. Quanto segue sedescluderà l'output iniziale, che contiene solo l'OID polling e l'inizio della stringa.
  3. L'ultimo comando tresclude le doppie virgolette, generalmente presenti nella query SNMP.

Gli ultimi due comandi servono solo per formattare l'output: se non sono necessari, è possibile utilizzare il primo comando per estrarre l'output completo.

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.