6

我目前正在开发一个扫描我的网络并发现网络上的计算机和设备的程序。我使用各种操作在我发现的设备上查找数据,但想将网络设备与计算机区分开来。我想知道是否有人知道我该怎么做?

我看了看 SNMP,并尝试连接到我的网络打印机、路由器和调制解调器。但我似乎只能连接到打印机,路由器或调制解调器都没有响应。

是否有另一种方法来识别 IP 地址属于哪种设备?

4

4 回答 4

9

使用诸如nmap之类的命令行工具,您可以对设备进行指纹识别,从而为您提供各种信息。

也许您可以通过 c# 调用 nmap 并读回响应。

另一种选择是查找给定 MAC 地址的网络芯片供应商。但我不确定这会给你多少细节。

这是来自 nmap 站点的示例

# nmap -O -v scanme.nmap.org

Starting Nmap ( http://nmap.org )
Nmap scan report for scanme.nmap.org (64.13.134.52)
Not shown: 994 filtered ports
PORT    STATE  SERVICE
22/tcp  open   ssh
25/tcp  closed smtp
53/tcp  open   domain
70/tcp  closed gopher
80/tcp  open   http
113/tcp closed auth
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.20-1 (Fedora Core 5)
Uptime guess: 11.433 days (since Thu Sep 18 13:13:01 2008)
TCP Sequence Prediction: Difficulty=204 (Good luck!)
IP ID Sequence Generation: All zeros

Nmap done: 1 IP address (1 host up) scanned in 6.21 seconds
           Raw packets sent: 2021 (90.526KB) | Rcvd: 23 (1326B)
于 2011-06-23T13:51:02.067 回答
8

首先,这个答案偏向于以太网。这些想法也可以作为其他场景的提示。

有很多方法可以做到这一点,例如:

  • 扫描
  • 有针对性的发现
  • 被动流量监控

扫描

例如,可以使用 nmap。

亲:

  1. 可以发现未知的设备和服务。被懒惰的系统管理员遗忘或由不受信任的用户安装。
  2. 可以成为发现服务和安全审计的有用工具。
  3. 对于新手来说,这听起来是最好的方法:从头开始,全部找到。坏消息:阅读缺点。

缺点:

  1. 这是非常低效的。如果你从头开始——你对局域网一无所知——并且你想找到每一个可能的服务,你必须为每一个可能的主机扫描几乎所有的 tcp 和 udp 端口​​。
  2. 结果并非 100% 负担得起:硬件或软件防火墙;等等......下一次运行可能会导致完全不同的结果。
  3. 结果不是简单的 i_got_it / null,而是模糊的:您需要专家来评估结果。
  4. 有时您必须在您的电脑上拥有管理员帐户才能运行此扫描。
  5. 一些 IDS 可以将此活动记录为不良活动。

有针对性的发现

如果您的目标是映射您的网络、官方服务,您可以考虑他们的官方发现功能。例如 CDP、SSDP、srvloc、snmp get broadcast 等……你必须知道你正在探测什么服务。

临:

  1. 这是最有效的方式,无论是最大速度还是最小网络带宽。
  2. 结果是可靠的:下一次运行必须返回相同的结果(显然,如果服务和网络保持活动状态)。
  3. 这是检查服务可用性和考虑 SLA 的方法。
  4. 您不需要专家:例如,如果设备回答 snmp get SysDescr,您就知道您的数据。你会得到确切的答案,否则你会错过它。

缺点:

  1. 你必须知道你正在探索什么服务。
  2. 您不能使用它来确保找到设备/服务。这既不是安全审计也不是发现工具。例如:我把我的http服务器监听端口改为81,你怎么找到我的?

被动流量监控

曾几何时,您会发现以太网主机通过铜线 (CAT3 / CAT5) 连接到集线器。您可以在任何这些主机上运行一个程序来捕获所有流量,将以太网卡置于混杂模式,以便 NIC 将所有数据包传递给操作系统,以及 MAC 目标与 MAC 地址不同的数据包网卡。

您的程序可以分析这些原始数据,并解析其中的协议和数据包。

现在你使用以太网交换机,而不是集线器。您的 pc 网卡在混杂模式下不会接收网络上的所有流量,因为交换机只会将您的主机或所有人的数据包转发给您(广播和 - 如果已注册 - 多播)。

您必须使用管理型交换机,并将一个端口配置为转发器或监控端口,以链接监控主机。

临:

  1. 这是被动监控——如果做得好的话。这对于特定评估很有用,您不能在被测网络上发送任何数据包,并且您尊重强大的 SLA。
  2. 要收集 nw 流量,您不必知道协议和服务配置。例如,您可以从主机中删除 tcp/ip 堆栈,留下以太网卡的驱动程序,然后收集流量。
  3. 使用带监控端口的托管交换机,您不必将 NIC 置于混杂模式/调整您的 tcp/ip 堆栈。
  4. libpcap / winpcap 是捕获数据包的事实标准,并且可以正常工作。在开发自己的应用程序之前,您可以使用一些 GUI 前端,例如 Analyzer 或 Wireshark。
  5. 它也禁止成为发现服务和安全审计的有用工具。

缺点:

  1. 您是否必须确保不在被测网络上发送数据包?如果您有集线器,请使用带中继器端口的托管交换机。中继器端口只能接收网络流量。
  2. 要捕获高吞吐量的数据,例如在 1 Gbit 上,您必须调整操作系统配置,否则 CPU 会达到满负荷,您仍然会丢失数据包。忘记了这个东西的ms windows。
  3. 显然,您只看到实时流量,没有看到未传输的服务。
  4. 请参阅扫描的缺点 3、4 。这是近看电线上的位,它就像电子工程师的示波器。您捕获所有数据,稍后您需要专家^2 来评估它们。是的,稍后,因为详细分析错误和故障非常耗时。

这是傻瓜介绍的简单发现。发现工具可以混合两种方式在网络上查找设备和服务。

例如,HP JetAdmin 发现使用不同的方法仅查找 HP 网络打印机和扫描仪,而不是您 LAN 上的所有设备。

于 2011-11-13T08:19:30.320 回答
0

我的话可能看起来很简单。但是大多数实现 SNMP 的设备都实现了 MIB-II。正如您在此处所见,“系统”中存在一个名为“sysDescr”的条目,您大部分时间都可以使用它来识别设备。

在此处输入图像描述

于 2011-06-27T14:07:00.033 回答
0

一般来说,您无法从设备的 IP 中找到太多关于设备的信息。使用主机的 MAC 地址,您可以确定网络适配器的制造商。MAC 地址的前半部分由制造商分配。

您可以尝试使用nmap

Nmap(“Network Mapper”)是用于网络探索或安全审计的免费开源实用程序。它旨在快速扫描大型网络,尽管它对单个主机运行良好。Nmap 以新颖的方式使用原始 IP 数据包来确定网络上可用的主机、这些主机提供的服务(应用程序名称和版本)、它们运行的​​操作系统(和操作系统版本)、数据包过滤器/防火墙的类型正在使用中,以及其他数十种特性。Nmap 在大多数类型的计算机上运行,​​并且提供控制台和图形版本。Nmap 是免费软件,根据 GNU GPL 条款提供完整的源代码。

于 2011-06-23T13:53:50.270 回答