KaliLinux-网络扫描

第1章 网络扫描概述

1.1 扫描的目的

发现开放的端口 $\rightarrow$ 确定开放的服务.

对服务的扫描 $\rightarrow$ 获取目标主机的操作系统类型, 服务欢迎信息和版本等信息.

1.1.1 发现主机

通过对一个网络中的主机实施扫描, 即可发现该网络中活动的主机.

在发现主机后可以重新规划范围.

1.1.2 探测端口

端口的类型:

1. 周知端口 (Well Known Ports)

范围为 $0 \sim 1023$, 如:

  • WWW 服务默认端口 $\rightarrow$ 80
  • FTP $\rightarrow$ 21

用户可以为这些网络服务指定其他端口号.

有些系统协议使用固定的端口号, 是不能被改变的. 如:

  • NetBIOS 与 TCP/IP 之间的通信 $\rightarrow$ 139

2. 动态端口 (Dynamic Ports)

范围是 $49152 \sim 65535$

3. 注册端口

范围是 $1024 \sim 49151$, 是用来分配给用户进程或应用程序的.

这些进程主要是用户所安装的一些应用程序, 而不是已经分配好了公认端口的常用程序. 这些端口在没有被服务器资源占用时, 可以供用户端动态选用.

1.1.3 判断服务

如:

1.2 扫描方式

三种方式:

  • 主动扫描
  • 被动扫描
  • 第三方扫描

1.2.1 主动扫描

即用户主动发送一些数据报进行扫描.

如: Netdiscover, Nmap, Ping 等.

1.2.2 被动扫描

即通过长期监听广播包.

发送广播包一般有两个原因:

  • 应用程序希望在本地网络中找到一个资源, 而应用程序对该资源的地址没有预先储备, 如 ARP.
  • 由于一些重要功能, 如路由器要求将它们的信息发送给所有可以找到的邻机

1.2.3 第三方扫描

即借助第三方主机.

如使用公开的网络服务或控制其他主机来实施.

几个第三方扫描的方式

1. Shodan

Shodan 是搜索引擎, 用来搜索网络空间中的在线设备. 用户可以通过 Shodan 搜索指定的设备, 或者搜索特定类型的设备. 网址为 https://www.shodan.io/

2. 路由器的管理界面

用户通过登录路由器, 也可以查看当前局域网中活动的主机.

可选择 “DHCP服务器” 和 “客户端列表”.

1.3 准备环境

下载 Metasploit 操作系统的 iso 文件

1.3.3 搭建网络环境

  1. 虚拟机 NAT 网络

NAT 模式是借助虚拟 NAT 设备和虚拟 DHCP 服务器, 使虚拟机连接到互联网的, 所以要使用 NAT 网络, 必须先启动 NAT 服务和 DHCP 服务.

  1. 使用实体网络

通过在虚拟机中接入一个 USB 无线网卡, 可以让虚拟机使用物理网络.

1.4 法律边界

1.4.2 潜在风险

使用 Namp-A 实施扫描时, 将会向 1 ~ 65535 端口依次发包, 要求建立 TCP 连接, 这样容易造成网络拥堵. 如果同时扫描局域网内多个主机时, 占用的网络资源会翻倍.

第2章 网络扫描基础技术

2.1 ICMP 扫描

ICMP (Internet Control Message Protocal), 工作在 OSI 的 网络层 , 向数据通信中的源主机报告错误.

通过实施 ICMP Ping 扫描, 可以发现目标主机是否活动.

2.1.1 ICMP 工作机制

ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息,进而确定目标主机的状态。

2.1.2 标准 ICMP 扫描

标准ICMP扫描就是简单的通过向目标主机发送ICMP Echo Request数据包,来探测目标主机是否在线。如果目标主机回复用户ICMP Echo Reply包的话,则说明目标主机在线;否则说明不在线。

1. 使用 Ping 命令

该命令是通过发送一个ICMP Echo Request数据包,并等待目标主机返回的响应,来检查网络是否通畅或者网络连接速度。

如:

1
$ ping [目标]

2. Nmap 工具

Nmap (Network Mapper), 的 -PE 选项:

如:

1
$ nmap -PE [目标]

3. Fping

Fping 在 ping 多个主机时性能比 Ping 高. 其可以在命令行上定义任意数量的主机, 或者指定包含 Ping 的 IP 地址或主机列表文件.

如:

1
$ fping [目标]

