您的当前位置:首页正文

【渗透-主机发现】从0到1,结合工具,入门渗透中的主机发现技术

2024-11-27 来源:个人技术集锦

要实现一次成功的渗透操作,先要有一些预动作,例如:主机发现、信息收集、漏洞扫描等。主机发现的根本目的就是找到你要进行渗透操作的目标,其中,可以有很多思想方法可以借鉴,有很多工具可以利用。


Table of Contents


主机发现方式(扫描方式):

  • 主动扫描:主动发送一些数据包进行扫描,以找到网络中活动的主机。例如,主动发送一个ARP请求包,等待目标主机的响应。有响应则说明该机器存活,无响应则说明该机器没存活。
  • 被动扫描:长期监听广播包,来发现某一网络中的活动主机。

PS:为了能对下文所述进行实操,建议搭建靶机环境,如Metasploitable2-Linux、VM中安装不同版本的Windows系统,因为网络上对于这些的文章教程太多了,我也不打算讲述这些。另外,以下的很多操作目标是Metasploitable2-Linux。


基于ARP协议的主机发现

nmap实现ARP协议的主机发现

nmap -sn -PR 10.253.6.0/24

 

Netdiscover(是一个主动/被动的ARP侦查工具):

  • -r:指定IP范围
  • -i:指定扫描的接口

 

arp-scan(ARP扫描工具):

  1. 可以单一扫描,也可以进行批量扫描(CIDR、地址范围、列表文件的方式制定);
  2. 支持定制ARP数据包;
  3. 支持自动解析MAC,返回厂商;

语法:arp-scan <target>

 

arping(基于ARP的ping工具,在局域网内向其他主机发送ARP指令):

语法:arping -c 数据包数量 <target>


基于ICMP协议的主机发现

ICMP(Internet Control Message Protocol)

  1. 因特网控制报文协议,工作在OSI的网络层,向数据通信中的源主机报告目标主机是否可达等信息。
  2. 其核心作用就是让用户能够检测网络的连续状态,也是“错误侦测与回报实施机制”。
  3. 通过ICMP ping扫描,可以发现目标主机是否存活。
  4. 用于在IP主机和路由器之间传递控制消息。控制消息值“网络通不通,主机是否可达,路由是否可用等网络本身的消息”。

 

 

ping(通用于UNIX,Linux,Windows)

语法格式:ping <target>

例:ping hackyle.net

 

nmap(基于ICMP协议)

  1. nmap -PE <target> (-PE:表示发送一个ICMP echo,timestamp和netmask请求)
  2. nmap -PP <target>  (-PP:发送ICMP时间戳扫描存活主机)
  3. nmap -PM <target>  (-PM:试图用备选的ICMP登记ping指定的主机,这种类型的ping可以绕过配置有封锁标准ICMP请求策略的防火墙)


基于TCP协议的主机发现

理解TCP3次握手建立连接:

  1. 发送方:你听得到吗(SYN)?
  2. 接收方:我听得到(ACK),你能听得到我吗(SYN)?
  3. 发送方:我听得到(ACK)。
  4. 此时双方都知道彼此具备收发数据的能力!

TCP-SYN扫描(又叫隐蔽扫描或半打开扫描)

原理:向目标主机的指定端口发送SYN数据包。如果源主机收到RST数据包,则说明端口是关闭的;如果源主机收到SYN+ACK数据包,则说明目标端口处理监听状态。

特性:

  1. 由于源主机已经获取了目标主机的端口状态信息,并不需要建立连接,所以传送一个RST数据包给目标主机,从而停止了正常了三次握手连接。
  2. 在SYN扫描中,由于客户端与服务端并没有形成3次握手,所有没有建立一个正常的TCP连接,因此不会被防火墙和日志所记录,也即不会在目标主机上留下任何痕迹。

 

语法:

  1. nmap -PS <target>  (Nmap默认使用的这种方式来扫描,基于TCP ACK和ICMP Echo请求来判断主机是否响应)
  2. nmap -sS <target> (-s:即scan,告诉nmap要运行那种类型的扫描,-S:即SYN,表示要执行的TCP SYN类型的扫描)

 

使用这两种方式扫描Metasploitable2-Linux漏洞主机:

TCP-ACK扫描

原理:

  1. 向目标主机的一个端口发送一个只有ACK标志的TCP数据包,无论目标主机的该端口是否开启,都会返回一个相应的RST数据包,然后通过RST包中的TTL,来判断目标主机的端口是否开启。
  2. 其中TTL<64表示端口开启,TTL>64时表示端口关闭。

 

语法:

  1. nmap -PA <target>  (可以探测阻止了TCP-SYN包和ICMP Echo请求的主机,但有可能会被防火墙阻止)
  2. nmap -sA <target>  (-s:即scan,表明你要使用哪种类型的扫描,-A:即TCP-ACK扫描)

TCP全连接扫描

原理:试图与目标主机上的端口进行完整的三次握手。

特性:

  1. 最基础、最稳定
  2. 速度慢,但准确度搞
  3. 容易被防火墙和IDS(入侵检测系统)发现

 

语法:

nmap -sT <target>  (-s:即scan,-T:TCP)

 

TCP窗口扫描

原理:和ACK扫描一样,它通过检测返回的RST报文的TCP窗口域,来判断目标端口是否开放。当端口关闭,则表明窗口为0;当端口开放,即窗口大于0。

 

语法:nmap -sW <target>

TCP-FIN扫描

诞生背景:

如果目标主机有防火墙,会组织SYN数据包,这是可以考虑使用TCP-FIN扫描。因为TCP FIN标志的数据包,并不需要完成TCP的握手。

原理:

TCP-FIN扫描就是想目标端口发送一个FIN包。如果收到目标主机的响应RST包,则说明端口是关闭的;如果没有收到RST包,则说明端口可能是开放的或是被隐蔽的。

语法:nmap -sF <target>  (-s:即scan;-F:FIN)

TCP-Xmas扫描

原理:又称为圣诞树扫描,它发送带有URG、PSH和FIN标志(注:URG、PSH、FIN是TCP报文中的标识位)的TCP数据包。如果目标主机响应一个RST标志的数据包,则说明目标主机的端口是关闭的。

语法:nmap -sX <target>

 

TCP-null扫描

原理和TCP-Xmas扫描一样,也是通过发送非常规的TCP通信数据包对目标计算机进行探测。在很多情况下,Null扫描和Xmas树扫描正好相反,因为TCP-null扫描向目标主机发送没有任何标记的数据包。如果目标主机的相应端口是关闭的话,则会响应一个RST数据包;如果目标主机的端口是开启的话,则不会响应任何信息。

语法:nmap -sN <target>


基于UDP协议

ping命令的原理就是向目标主机发送UDP数据包,如果数据包及时到达目标主机并做出响应,则认为网络是连通。

 

UDP扫描

原理:专门针对UDP端口。如果目标返回ICMP不可达的错误,则说明端口是关闭的;如果能够得到正确或者适当的响应,则说明目标端口是开启的。

语法:nmap -sU <target>

 

UDP-ping扫描

原理:通过发送UDP数据包到目标主机并等待响应。如果目标返回ICMP不可达的错误,则说明端口是关闭的;如果能够得到正确或者适当的响应,则说明目标端口是开启的。

语法:nmap -PD[端口] <target>  (-P:即ping,使用ping类型扫描;D:即UDP)


上层网络&路由追踪

 

路由追踪(确定自己与该IP/域名需要经过几级路由):

  1. traceroute <IP/域名>  (例如:traceroute hackyle.net)
  2. nmap --traceroute <IP/域名>  (例如:nmap --traceroute )


 

显示全文