THM-nmap实时主机发现

作者:xiaowu 日期: 分类:xiaowu 浏览:784

协议

ARP

用于解析IP地址与MAC地址之间的对应关系。在计算机网络中,数据包传输需要知道目标设备的MAC地址,而ARP协议就是负责在给定IP地址的情况下,查找对应的MAC地址的机制。

当一台计算机需要知道另一台计算机的MAC地址时,它会发送一个ARP请求广播包到本地网络中的所有设备,询问目标IP地址对应的MAC地址。只有拥有该IP地址的计算机会回复一个ARP响应包,告诉请求者自己的MAC地址。这样,发起ARP请求的计算机就得到了目标设备的MAC地址,可以直接发送数据包给目标设备。

ICMP

用于在IP网络上进行错误报告、诊断和管理。它通常与IP协议(Internet Protocol,互联网协议)一起使用,属于TCP/IP协议族的一部分。

当你在网上冲浪时,遇到问题。ICMP就像是一种信使,专门负责告诉你发生了什么问题。如果你想知道网站是否在线,你可以发一个“你在吗?”的消息给它,如果网站收到了并回复了“在的”,那就说明它在线。这个消息和回复的过程就是通过ICMP来实现的。

TCP

TCP是面向连接的协议,通信双方在传输数据之前需要先建立连接,然后进行数据传输,最后关闭连接。这种连接导向的特性使得TCP适用于需要可靠性和顺序传输的应用,如网页浏览、文件传输等。

UDP

UDP是无连接的协议,通信双方之间不需要建立连接,可以直接发送数据包。这种特性使得UDP适用于实时性要求高、数据量小、容忍少量丢失的应用,如音频和视频传输、在线游戏等。

TCP适用于需要可靠传输和顺序传输的应用,而UDP适用于实时性要求高、数据量小、容忍少量丢失的应用。


扫描类型

  1. ARP扫描:此扫描使用ARP请求来发现活动主机

  2. ICMP 扫描:此扫描使用 ICMP 请求来识别活动主机

  3. TCP/ UDP ping 扫描:此扫描将数据包发送到 TCP 端口和UDP端口以确定活动主机

子网

arp扫描只能连接同一网段(即子网)的主机,无法跨网段。

枚举

你可以提供一个列表、范围或子网当做要扫描的目标。关于目标格式的例子有:

  • list(列表): MACHINE_IP scanme.nmap.org example.com 将扫描 3 个 IP 地址。

  • range(范围):10.11.12.15-20 将扫描 6 个 IP 地址:10.11.12.15、10.11.12.16、…和 10.11.12.20。

  • subnet(子网):MACHINE_IP/30 (30位子网掩码:255.255.255.252)将扫描 4 个 IP 地址。

nmap -sL -n 这个命令会列出指定范围内的所有 IP 地址,但不会对它们进行端口扫描,而且不会使用 DNS 解析

发现LIVE HOST

ICP/IP模型,从下到上,用到的协议发现实时主机

  • 来自链路层的 ARP协议

  • 来自网络层的 ICMP协议

  • 来自传输层的 TCP协议

  • 来自传输层的 UDP协议


答题

image.png

问题1

发送包含以下内容的数据包(computer1和computer3在同一个子网中):

  • From computer1

  • To computer3

  • Packet Type: “Ping Request”

根据通信过程,有下列步骤

ARP REQUEST:

Who has computer3 tell computer2: 计算机2发送一个ARP请求,询问谁拥有计算机3的MAC地址。

ARP RESPONSE:

Hey computer2, I am computer3: 计算机3回复ARP响应,告诉计算机2,“嘿,我就是计算机3”。

PING:

Sending Ping Request packet from computer2 to computer3: 计算机2向计算机3发送一个Ping请求数据包。

computer3 received ping request from computer2, sending ping response to computer2: 计算机3接收到了来自计算机2的Ping请求,它发送一个Ping响应给计算机2。

Sending Ping Response packet from computer3 to computer2: 计算机3向计算机2发送一个Ping响应数据包。

computer2 received ping response from computer3: 计算机2接收到了来自计算机3的Ping响应。

问题2

发送包含以下内容的数据包(computer2和computer5在不同子网中):

  • From computer2

  • To computer5

  • Packet Type: “Ping Request”

image.png

根据过程,有以下步骤

ARP REQUEST:

Who has computer3 tell computer2: 计算机2发送一个ARP请求,询问谁拥有计算机3的MAC地址。

ARP RESPONSE:

Hey computer2, I am computer3: 计算机3回复ARP响应,告诉计算机2,“嘿,我就是计算机3”。

PING:

Sending Ping Request packet from computer2 to computer3: 计算机2向计算机3发送一个Ping请求数据包。