2.1.3 时间戳查询扫描

对于一些服务器来说,通常会配置防火墙,用来阻止ICMP Echo请求。但是由于一些配置不当,仍然可能会回复ICMP时间戳请求。因而可以通过使用ICMP时间戳查询扫描,来判断目标主机是否在线。

使用 Nmap:

1
$ nmap -PP [目标]

2.1.4 地址掩码查询扫描

这种类型的Ping可绕过配置有封锁标准回声请求策略的防火墙。

如:

1
$ nmap -PM [目标]

2.2 TCP 扫描

TCP (Transmission Control Protocal)

2.2.1 TCP 工作机制

2.2.2 TCP SYN 扫描

扫描主机向目标主机指定端口发送SYN数据包。如果源主机收到RST数据包,则说明端口是关闭的;如果源主机收到SYN+ACK数据包,则说明目标端口处于监听状态。由于扫描主机已经获取端口的状态信息,并不需要建立连接,所以传送一个RST数据包给目标主机,从而停止建立连接。
(RST(Reset)报文是一种TCP/IP协议中的报文,用于重置已建立的连接。RST报文是一种强制断开连接的方法,它会立即发送一个RST报文,从而使连接终止。RST报文的发送者可以使用RST报文来拒绝一个连接,或者在连接过程中出现错误时,可以使用RST报文来重置连接。)

在SYN扫描过程中,客户端和服务器端没有形成三次握手,所以没有建立一个正常的TCP连接,因此扫描操作不会被防火墙和日志所记录。这样就不会在目标主机上留下任何的痕迹,但是这种扫描需要Root权限。

1. TCP SYN Ping 扫描

用其处理 Ping 扫描被阻止的情况.

如:

1
$ nmap -PS [目标]

2. TCP SYN 扫描

如:

1
$ nmap -sS [目标]

这里的-sS选项,实际上是-s和-S两个选项的组合。可以分别来理解这两个选项:-s表示告诉Nmap运行哪种类型的扫描;-S表示执行TCP SYN类型扫描。

2.2.3 TCP ACK 扫描

源主机向目标主机的一个端口发送一个只有ACK标志的TCP数据包,不论目标主机的端口是否开启,都会返回相应的RST数据包,然后通过RST包中的TTL,来判断端口是否开启。其中,当TTL值小于64时,表示端口开启;当TTL值大于64时,则表示端口关闭。

1. TCP ACK Ping 扫描

这种扫描方式,可以探测阻止SYN包或ICMP Echo请求的主机。但是这种扫描方式会被防火墙阻止。

1
$ nmap -PA [目标]

2. TCP ACK 扫描

1
$ nmap -sA [目标]

2.2.4 TCP 全连接扫描

TCP全连接扫描是端口扫描中最基础和最稳定的,因为Nmap试图在其命令指定的每个端口上完成三次握手。这种扫描完整地完成了三次握手过程,之后又通过友好的方式断开连接,因此不容易形成对目标的泛洪攻击,以至崩溃。这种扫描方法的特点是扫描速度慢、准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现。

如:

1
$ nmap -sT [目标]

2.2.5 TCP 窗口扫描

过检查返回的RST报文的TCP窗口域,来判断目标端口是开放还是关闭。在某些系统上,开放端口用正数表示窗口大小(甚至对于RST报文),而关闭端口的窗口大小为0。因此,当收到RST包时,窗口扫描并不总是把端口标记为unfiltered,而是根据TCP窗口值是正数还是0,分别把端口标记为open或者closed。

如:

1
$ nmap -sW [目标]

2.2.6 端口状态

使用 Nmap 进行端口扫描时, 可以识别 6 个端口状态, 分别是:

  • open(开放的), 应用程序正在该端口接收TCP连接或者UDP报文
  • closed(关闭的), 关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应),但没有应用程序在其上监听。它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行,也对部分操作系统的探测有所帮助
  • filtered(被过滤的), 由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备、路由器规则或者主机上的软件防火墙
  • unfiltered(未被过滤的), 未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。用户只有通过映射防火墙规则集的ACK扫描,才会把端口分类到这种状态
  • open|filtered(开放或者被过滤的), 当无法确定端口是开放还是被过滤的时候,Nmap会把该端口划分成这种状态
  • closed|filtered(关闭或者被过滤的), 该状态用于Nmap不能确定端口是关闭的还是被过滤的

