Làm cách nào để biết máy từ xa đang sử dụng Windows hoặc Linux?


10

Có cách nào để chạy lệnh (như tin nhắn ICMP hoặc giao thức khác), nhận phản hồi từ máy từ xa (không phải trên mạng cục bộ riêng của tôi) và phân tích tin nhắn để tìm một số bằng chứng cho thấy máy này đang chạy Windows hoặc một hệ điều hành Linux?


Bạn dự định làm gì với thông tin này? Nó có thể không đáng tin cậy ...
pjc50

Thật ra tôi đã bị giam giữ tuần trước và anh ta đang sử dụng một hệ thống ngăn không cho bất kỳ ai sử dụng hệ thống Windows trên mạng của anh ta. Nó được tạo bởi một máy chủ từ xa không phải là cùng một mạng, tôi rất lạ vì tôi không biết nó được tạo ra như thế nào.
Diogo

Có nhiều cách bạn có thể làm điều đó. Ví dụ: nếu bạn đang sử dụng DHCP để cung cấp địa chỉ mạng, yêu cầu DHCP bao gồm thông tin về HĐH máy khách.
Harry Johnston

Câu trả lời:


16

Nó không dứt khoát nhưng nmap sẽ thực hiện điều này bằng lệnh nmap -O -v( xem tài liệu để biết thêm chi tiết) Nếu bạn đang chạy windows hoặc muốn có gui, hãy xem zenmap


1
Xin lưu ý bạn - một số nhà cung cấp sẽ phát hiện quét cổng bằng cách sử dụng nmap.
Jeroen Baert

2
@JeroenBaert namelly AWS đã gửi cho tôi một email đáng sợ
Jonathan dos Santos

10

Nếu bạn đang sử dụng mạng IPv4, chỉ cần sử dụng ping. Nếu phản hồi có chỉ số là 128, thì mục tiêu có thể là chạy Windows. Nếu TTL là 64, mục tiêu có thể đang chạy một số biến thể của Unix.


Bạn có ý nghĩa gì bởi prop prop?
Dchris

Thế còn TTL = 255 thì sao? Tôi nghĩ là Unix ..
Dchris

1
Tôi không nghĩ rằng tôi đã từng nhìn thấy một TTL là 255.
Harry Johnston

Giải thích cho điều này là gì / Tại sao lại như vậy.
Hervian

1
@Hervian, nếu bạn muốn nói tại sao những TTL cụ thể đó được chọn, bạn phải hỏi các lập trình viên ban đầu. Nếu bạn muốn nói tại sao hầu hết hoặc tất cả các biến thể UNIX đều giống nhau và / hoặc tại sao TTL giống nhau cho mọi phiên bản Windows, thì đó sẽ chỉ là quán tính - trong trường hợp không có bất kỳ lý do cụ thể nào để thay đổi điều gì đó, thì nó có xu hướng giữ nguyên tương tự.
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
          )
       )
    )
)

Điều này có thể sửa đổi để làm việc với một loạt các IP? Nếu tôi muốn chạy cái này để tìm tất cả các ttl cho toàn bộ ngăn xếp máy chủ của tôi.
Eddie Studer

1

Một cách để đi là sử dụng NMap . Từ phản hồi, nó có thể đoán hệ điều hành từ xa.


1

Gói: xprobe 'OR' xprobe2
Mô tả: Nhận dạng hệ điều hành từ xa Xprobe2 cho phép bạn xác định hệ điều hành nào đang chạy trên máy chủ từ xa. Nó sẽ gửi một số gói đến một máy chủ lưu trữ và phân tích các câu trả lời được trả về. Chức năng của Xprobe2 có thể so sánh với tính năng lấy dấu vân tay của hệ điều hành trong nmap.

Ví dụ:
$ sudo apt-get install xprobe
$ sudo xprobe2 -T21-23,80,53,110 ###. ###. ###. ###

Tham khảo:
http://www.sys-security.com/html/projects/X.html
http://sourceforge.net/projects/xprobe/


0

Bài đăng cũ nhưng tôi nghĩ tôi cũng sẽ thêm vào điều này, nếu thiết bị được bật SNMP, bạn cũng có thể truy vấn sysDescr sẽ cho bạn biết hệ điều hành mà nó đang sử dụng.

Tải xuống trình duyệt MIB, một trình duyệt tốt mà tôi sử dụng có tại đây: http://www.ireasoning.com/doadmibbrowserfree.php . Về cơ bản, bạn cung cấp cho nó địa chỉ IP của thiết bị và thực hiện thao tác đi bộ.


Bạn có thể mở rộng câu trả lời của bạn để giải thích làm thế nào để thực hiện điều đó? Cảm ơn.
fixer1234

Bạn có thể tải xuống trình duyệt MIB, một trình duyệt tốt mà tôi sử dụng có tại đây ireasoning.com/doadmibbrowserfree.php . Về cơ bản, bạn cung cấp cho nó địa chỉ IP của thiết bị và thực hiện thao tác đi bộ
Johnathon64

0

Theo đề xuất của Johnathon64, bạn có thể sử dụng SNMP để truy vấn trực tiếp trên máy chủ - giả sử chính máy chủ từ xa được cấu hình để sử dụng SNMP. Bạn có thể khởi chạy một truy vấn dòng lệnh như câu hỏi dưới đây để thực hiện:

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

Giải thích về lệnh:

  1. snmpget sẽ truy vấn đối tượng sysDescr, chứa tên mặc định của đối tượng.
  2. Sau đây sedsẽ loại trừ đầu ra bắt đầu, chỉ chứa OID được thăm dò và đầu chuỗi.
  3. Lệnh cuối cùng tr, sẽ loại trừ mọi dấu ngoặc kép, thường được tìm thấy trong truy vấn SNMP.

Hai lệnh cuối chỉ để định dạng đầu ra - nếu bạn không cần chúng, có thể sử dụng lệnh đầu tiên để trích xuất đầu ra hoàn chỉnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.