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.