1. TCP FIN 扫描

TCP FIN标志的数据包,并不需要完成TCP的握手。TCP FIN扫描就是向目标端口发送一个FIN包。如果收到目标响应的RST包,则说明该端口是关闭的;如果没有收到RST包,则说明端口可能是开放的或被屏蔽的

如:

1
$ nmap -sF [目标]

2. TCP Xmas 树扫描

其又被称为圣诞树扫描. 它发送带有URG、PSH和FIN标志的TCP数据包。如果目标主机响应一个RST标志数据包,则说明目标主机的端口是关闭的.

如:

1
$ nmap -sX [目标]

3. TCP Null 扫描

TCP Null(空)扫描和TCP Xmas树扫描一样,也是通过发送非常规的TCP通信数据包对目标计算机进行探测.

Null扫描使用没有任何标记(全空)的数据包

根据RFC793规定,如果目标主机的相应端口是关闭的话,则应该响应一个RST数据包;如果目标主机的相应端口是开启的话,则不会响应任何信息

如:

1
$ nmap -sN [目标]

2.3 UDP 扫描

UDP (User Datagram Protocal)

UDP扫描通过向目标主机发送UDP包,根据目标主机的响应情况来判断目标是否在线。由于UDP协议是非面向连接的,对UDP端口的探测也就不像TCP端口的探测那样依赖于连接建立过程,这使得UDP端口扫描的可靠性并不高.

2.3.1 UDP 工作机制

UDP适用于一次只传少量数据,对可靠性要求不高的应用环境。其中,Ping命令的原理就是向对方主机发送UDP数据包,然后对方主机确认是否收到数据包.

2.3.2 实施 UDP 扫描

UDP扫描是通过发送UDP数据包到目标主机并等待响应,来判断目标端口是否开放。如果目标返回ICMP不可达的错误(类型3,代码3),则说明端口是关闭的;如果得到正确的或适当的响应,则说明端口是开放的.

1. UDP Ping 扫描

UDP Ping扫描就是通过向目标主机发送一个空的UDP包到指定端口,然后根据目标主机的响应情况来判断目标是否在线.

如:

1
$ nmap -PU[portlist] [目标]

扫描的端口默认是 40125.

2. UDP 扫描

如:

1
$ nmap -sU

-sU 表示这种扫描技术是用来寻址目标主机打开的UDP端口。它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应。如果返回ICMP不可达的错误消息,说明端口是关闭的;如果得到正确的或适当的回应,则说明端口是开放的.

2.4 IP 扫描

IP (Internet Protocal Address).

实施IP扫描,可以探测到目标主机中TCP/IP协议簇中有哪些协议,类型号分别是多少.

1
$ nmap -sO [目标]

第3章 局域网扫描

3.1 网络环境

3.1.1 网络范围

当用户实施局域网扫描时,首先要确定一个网络范围.

使用TCP/IP协议的网络中,主机标识段host ID为全1的IP地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机.

1. 使用 Netmask

其可用于实现 IP 地址格式转换.

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 转换为 CIDR 格式
$ netmast -c 192.168.0.0:192.168.2.255
192.168.0.0/23
192.168.2.0/24
# 转换为子网掩码格式
$ netmast -s 192.168.0.0:192.168.2.255
192.168.0.0/255.255.254.0
192.168.2.0/255.255.255.0
# 转换为 Cisco 格式
$ netmast -i 192.168.0.0:192.168.2.255
192.168.0.0 0.0.1.255
192.168.2.0 0.0.0.255
# 转换为 IP 范围格式
$ netmast -i 192.168.0.0/23
192.169.0.0-192.168.1.255

2. 使用 Nmap 工具扫描

如:

1
$ nmap -iL [inputfilename]

文件中的每一项需要用一个或多个空格, 制表符或换行符分开.

3.1.2 上级网络

在一个局域网内,用户也可能会使用多个路由器进行串联,以满足扩大原有的网络范围,或者在原有的网络下构建新的网络(子网络)。如果用户连接的是最底层网络的话,则可以通过路由跟踪的方式扫描到上级网络的路由。根据获取的路由信息,可以猜测上级网络的范围大小.

1. 使用 Nmap

--traceroute 选项可以用来实现路由跟踪.

如:

1
$ nmap --traceroute www.baidu.com

2. 使用 Traceroute

