Làm cách nào để tìm thấy những máy khác được kết nối với mạng cục bộ


27

Làm cách nào tôi có thể xem danh sách tất cả các máy có sẵn trên mạng LAN Tôi là một phần của.

Câu trả lời:


28

Bao nhiêu bạn biết về mạng LAN trong câu hỏi? Tôi cho rằng bạn không biết bất cứ điều gì chỉ cần cắm cáp hoặc kết nối với wifi.

  1. Hãy thử yêu cầu một địa chỉ IP với DHCP. Bạn có nhận được một? Sau đó, bạn đã biết một số điều: IP gateway, IP máy chủ DHCP, mặt nạ mạng con và có thể cả máy chủ DNS.
  2. Nếu bạn không nhận được thì không có máy chủ DHCP hoặc mạng được lọc MAC.
  3. Dù bằng cách nào, hãy bắt đầu chụp các gói với wireshark . Nếu bạn đang kết nối không dây hoặc kết nối với một trung tâm, thật dễ dàng. Nếu bạn được kết nối với một công tắc, bạn có thể thử tràn ngập MAC để chuyển nó về "chế độ trung tâm" nhưng một công tắc thông minh hơn sẽ vô hiệu hóa cổng của bạn. Nếu bạn muốn thử nó, ettercap có thể làm điều này cho bạn. (Hoặc macchanger và tập lệnh shell :))
  4. Nhìn vào các gói bạn có thể tìm thấy địa chỉ IP, nhưng quan trọng nhất, bạn có thể đoán các tham số mạng. Nếu bạn nghi ngờ bộ lọc MAC thay đổi địa chỉ MAC của bạn thành một trong những địa chỉ được quan sát sau khi nó rời khỏi (không gửi gì trong một thời gian).
  5. Khi bạn có một ý tưởng tốt về cấu hình mạng (netmask, gateway, v.v.), hãy sử dụng nmap để quét. Nmap có thể làm được nhiều hơn so với -sPtrong trường hợp một số máy chủ không phản hồi ping (xem tài liệu hướng dẫn ). Điều quan trọng là nmap chỉ hoạt động nếu cài đặt và tuyến mạng của bạn là chính xác.
  6. Bạn thậm chí có thể tìm thấy nhiều máy chủ hơn với chức năng quét nhàn rỗi của nmap .

Một số (hầu hết?) Quản trị viên hệ thống không thích một vài phương pháp trên, vì vậy hãy đảm bảo rằng nó được cho phép (ví dụ: đó là mạng của bạn). Cũng lưu ý rằng tường lửa của riêng bạn có thể ngăn một số phương thức này (thậm chí nhận IP bằng DHCP) vì vậy hãy kiểm tra quy tắc của bạn trước.

Bản đồ

Dưới đây là cách thực hiện khám phá máy chủ cơ bản với nmap . Như tôi đã nói cấu hình mạng của bạn phải chính xác khi bạn thử điều này. Giả sử bạn là 192.168.0.50 bạn đang ở trên mạng con / 24. Địa chỉ MAC của bạn là một cái gì đó được phép kết nối, v.v. Tôi muốn có wireshark chạy để xem những gì tôi đang làm.

Đầu tiên tôi muốn thử quét danh sách, chỉ thử giải quyết các bản ghi PTR trong DNS cho các địa chỉ IP được chỉ định. Nó không gửi gì đến máy chủ nên không có gì đảm bảo nó thực sự được kết nối hoặc bật nhưng có một cơ hội tốt. Chế độ này rõ ràng cần một máy chủ DNS sẵn sàng nói chuyện với bạn.

nmap -vvv -sn -sL 192.168.1.0/16

Điều này có thể không tìm thấy gì hoặc nó có thể cho bạn biết rằng mỗi IP đều tăng.

Sau đó tôi thường đi quét ARP. Nó sẽ gửi các yêu cầu ARP (bạn thấy chúng như "Who has <target IP>? Tell <your IP>"trong wireshark). Điều này là khá đáng tin cậy vì bộ lọc noone hoặc giả mạo ARP. Nhược điểm chính là nó chỉ hoạt động trên mạng con của bạn.

nmap -vvv -sn -PR 192.168.1.0/24

