Як дізнатись, чи віддалена машина використовує Windows або Linux?


10

Чи є спосіб запустити команду (наприклад, повідомлення ICMP чи інший протокол), отримати відповідь з віддаленої машини (не в моїй приватній локальній мережі) та проаналізувати повідомлення, щоб знайти деякі докази того, що ця машина працює під керуванням Windows або операційна система Linux?


Що ви плануєте зробити з цією інформацією? Це не може бути надійним ...
pjc50

Насправді я був на зберігачі минулого тижня, і він використовував систему, яка заважає комусь використовувати систему Windows у своїй мережі. Це зробив віддалений сервер, який був не однією і тією ж мережею, я дуже дивно, тому що я не знав, як це зроблено.
Діого

Існує будь-яка кількість способів зробити це. Наприклад, якщо ви використовуєте DHCP для надання мережевих адрес, запит DHCP включає інформацію про ОС клієнта.
Гаррі Джонстон

Відповіді:


16

Це не остаточно, але nmap зробить це командою nmap -O -v(детальніше див. Документи ). Якщо ви працюєте з Windows або хочете gui, подивіться zenmap


1
Зауважте - деякі провайдери виявлять сканування портів, використовуючи nmap як зловживання.
Йероен Баерт

2
@JeroenBaert namelly AWS надіслав мені страшний лист
Джонатан дос Сантос

10

Якщо ви перебуваєте в мережі IPv4, просто використовуйте ping. Якщо відповідь має TTL 128, ціль, ймовірно, працює під управлінням Windows. Якщо TTL дорівнює 64, ціль, ймовірно, виконує якийсь варіант Unix.


Що ти маєш на увазі під поширенням?
Дхріс

Що з TTL = 255? Я думаю, що це Unix ..
Dchris

1
Я не думаю, що я ніколи не бачив 255 TTL
Гаррі Джонстон,

Яке пояснення цьому / Чому це так.
Гервіан

1
@ Гервіан, якщо ви маєте на увазі, чому були обрані саме ці TTL, вам доведеться запитати оригінальних програмістів. Якщо ви маєте на увазі, чому більшість або всі варіанти UNIX однакові та / або чому TTL однаковий для кожної версії Windows, це було б просто за інерцією - за відсутності конкретних причин щось змінити, воно, як правило, залишається те саме.
Гаррі Джонстон

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
          )
       )
    )
)

Чи може ця модифікація працювати з діапазоном IP-адрес? Якби я хотів запустити це, щоб знайти всі TTL-і для всього мого сервера.
Едді Студдер

1

Один із способів - це використовувати NMap . З відповіді можна здогадатися про віддалену ОС.


1

Пакет: xprobe 'АБО' xprobe2
Опис: Віддалена ідентифікація ОС Xprobe2 дозволяє визначити, яка операційна система працює на віддаленому хості. Він надсилає кілька пакетів хосту і аналізує повернені відповіді. Функціональність Xprobe2 порівнянна з функцією відбитків пальців ОС у nmap.

Приклад:
$ sudo apt-get install xprobe
$ sudo xprobe2 -T21-23,80,53,110 ###. ###. ###. ###

Довідка:
http://www.sys-security.com/html/projects/X.html
http://sourceforge.net/projects/xprobe/


0

Стара публікація, але я думав, що я додам і до цього, якщо пристрій увімкнено SNMP, ви також можете запитати про sysDescr, який підкаже вам ОС, яку він використовує.

Завантажте браузер MIB, хороший той, який я використовую, тут: http://www.ireasoning.com/downloadmibbrowserfree.php . Ви в основному даєте йому IP-адресу пристрою і виконуєте операцію прогулянки.


Чи можете ви розширити свою відповідь, щоб пояснити, як це досягти? Дякую.
fixer1234

Ви можете завантажити браузер MIB, хороший той, який я використовую, тут ireasoning.com/downloadmibbrowserfree.php . Ви в основному даєте йому ip-адресу пристрою та виконайте прогулянку
Johnathon64

0

Після пропозиції Johnathon64, ви можете використовувати SNMP для запиту безпосередньо на сервері - якщо припустимо, що сам віддалений сервер налаштований на використання SNMP. Ви можете запустити запит командного рядка, такий як наведений нижче:

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

Пояснення самої команди:

  1. snmpget буде запитувати об'єкт sysDescr, який містить ім'я за замовчуванням об'єкта.
  2. Далі sedбуде виключено початковий вихід, який містить лише опитуваний OID та початок рядка.
  3. Остання команда, trбуде виключати будь-які подвійні лапки, зазвичай знайдені в запиті SNMP.

Останні дві команди призначені лише для форматування вихідних даних - якщо вони вам не потрібні, можливо, скористайтеся першою командою для отримання повного результату.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.