Traceroute是一款用来侦测由源主机到目标主机所经过的路由请求的重要工具。Traceroute工具收到目的主机IP后,首先给目的主机发送一个TTL=1(TTL指生存时间)的UDP数据包,而经过的第一个路由器收到这个数据包之后,自动把TTL减去1。当TTL变为0之后,路由器就将这个数据包抛弃了,并同时产生一个主机不可达的ICMP超时数据报给主机。主机收到这个ICMP数据报以后,会发送一个TTL=2的数据报给目的主机,然后刺激第二个路由器给主机发送ICMP数据报,如此反复,直到到达目的主机。这样Traceroute就可以拿到所有路由器的IP,从而避开IP头只能记录有限路由的IP地址.

如:

1
$ traceroute www.baidu.com

以星号返回行表示防火墙封掉了 ICMP 的返回消息.

3.2 ARP 扫描

ARP (Address Resolution Protocal), 根据 IP 地址获取物理地址. 主机进行通信时,将会发送一个包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址

3.2.1 主动扫描

主动发送一个ARP请求包,等待目标主机的响应. 如果目标主机响应了该请求后,则说明该主机是活动的;否则,说明目标主机不在线.

如:

1
$ nmap -PR [目标]

使用 Netdiscover

Netdiscover是一个主动/被动的ARP侦查工具。使用该工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求.

1
$ netdiscover -r [range]

使用 arp-scan

既可以进行单一目标扫描,也可以进行批量扫描. 批量扫描的时候,用户可以通过CIDR、地址范围或者列表文件的方式指定

如:

1
$ arp-scan [目标]

使用 Arping

Arping是一个ARP级别的Ping工具,主要用来向局域网内的其他主机发送ARP请求的指令。使用该工具可以测试局域网内的某个IP地址是否已被使用

如:

1
$ arping -c <count> [目标]

3.2.2 被动扫描

被动扫描是通过长期监听ARP广播,来发现同一局域网中的活动主机.

使用 Netdiscover:

1
$ netdiscover -p

(-p 为 passive mode)

3.2.3 设备 MAC 查询

一个查询网站

3.3 DHCP 被动扫描

DHCP (Dynamic Host Configuration Protocal). 给内部网或网络服务供应商自动分配IP地址, 当一个客户端需要获取一个IP地址时,将会向DHCP服务器发送广播包,收到请求的服务器会提供一个可用的IP地址给客户端,所以可以监听该协议的包.

3.3.1 DHCP 工作机制

3.3.2 被动扫描

当客户端请求获取IP地址时,会发送一个DHCP Discover广播包,此时,局域网中的所有主机都可以收到该数据包。所以,通过监听方式,即可实现DHCP被动扫描.

1. Nmap

在Nmap中,提供了一个broadcast-dhcp-discover脚本能够用来发送一个DHCP Discover广播包,并显示响应包的具体信息。通过对响应包的信息进行分析,能够找到可分配的IP地址:

1
$ nmap --script broadcast-dhcp-discover

2. dhcpdump

dhcpdump是一个命令行格式的DHCP流量嗅探工具,可以捕获DHCP的请求/回复流量,并以用户友好的方式显示解码的DHCP协议消息.

1
$ dhcpdump -i [interface]

3.4 其他监听

协议如 BROWSER, SSDP 和 LLMNR 等都会主动发送一些广播包或组播包.

1. Wireshark

显示过滤器的语法格式如:

1
ip.dst==广播地址

2. Tcpdump

如:

1
$ tcpdump -i <interface> -w <file>

其中 -i 指定监听的网络接口.

-w 指定数据报保存的文件名.

第4章 无线网络扫描

4.1 无线网络概述

4.1.1 无线网络构成

主要为:

  • AP (Access Point, 接入点)
  • STA (Station, 客户端)

4.1.2 无线网络类型

三种网络拓扑结构:

  • 独立基本服务集 (Independent BSS, IBSS 也叫 Ad-Hoc)
  • 基本服务集 (Basic Servvice Set, BSS)
  • 扩展服务集 (Extent Service Set, ESS)

1. Ad-Hoc 网络

在Ad-Hoc无线局域网中,所有的节点都是移动主机,STA之间直接通信,构成独立基本服务集.

也就是说不需要 AP:

2. BSS 网络

最简单的服务单元可以只有两个无线客户端组成:

3. ESS 网络

由分配系统 (Distribute System, DS) 和基本服务单元 (BSS) 组合而成.