Nếu bạn muốn quét một cái gì đó đằng sau bộ định tuyến hoặc tường lửa thì hãy sử dụng quét SYN và ACK. SYN bắt đầu kết nối TCP và bạn sẽ nhận được phản hồi RST hoặc SYNACK. Dù bằng cách nào thì chủ nhà lên. Bạn có thể bị cấm giao tiếp ICMP hoặc đại loại như thế nếu có tường lửa. Hầu hết thời gian nếu tường lửa lọc các gói của bạn, bạn sẽ không nhận được gì. Một số loại tường lửa chỉ lọc các gói TCP SYN và cho phép mọi gói TCP khác đi qua. Đây là lý do tại sao quét ACK là hữu ích. Bạn sẽ nhận được RST trong phản hồi nếu máy chủ lưu trữ. Vì bạn không biết tường lửa là gì, hãy thử cả hai.

nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24

Sau đó, tất nhiên bạn có thể sử dụng quét dựa trên ICMP với -PE -PP -PM.

Một phương pháp thú vị khác là -PO với số giao thức không tồn tại. Thường thì chỉ có TCP và UDP được xem xét trên tường lửa và không ai kiểm tra xem điều gì xảy ra khi bạn thử một số giao thức không xác định. Bạn nhận được một giao thức ICMP không thể truy cập được nếu máy chủ lưu trữ.

nmap -vvv -sn -PO160 10.1.2.0/24

Bạn cũng có thể yêu cầu nmap bỏ qua khám phá máy chủ (-Pn) và thực hiện một portscan trên mỗi máy chủ. Điều này rất chậm nhưng bạn có thể tìm thấy các máy chủ khác mà phát hiện máy chủ đã bỏ lỡ vì một số lý do.


Đây có vẻ là một câu trả lời tuyệt vời, và bây giờ tôi sẽ phải yêu cầu bạn cho tôi ăn bằng cách đưa vào những lệnh nào để chạy cho mỗi nhiệm vụ. Tôi đặc biệt quan tâm đến cách sử dụng Nmap để trả lời câu hỏi của tôi (đừng bắt tôi đọc tài liệu :)
tshepang

5
@Tshepang: Tôi đã thêm một số ví dụ nmap nhưng tôi hy vọng bạn xem xét việc đọc tài liệu. Nmap là một trong những công cụ mạng lớn nhất và tài liệu được viết tốt, nó thực sự đáng giá thời gian.
stribika

9

Tôi thích ip neighlệnh này, đi kèm với IpRoute2.

ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE

Tuy nhiên, tôi nghĩ rằng nó chỉ hoạt động với arpcác nút có thể.


Làm gì chính xác? Fr tôi, nó chỉ liệt kê một vài mục.
tshepang

Tôi nghĩ rằng nó chỉ gửi một arp đến IP phát sóng, và liệt kê những gì đáp ứng. Thành thật mà nói tôi không biết nó hoạt động như thế nào .
xenoterracide

1
man ipcho thấy những gì neigh -or- hàng xóm làm.
slm

9

Cài đặt nmap và chạy nmap -sP <mynetwork>.


Tôi nhận được Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds.
tshepang

1
@Tshepang - Tôi đã làm nmap -sP 192.168.0.*và nó đã trả về một danh sách đầu ra của mẫu:Nmap scan report for justin-desktop2 (192.168.0.61) Host is up (0.00056s latency).
Justin Ethier

@justin Tôi đang sử dụng phiên bản 5,00 và hiện tại nó đang hiển thị một số máy trên mạng của tôi, với biểu mẫu Host 192.168.2.23 is up (0.0088s latency)..
tshepang

3
Tôi nên thay thế <mynetwork> bằng gì?
tshepang

@tshepang Số mạng, với phần máy chủ bằng 0 và mặt nạ CIDR. Như thế này: 192.169.1.0/24
Keith

0

Đối với cả hai câu trả lời: KHÔNG cần nmap / KHÔNG cần sudo .

trả lời 1

$ arp

Trả lời 2

Xây dựng trên xenoterracides trả lời với ip neighhosts:

#!/usr/bin/env python

"""List all hosts with their IP adress of the current network."""

import os

out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
    ip = line.split(' ')[0]
    h = os.popen('host {}'.format(ip)).read()
    hostname = h.split(' ')[-1]
    print("{:>3}: {} ({})".format(i, hostname.strip(), ip))

Tải xuống qua

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py
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.