Tại sao bạn sẽ làm điều này?
Xác định những gì hệ điều hành máy hoặc thiết bị đang chạy có thể hữu ích vì nhiều lý do. Trước tiên, hãy xem xét một viễn cảnh hàng ngày, hãy tưởng tượng bạn muốn chuyển sang một ISP mới cung cấp Internet chưa được khai thác với giá $ 50 một tháng để bạn dùng thử dịch vụ của họ. Bằng cách sử dụng dấu vân tay hệ điều hành, bạn sẽ sớm phát hiện ra rằng họ có các bộ định tuyến rác và cung cấp một dịch vụ PPPoE được cung cấp trên một loạt các máy Windows Server 2003. Nghe có vẻ không tốt như vậy nữa hả?
Một cách sử dụng khác cho điều này, mặc dù không có đạo đức như vậy, thực tế là các lỗ hổng bảo mật là hệ điều hành cụ thể. Ví dụ, bạn thực hiện quét cổng và tìm cổng 53 mở và máy đang chạy phiên bản Bind lỗi thời và dễ bị tổn thương, bạn có cơ hội SINGLE để khai thác lỗ hổng bảo mật vì nỗ lực thất bại sẽ làm hỏng trình nền.
Hoạt động vân tay của OS hoạt động như thế nào?
Khi thực hiện phân tích thụ động của lưu lượng hiện tại hoặc thậm chí nhìn vào các gói tin cũ, một trong những cách dễ nhất, hiệu quả nhất, cách thực hiện Fingerprinting OS là đơn giản bằng cách nhìn vào kích thước cửa sổ TCP và Time To Live (TTL) trong tiêu đề IP của gói trong phiên TCP.
Dưới đây là các giá trị cho các hệ điều hành phổ biến hơn:
Hệ điều hành | Thời gian để sống | Kích thước cửa sổ TCP |
Linux (hạt nhân 2.4 và 2.6) | 64 | 5840 |
Google Linux | 64 | 5720 |
FreeBSD | 64 | 65535 |
Windows XP | 128 | 65535 |
Windows Vista và 7 (Server 2008) | 128 | 8192 |
iOS 12.4 (Bộ định tuyến của Cisco) | 255 | 4128 |
Lý do chính khiến hệ điều hành có giá trị khác nhau là do RFC dành cho TCP / IP không quy định giá trị mặc định. Điều quan trọng cần nhớ là giá trị TTL sẽ không luôn khớp với một trong bảng, ngay cả khi thiết bị của bạn đang chạy một trong các hệ điều hành được liệt kê, bạn sẽ thấy khi bạn gửi gói IP trên mạng hệ điều hành của thiết bị gửi đặt TTL thành TTL mặc định cho hệ điều hành đó, nhưng khi gói đi qua các bộ định tuyến, TTL được hạ xuống 1. Do đó, nếu bạn thấy TTL là 117, thì gói này có thể được gửi với TTL là 128 và đã vượt qua 11 bộ định tuyến trước khi bị bắt.
Sử dụng tshark.exe là cách dễ nhất để xem các giá trị vì vậy khi bạn đã có một gói chụp, hãy chắc chắn rằng bạn đã cài đặt Wireshark, sau đó điều hướng đến:
C:Program Files
Bây giờ giữ nút shift và nhấp chuột phải vào thư mục wireshark và chọn cửa sổ lệnh mở ở đây từ trình đơn ngữ cảnh
tshark -r 'C:UsersTaylor GibbDesktoplah.pcap' 'tcp.flags.syn eq 1' -T fields -e ip.src -e ip.ttl -e tcp.window_size
Hãy chắc chắn để thay thế "C: Users Taylor Gibb Desktop blah.pcap" với đường dẫn tuyệt đối để chụp gói của bạn. Một khi bạn nhấn Enter bạn sẽ được hiển thị tất cả các gói SYN từ capture của bạn một cách dễ dàng hơn để đọc định dạng bảng
- Mạng nội bộ của tôi là 192.168.0.0/24
- Tôi đang sử dụng hộp Windows 7
Nếu bạn nhìn vào dòng đầu tiên của bảng, bạn sẽ thấy tôi không nói dối, địa chỉ IP của tôi là 192.168.0.84 TTL của tôi là 128 và Kích thước cửa sổ TCP của tôi là 8192, phù hợp với các giá trị cho Windows 7.
Điều tiếp theo tôi thấy là địa chỉ 74.125.233.24 với TTL là 44 và Kích thước cửa sổ TCP là 5720, nếu tôi nhìn vào bảng của mình thì không có hệ điều hành nào có TTL là 44, tuy nhiên nó cho rằng Linux là máy chủ của Google chạy có kích thước cửa sổ TCP 5720. Sau khi thực hiện tìm kiếm trên web nhanh chóng của địa chỉ IP, bạn sẽ thấy thực tế đó là một máy chủ Google.