4.1.3 无线网络工作原理

无线网络的设置至少需要一个Access Point(AP),以及一个或一个以上的客户端。AP每100ms将SSID(Service Set Identifier,服务集标识)经由Beacons(信号台)封包广播一次。Beacons封包的传输速率是1Mbit/s,并且长度相当短,所以这个广播动作对网络性能的影响不大.

4.2 发现网络

4.2.1 Airodump-ng

Airodump-ng 是 Aircrack-ng 工具集2中的一个工具.

通过使用Airodump-ng工具实施扫描,可以获取到AP的相关信息,如SSID名称、MAC地址、工作信道及加密方式等.

将无线网卡设置为监听模式:

1
$ airmon-ng start wlan0

扫描无线网络:

1
$ airodump-ng wlan0mon

输出中:

  • CIPHER:检测到的加密算法,为CCMP、WRAAP、TKIP、WEP和WEP104中的一个。通常,TKIP算法与WPA结合使用,CCMP与WPA2结合使用。如果密钥索引值大于0,显示为WEP40。标准情况下,索引0~3是40bit,104bit应该是0。

  • AUTH:使用的认证协议。常用的有MGT(WPA/WPA2使用独立的认证服务器,平时我们常说的802.1x,Radius、EAP等),SKA(WEP的共享密钥),PSK(WPA/WPA2的预共享密钥)或者OPN(WEP开放式)。

  • ESSID:也就是所谓的SSID号。如果启用隐藏的SSID的话,它可以为空,或者显示为。这种情况下,Airodump-ng试图从Probe Responses和Association Requests包中获取SSID。

  • STATION:客户端的MAC地址,包括连上的和想要搜索无线信号来连接的客户端。如果客户端没有连接上,就在BSSID下显示not associated。

  • Rate:表示传输率。

  • Lost:在过去10秒钟内丢失的数据分组,基于序列号检测。它意味着从客户端来的数据丢包,每个非管理帧中都有一个序列号字段,把刚接收到的那个帧中的序列号和前一个帧中的序列号一减,就可以知道丢了几个包。

  • Frames:客户端发送的数据分组数量。

  • Probe:被客户端查探的ESSID。如果客户端正试图连接一个AP,但是没有连接上,则会显示在这里。

4.2.2 使用 Kismet

Kismet是一个基于Linux的无线网络扫描程序. 通过监测周围的无线信号,可以扫描到附近所有可用的AP及所使用的信道等.

启动 Kismet:

1
$ kismet 

4.2.3 使用 Wash

Wash 是一款 WPS (WiFi Protected Setup, Wi-Fi 保护设置) 扫描工具.

该工具主要用来扫描、启用WPS功能的无线网络。使用-a选项,可以扫描出所有的无线网络,即使没有启用WPS功能.

1
$ wash -a -i <interface>

-a 表示显示所有 AP.
-i 指定监听接口.

如:

1
$ wash -a -i wlan0mon

4.2.4 使用 Wireshark

同样先设置网卡为监听模式:

1
$ airmon-ng start wlan0

再打开 Wireshark.

4.2.5 使用无线设备

用手机等.

4.3 扫描客户端

4.3.1 使用 Airodump-ng

其也可以扫描出连接目标 AP 的客户端.

1
2
$ airmon-ng start wlan0
$ airodump-ng wlan0mon

4.3.2 使用 Kismet

4.3.3 路由器管理界面

在路由器的管理界面中也可以看到.

第5章 广域网扫描

5.1 WHOIS 信息查询

WHOIS(读作Who is,非缩写)是用来查询域名的IP及所有者等信息的传输协议.

通过域名Whois服务器查询,可以查询域名归属者联系方式,以及注册和到期时间.

5.1.1 WHOIS 查询网址

https://whois.chinaz.com

5.1.2 Whois 工具

1
$ whois [域名]

5.1.3 DMitry 工具

DMitry工具是用来查询IP或域名WHOIS信息的.

1
$ dmitry -w [domain]

-w 用来表明进行 WHOIS 查询.

5.2 第三方扫描

两款搜索引擎:

  • Shodan
  • ZoomEye

5.3 探测域名

5.3.1 Ping 扫描

通过Ping扫描,可以探测域名对应的主机IP地址.

1. Ping 命令

1
$ ping www.baidu.com

2. Nmap

1
$ nmap -sP [目标]

5.3.2 域名解析

