Comment savoir si une machine distante utilise Windows ou Linux?

10

Existe-t-il un moyen d'exécuter une commande (comme un message ICMP ou un autre protocole), d'obtenir une réponse d'une machine distante (pas sur mon propre réseau local privé) et d'analyser le message pour trouver des preuves que cette machine exécute Windows ou un système d'exploitation Linux?

Diogo
la source
Que comptez-vous faire de ces informations? Ce n'est peut-être pas fiable ...
pjc50
En fait, j'étais sur un client la semaine dernière et il utilisait un système qui empêche quiconque d'utiliser un système Windows sur son réseau. Il a été fait par un serveur distant qui n'était pas sur le même réseau, je le trouve très étrange car je ne savais pas comment c'était fait.
Diogo
Il existe plusieurs façons de procéder. Par exemple, si vous utilisez DHCP pour fournir des adresses réseau, la demande DHCP inclut des informations sur le système d'exploitation client.
Harry Johnston

Réponses:

16

Ce n'est pas définitif mais nmap le fera avec la commande nmap -O -v( voir la documentation pour plus de détails) Si vous utilisez Windows ou si vous voulez un GUI, regardez zenmap

Compagnon Geek
la source
1
Attention, certains fournisseurs détectent la numérisation de port en utilisant nmap comme un abus.
Jeroen Baert
2
@JeroenBaert namelly AWS m'a envoyé un e
Jonathan dos Santos
10

Si vous êtes sur un réseau IPv4, utilisez simplement ping. Si la réponse a un TTL de 128, la cible exécute probablement Windows. Si le TTL est 64, la cible exécute probablement une variante d'Unix.

Harry Johnston
la source
Qu'entendez-vous par propablement?
Dchris
Qu'en est-il de TTL = 255? Je pense que c'est Unix ..
Dchris
1
Je ne pense pas avoir jamais vu un TTL de 255.
Harry Johnston
Quelle est l'explication de cela / Pourquoi est-ce le cas?
Hervian
1
@Hervian, si vous voulez dire pourquoi ces TTL particuliers ont été choisis, vous devrez demander aux programmeurs d'origine. Si vous voulez dire pourquoi la plupart ou toutes les variantes UNIX sont toutes identiques et / ou pourquoi le TTL est le même pour chaque version de Windows, ce serait juste de l'inertie - en l'absence de raison particulière de changer quelque chose, il a tendance à rester le même.
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
          )
       )
    )
)
au vent
la source
Cela peut-il être modifié pour fonctionner avec une gamme d'IP? Si je voulais l'exécuter pour trouver tous les ttl pour toute ma pile de serveurs.
Eddie Studer
1

Une façon de procéder consiste à utiliser NMap . D'après la réponse, il peut deviner le système d'exploitation distant.

Apache
la source
1

Package: xprobe 'OU' xprobe2
Description: Identification du système d'exploitation à distance Xprobe2 vous permet de déterminer quel système d'exploitation s'exécute sur un hôte distant. Il envoie plusieurs paquets à un hôte et analyse les réponses retournées. La fonctionnalité de Xprobe2 est comparable à la fonction d'empreinte digitale du système d'exploitation dans nmap.

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

Référence:
http://www.sys-security.com/html/projects/X.html
http://sourceforge.net/projects/xprobe/

tao
la source
0

Ancien message, mais j'ai pensé que j'ajouterais à cela aussi, si le périphérique est compatible SNMP, vous pouvez également demander le sysDescr qui vous indiquera le système d'exploitation qu'il utilise.

Téléchargez un navigateur MIB, un bon que j'utilise est ici: http://www.ireasoning.com/downloadmibbrowserfree.php . Vous lui donnez essentiellement l'adresse IP de l'appareil et effectuez une opération de marche.

Johnathon64
la source
Pouvez-vous développer votre réponse pour expliquer comment y parvenir? Merci.
fixer1234
Vous pouvez télécharger un navigateur MIB, un bon que j'utilise est ici ireasoning.com/downloadmibbrowserfree.php . Vous lui donnez essentiellement l'adresse IP de l'appareil et effectuez une opération de marche
Johnathon64
0

Suivant la suggestion de Johnathon64, vous pouvez utiliser SNMP pour interroger directement sur le serveur - en supposant que le serveur distant lui-même est configuré pour utiliser SNMP. Vous pouvez lancer une requête en ligne de commande telle que celle ci-dessous pour le faire:

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

Expliquer la commande elle-même:

  1. snmpget interrogera l'objet sysDescr, qui contient le nom par défaut de l'objet.
  2. Les éléments suivants sedexcluront la sortie de début, qui ne contient que l'OID interrogé et le début de la chaîne.
  3. La dernière commande tr,, exclura les guillemets doubles, généralement trouvés dans la requête SNMP.

Les deux dernières commandes servent uniquement à formater la sortie - si vous n'en avez pas besoin, vous pouvez utiliser la toute première commande pour extraire la sortie complète.

FoxBuster
la source