computer3 received ping request from computer2, sending ping response to computer2: 计算机3接收到了来自计算机2的Ping请求,它发送一个Ping响应给计算机2。

Sending Ping Response packet from computer3 to computer2: 计算机3向计算机2发送一个Ping响应数据包。

computer2 received ping response from computer3: 计算机2接收到了来自计算机3的Ping响应。

使用ARP进行主机发现

Nmap 遵循以下方法来发现活动主机:

  • 当特权用户尝试扫描本地网络(以太网)上的目标时,Nmap会使用 ARP 请求,特权用户是 root 或属于 sudoers(可以运行 sudo 的用户)。

  • 当特权用户尝试扫描本地网络之外的目标时,Nmap 会使用 ICMP echo请求、发送到端口80的TCP ACK(Acknowledge)、发送到端口443的TCP SYN(Synchronize) 和 ICMP 时间戳请求。

  • 当非特权用户尝试扫描本地网络之外的目标时,Nmap会通过向端口 80 和 443 发送 SYN 数据包来尝试进行TCP 3 次握手操作。

nmap -sn:探测在线主机,不进行端口扫描

nmap -PR -sn:使用ARP扫描本地在线主机

原理:操作系统会发送一个 ARP 查询,有主机回复 ARP 查询即代表该主机已启动

使用ICMP进行主机发现

ICMP时间戳:请求目标主机当前时间

地址掩码查询:用于确定目标主机的子网掩码

ICMP echo扫描:nmap -pe -sn

原理:将 ICMP echo数据包发送到子网上的每个 IP 地址

ICMP时间戳查询:nmap -pp -sn

ICMP地址掩码查询:nmap -pm -sn

如果一种类型的数据包被阻塞,我们可以选择另一种类型的数据包来发现目标网络和服务。

使用TCP和UDP进行主机发现

SYN:建立连接数据包

ACK:回复数据包

RST:中止连接

下面是TCP请求规则

TCP SYN PING:nmap -PS(port) -sn

原理:发送一个将 SYN(Synchronize)标志设置为 TCP 端口(默认为 80)的数据包,然后等待响应。一个开放的端口应该回复一个 SYN/ACK(Acknowledge);一个关闭的端口将导致 RST(Reset)。

特权用户(root 和 sudoers)可以发送 TCP SYN 数据包,即使端口打开也不需要完成 TCP 3 次握手,如下图所示。 如果端口打开,非特权用户别无选择,只能完成 3 次握手 。

TCP ACK PING:nmap -PA(port) -sn


你必须以特权用户身份运行 Nmap 才能完成此操作,如果你以非特权用户身份尝试,Nmap 将会尝试 进行TCP 3 次握手操作 。

UDP PING:nmap -PU(port) -sn

与 TCP SYN ping 不同,将 UDP 数据包发送到开放端口预计不会导致任何回复;但是,如果我们向一个关闭的 UDP 端口发送一个 UDP 数据包,我们可以期望得到一个 ICMP 端口不可达的数据包,这表明目标系统已启动且可用 。


Masscan

Masscan扫描器也会使用和nmap类似的方法来发现可用系统,但是,为了快速完成网络扫描,Masscan 生成数据包的速率非常激进。Masscan的语法和nmap非常相似:-p 后面可以跟一个端口号、列表或范围 。以下是一些示例:

  • masscan MACHINE_IP/24 -p443

  • masscan MACHINE_IP/24 -p80,443

  • masscan MACHINE_IP/24 -p22-25

  • masscan MACHINE_IP/24 ‐‐top-ports 100

Masscan的安装:apt install masscan

使用反向DNS解析

反向 DNS 查询:通过 IP 地址查找对应域名

跳过反向DNS:nmap -n

强行反向DNS查询:nmap -R

指定dns服务器:nmap --dns-serever

总结

扫描类型示例命令
ARP扫描sudo nmap -PR -sn MACHINE_IP/24
ICMP 回显扫描sudo nmap -PE -sn MACHINE_IP/24
ICMP 时间戳扫描sudo nmap -PP -sn MACHINE_IP/24
ICMP 地址掩码扫描sudo nmap -PM -sn MACHINE_IP/24
TCP SYN Ping 扫描sudo nmap -PS22,80,443 -sn MACHINE_IP/30
TCP ACK Ping 扫描sudo nmap -PA22,80,443 -sn MACHINE_IP/30
UDP Ping 扫描sudo nmap -PU53,161,162 -sn MACHINE_IP/30

Nmap默认对活动主机进行端口扫描,如果您只对主机发现感兴趣,而不对端口扫描感兴趣,请记得添加-sn

选项目的
-n无需DNS查找
-R反向DNS查找所有主机
-sn仅主机发现


关键词:

网友评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。