只知道目标主机的域名时,如果想要知道其IP地址,则需要进行域名解析.

两种方法:

  • 正向解析: 域名解析为 IP
  • 反向解析: IP 解析为域名

1. Nmap

1
$ nmap -sL [目标]

如:

1
$ nmap -sL www.baidu.com

可以解析一个网段:

1
$ nmap -sL 192.168.1.0/24

2. Nslookup

Nslookup是由微软发布的用于对DNS服务器进行检测和排错的命令行工具。该工具可以指定查询的类型,可以查到DNS记录的生存时间,还可以指定使用哪个DNS服务器进行解释.

1
$ Nslookup [域名]

如:

1
$ nslookup www.baidu.com

5.3.3 反向 DNS 查询

1. Nmap

1
$ nmap -R [ip]

-R 表明实施 DNS 解析.

Nslookup

1
$ nslookup [ip]

5.3.4 自域名枚举

fierce是一款IP、域名互查的DNS工具,可进行域传送漏洞检测、字典枚举子域名、反查IP段,以及反查指定域名上下一段IP,属于一款半轻量级的多线程信息收集用具.

1
$ fierce -dns target-domain

可以使用 -wordlist 选项指定自己的字典文件来枚举子域名.

第6章 目标识别

如果确定主机是活动的,就可以对该主机进行信息识别,如确认开放的服务和操作系统类型等.

6.1 标志信息

标志信息是指一些主机或服务响应的欢迎信息或版本信息.

6.1.1 Netcat 获取标志信息

Netcat是一个多功能网络化工具,使用该工具可以实现各种信息收集和扫描。

用 Netcat 获取标志信息:

1
$ nc -v [hostname] [port]

-v 表示显示详细信息.

如:

1
$ nc -v 192.168.33.152 21

6.1.2 Python 获取标志信息

1
2
3
4
5
6
7
$ Python
>>> import socket
>>> bangrad = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> bangrad.connect(("192.168.33.152", 21))
>>> bangrad.recv(4096)
>>> bangrad.close()
>>> exit()

6.1.3 Dmitry 获取标志信息

Dmitry是一个一体化的信息收集工具,使用该工具对目标主机实施扫描,也可以获取到一些标志信息.

1
$ dmitry -pd [host]

-p 表明实施一个 TCP 端口扫描
-b 表明获取扫描端口返回的标志信息.

6.1.4 Nmap NSE 获取标志信息

利用 Nmap 的 Namp Scripting Engine (NSE) 脚本.

1
$ nmap -sT [host] -p [port] --script=banner

-sT 实施 TCP 全连接扫描.

6.1.5 Amap 获取标志信息

Amap是一个应用程序映射工具,可以用来通过远程端口来读取正在运行的网络服务标志。

1
$ amap -B [host] [port]

-B 表明获取标志信息.

6.2 服务识别

6.2.1 Nmap 服务识别

1. 服务版本

1
$ nmap -sV [host]

2. 扫描所有端口

1
$ nmap --allports [host]

默认情况下, Nmap 仅扫描 1000 个端口, 而且会跳过 TCP 端口 9100.

3. 指定服务版本扫描强度

强度水平说明了应该使用哪些探测报文,数值越高,服务越有可能被正确识别。但是,高强度扫描更耗费时间,强度值必须在0~9之间,默认是7.

1
$ nmap --version-intensity <level> [目标]

4. 轻量级扫描

1
$ nmap --version-light [host]

5. 探测所有端口

1
$ nmap --version-all [host]

6. 跟踪版本扫描

1
$ nmap --version-trace [host]

7. 实施 RPC 扫描

这种扫描方式通过向所有处于打开状态的TCP/UDP端口,发送SunRPC程序NULL命令,以确定它们是否是RPC端口。如果是,就判断是哪种程序及其版本。因此,我们也可以使用RCP扫描方式来识别服务的版本信息.

1
$ nmap -sR [host]

6.2.2 Amap 服务识别

1
$ amap [host] [port]

6.3 系统识别

6.3.1 Nmap 系统识别

1. 识别操作系统

1
$ nmap -O [host]

2. 指定主机识别

扫描多个主机时, 指定识别特定主机的操作系统类型.

1
$ nmap -O --osscan-limit [host]

3. 推测操作系统

使用 --osscan-guess 选项或 --fuzzy 选项:

1
$ nmap -O --osscan-guess [host]

