Hacker Geek OS Fingerprinting với kích thước cửa sổ TTL và TCP
Bạn có biết rằng bạn có thể tìm ra hệ điều hành nào mà thiết bị nối mạng đang chạy chỉ bằng cách nhìn vào cách thức giao tiếp trên mạng không? Hãy xem cách chúng tôi có thể khám phá hệ điều hành nào mà thiết bị của chúng tôi đang chạy.
Tại sao bạn lại làm điều này?
Xác định hệ điều hành nào mà 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 nhìn vào 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 đô la một tháng để bạn dùng thử dịch vụ của họ. Bằng cách sử dụng hệ điều hành vân tay, bạn sẽ sớm phát hiện ra rằng họ có bộ định tuyến rác và cung cấp 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, huh?
Một cách sử dụng khác cho điều này, mặc dù không có đạo đức, là thực tế là các lỗ hổng bảo mật là đặc thù của hệ điều hành. Ví dụ: bạn thực hiện quét cổng và tìm thấy cổng 53 mở và máy đang chạy phiên bản Bind lỗi thời và dễ bị tấn công, bạn có cơ hội SINGLE để khai thác lỗ hổng bảo mật vì một lần thử thất bại sẽ làm sập daemon.
Hệ điều hành vân tay hoạt động như thế nào?
Khi thực hiện phân tích thụ động lưu lượng truy cập hiện tại hoặc thậm chí nhìn vào các gói chụp cũ, một trong những cách dễ nhất, hiệu quả, thực hiện OSprintprint chỉ 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 đầu tiên 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 (Máy chủ 2008) | 128 | 8192 |
iOS 12.4 (Bộ định tuyến của Cisco) | 255 | 4128 |
Lý do chính khiến các hệ điều hành có các giá trị khác nhau là do thực tế là RFC cho TCP / IP không quy định các giá trị mặc định. Điều quan trọng khác 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 qua mạng hệ điều hành của thiết bị gửi đặt TTL thành TTL mặc định cho HĐH đó, nhưng khi gói đi qua các bộ định tuyến, thì TTL bị hạ xuống 1. Do đó, nếu bạn thấy chỉ số TTL là 117 thì đây có thể là một gói đượ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ó gói chụp, hãy đảm bảo bạn đã cài đặt Wireshark, sau đó điều hướng đến:
C: \ Tệp chương trình \
Bây giờ giữ nút shift và nhấp chuột phải vào thư mục wireshark và chọn mở cửa sổ lệnh ở đây từ menu ngữ cảnh
Bây giờ gõ:
tshark -r "C: \ Users \ Taylor Gibb \ Desktop \ blah.pcap" "tcp.flags.syn eq 1" -T lĩnh vực -e ip.src -e ip.ttl -e tcp.window_size
Đảm bảo thay thế C C: \ Users \ Taylor Gibb \ Desktop \ blah.pcap bằng đường dẫn tuyệt đối để chụp gói tin của bạn. Khi bạn nhấn enter, bạn sẽ được hiển thị tất cả các gói SYN từ bản chụp của bạn một định dạng bảng dễ đọc hơn
Bây giờ đây là một gói chụp ngẫu nhiên mà tôi đã tạo cho tôi khi kết nối với Trang web How-To Geek, trong số tất cả các trò chuyện khác mà Windows đang làm tôi có thể nói với bạn hai điều chắc chắn:
- Mạng cục 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à một địa chỉ 74.125.233.24 với chỉ số 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ĐH nào có chỉ số TTL là 44, tuy nhiên, nó nói rằng Linux là máy chủ của Google chạy có TCP Window Size 5720. Sau khi thực hiện tìm kiếm nhanh trên địa chỉ IP, bạn sẽ thấy đó thực tế là một Máy chủ Google.
Bạn sử dụng tshark.exe để làm gì khác, hãy cho chúng tôi biết trong các nhận xét.