1
$ nmap -O --fuzzy [host]

6.3.2 Ping 系统识别

不同操作系统类型响应的TTL值不同.

如:

6.3.3 xProbe2 系统识别

6.3.4 p0f 系统识别

6.4 利用 SNMP 服务

SNMP (Simple Network Management Prorocol, 简单网络管理协议) 是由一组网络管理的标准组成,包含一个应用层协议和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。

6.5 利用 SMB 服务

SMB (Server Message Block, 服务信息块). 是一种IBM协议,用于在计算机间共享文件、打印机和串口等。SMB协议可以用在TCP/IP协议之上,也可以用在其他网络协议(如NetBEUI)之上.

第7章 常见服务扫描策略

7.1 网络基础服务

网络基础服务是指连接到网络需要的基本服务,如DHCP、NTP和NetBIOS等.

7.1.1 DHCP 服务

DHCP是基于UDP协议工作的服务,该服务工作于UDP的67和68号端口。其中,UDP 67号端口作为DHCP客户端广播请求,UDP 68号端口作为DHCP服务器回应广播请求.

1. 使用 broadcast-dhcp-discover.nse 脚本

broadcast-dhcp-discover.nse脚本通过向广播地址(255.255.255.255)发送一个DHCP请求,来寻找提供DHCP服务的主机。该脚本在执行操作时,使用静态MAC地址(de:ad:c0:de:ca:fe),以防止IP地址耗尽.

1
$ nmap --script=broadcast-dhcp-discover.nse

或:

1
$ nmap --script broadcast-dhcp-discover

2. 使用 dhcp-discover.nse 脚本

dhcp-discover.nse脚本用来向目标主机发送一个DHCP INFORM请求到主机的UDP 67号端口,来获取所有本地配置参数。其中,DHCPINFORM是一种从DHCP服务器返回有用信息而不分配IP地址的DHCP请求.

1
$ nmap -sU -p [port] --script dhcp-discover [target]

-sU 表明实施 UDP 端口扫描. Nmap 工具默认将扫描 TCP 端口.

7.1.2 Daytime 服务

7.1.3 NTP 服务

7.1.4 LLTD 服务

7.1.5 NetBIOS 服务

7.2 文件共享服务

文件共享是指主动在网络上共享自己的计算机文件,最常见的文件共享服务有AFP和NFS等.

7.2.1 苹果 AFP 服务

7.2.1 苹果 DAAP 服务

7.2.3 苹果 NFS 服务

7.3 Web 服务

Web服务一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文件,也可以放置网站文件和数据文件,让用户浏览和下载.

7.3.1 AJP 服务

7.3.2 ASP.NET 服务

7.3.3 HTTP 认证服务

7.3.4 SSL 服务

7.4 数据库服务

数据库服务器由运行在局域网中的一台或多台计算机和数据库管理系统软件共同构成,为客户应用程序提供了数据服务.

7.4.1 DB2 数据库

7.4.2 SQL Server 数据库

7.4.3 Cassandra 数据库

7.4.4 CouchDB 数据库

7.4.5 MySQL 数据库

7.4.6 Oracle 数据库

7.5 远程登录服务

远程登录服务可以将用户计算机与远程主机连接起来,在远程计算机上运行程序,将相应的屏幕显示传送到本地主机,并将本地的输入发送给远程计算机.

7.5.1 RDP 服务

7.5.2 SSH 服务

7.5.3 VMware 服务

7.5.4 VNC 服务

7.6 邮件服务

邮件服务器是一种用来负责电子邮件收发管理的软件。它比网络上的免费邮箱更安全和高效,因此一直是企业公司的必备设备.

7.6.1 邮件 IMAP 服务

7.6.2 邮件 POP3 服务

7.6.3 邮件 SMTP 服务

7.7 其他服务

7.7.1 字典 DICT 服务

7.7.2 IRC 服务

7.7.3 硬盘监测服务

第8章 信息整理及分析

使用 Maltego 工具.

8.1 准备环境

Maltego 工具需要注册账号. 注册地址

8.1.5 安装第三方 Transform

Transform是一个信息收集器,可以根据当前实体节点进行信息收集,并生成该节点的子节点。Maltego工具安装后,默认自带了一些Transform,可以用来收集信息.


KaliLinux-网络扫描
http://example.com/2023/03/10/KaliLinux-网络扫描/
作者
Jie
发布于
2023年3月10日
许可协议