开发者社区> 华章出版社> 正文

带你读《从实践中学习Kali Linux网络扫描》之一:网络扫描概述

简介: 本书详细讲解了网络扫描涉及的各项理论知识和技术。书中首先从理论层面帮助读者明确扫描的目的和方式,然后从基本协议的角度讲解了通用的扫描技术,最后过渡到特定类型网络环境的专有扫描技术。在先期扫描完成后,本书继续深入讲解了如何借助响应内容识别目标,并对常见的服务给出了扫描建议。在最后的相关章节,本书详细讲解了高效的数据整理和分析方式。

信息安全技术大讲堂
点击查看第二章
点击查看第三章
从实践中学习Kali Linux网络扫描

image.png

大学霸IT达人 编著

第1章 网络扫描概述

  随着互联网络的飞速发展,网络入侵行为日益严重,网络安全已成为人们的关注点。在实施渗透测试过程中,网络扫描是收集目标系统信息的重要技术之一。通过实施网络扫描,可以发现一个网络中活动的主机、开放的端口及对应服务等。本章将介绍网络扫描的目的和方式。

1.1 扫 描 目 的

  通过网络扫描,用户能够发现网络中活动的主机和主机上开放的端口,进而判断出目标主机开放的服务。然后通过对服务的扫描,还可以获取到目标主机的操作系统类型、服务欢迎信息和版本等信息。本节将介绍网络扫描的目的。

1.1.1 发现主机

  通过对一个网络中的主机实施扫描,即可发现该网络中活动的主机。当发现网络中活动的主机后,用户就可以在扫描时重新规划扫描范围,而不需要对所有主机进行扫描,这样将会节约大量的时间和资源,而且扫描的结果更精确。这样用户可以针对活动主机做进一步扫描,以探测开放的端口,进而推断出开放的服务信息等。

1.1.2 探测端口

  当用户扫描到网络中活动的主机后,即可探测该活动主机中开放的所有端口。这里的端口指的不是物理意义上的端口,而是特指TCP/IP协议中的端口,它是逻辑意义上的端口。在TCP/IP协议中,最常用的协议是TCP和UDP协议,由于这两个协议是独立的,因此各自的端口号也相互独立。例如,TCP有235端口,UDP也可以有235端口,且两者并不冲突。
  在TCP/IP协议中的端口,可以根据它们的用途进行分类。因此下面将介绍一下端口的类型,以方便用户判断端口所对应的程序。
  1.周知端口(Well Known Ports)
  周知端口是众所周知的端口号,范围为0~1023。例如,WWW服务默认端口为80,FTP服务默认端口为21等。不过,用户也可以为这些网络服务指定其他端口号,但是有些系统协议使用固定的端口号,是不能被改变的。例如,139端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
  2.动态端口(Dynamic Ports)
  动态端口的范围是49152~65535。之所以称为动态端口,是因为它们一般不固定分配某种服务,而是根据程序申请,系统自动进行动态分配。
  3.注册端口
  1024~49151端口,是用来分配给用户进程或应用程序的。这些进程主要是用户所安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以供用户端动态选用。

1.1.3 判断服务

  在计算机网络中,每个服务默认都有对应的端口。例如,FTP服务默认端口为21,SSH服务默认端口为22,HTTP服务默认端口为80等。所以,如果用户探测出目标主机开放的端口后,即可判断出对应的服务了。为了帮助用户能够快速地判断出开放端口所对应的服务,这里将以表格形式列出一些常见的服务及其对应端口,如表1.1所示。

image.png
image.png
image.png

1.2 扫 描 方 式

  用户可以使用三种扫描方式来实施网络扫描,分别是主动扫描、被动扫描和第三方扫描。本节将分别介绍这三种扫描方式。

1.2.1 主动扫描

  主动扫描就是用户主动发送一些数据包进行扫描,以找到网络中活动的主机。其中,用于主动扫描的工具有很多,如Netdiscover、Nmap和Ping等。例如,当用户使用Ping命令实施主动扫描时,将会发送一个ICMP Echo-Request报文给目标主机,如果目标主机收到该请求,并回应一个ICMP Echo-Reply报文,则说明该目标主机是活动的。

1.2.2 被动扫描

  被动扫描是通过长期监听广播包,来发现同一网络中的活动主机。一般情况下发送广播包,主要有两个原因。一个原因是,应用程序希望在本地网络中找到一个资源,而应用程序对该资源的地址又没有预先储备。例如ARP广播包,用于获取局域网内某IP对应的MAC地址。另一个原因是由于一些重要的功能。例如,路由器要求把它们的信息发送给所有可以找到的邻机。

1.2.3 第三方扫描

  用户还可以借助第三方主机来实施扫描。例如,使用公开的网络服务或者控制其他主机/设备来实施扫描。下面将介绍一些第三方扫描方式。
  1.Shodan的使用
  Shodan是目前最强大的搜索引擎。但是,它与Google这种搜索网址的搜索引擎不同,Shodan是用来搜索网络空间中在线设备的,用户可以通过Shodan搜索指定的设备,或者搜索特定类型的设备。其中,Shodan上最受欢迎的搜索内容是webcam、linksys、cisco、netgear和SCADA等。Shodan搜索引擎的网址为https://www.shodan.io/,界面如图1.1所示。

image.png

  该界面就是Shodan搜索引擎的主界面。这里就像是用Google一样,在主页的搜索框中输入想要的内容即可。例如,这里搜索一个SSH关键词,显示结果如图1.2所示。
  从该界面中可以看到搜索到的结果,主要包括两个部分:其中,左侧是大量的汇总数据,包括TOTAL RESULTS(搜索结果总数)、TOP COUNTRIES(使用最多的国家)、TOP SERVICES(使用最多的服务/端口)、TOP ORGANIZATIONS(使用最多的组织/ISP)、TOP OPERATING SYSTEMS(使用最多的操作系统)和TOP PRODUCTS(使用最多的产品/软件名称);中间的主页面就是搜索结果,包括IP地址、主机名、ISP、该条目的收录时间、该主机位于的国家和Banner信息等。如果想要了解每个条目的具体信息,则需要单击每个条目下方的Details按钮即可。此时,URL会变成这种格式https://www.shodan.io/host/ [IP],如图1.3所示,所以用户也可以通过直接访问指定的IP来查看详细信息。

image.png

image.png

  从图1.3顶部的地图中可以看到主机的物理位置。从左侧可以了解到主机的相关信息,右侧显示了目标主机的端口列表及其详细信息。
  如果像前面那样单纯地只使用关键字直接进行搜索,则搜索的结果可能不太满意。此时,用户可以使用一些特定的命令对搜索结果进行过滤。其中,常见的过滤器命令如下:

  • hostname:搜索指定的主机名或域名,如hostname:"baidu"。
  • port:搜索指定的端口或服务,如port:"21"。
  • country:搜索指定的国家,如country:"CN"。
  • city:搜索指定的城市,如city:"beijing"。
  • org:搜索指定的组织或公司,如org:"google"。
  • isp:搜索指定的ISP供应商,如isp:"China Telecom"。
  • product:搜索指定的操作系统、软件和平台,如product:"Apache httpd"。
  • version:搜索指定的软件版本,如version:"1.6.2"。
  • geo:搜索指定的地理位置,参数为经纬度,如geo:"31.8639, 117.2808"。
  • before/after:搜索指定收录时间前后的数据,格式为dd-mm-yy,如before:"11-11-15"。
  • net:搜索指定的IP地址或子网,如net:"210.45.240.0/24"。

  【实例1-1】使用Shodan查找位于国内的Apache服务器。搜索过滤器的语法格式为apache country:"CN"。此时,在Shodan的搜索文本框中输入该过滤器,如图1.4所示。

image.png

  在搜索框中输入以上过滤器后,单击image.png(搜索)按钮,即可显示其扫描结果,如图1.5所示。
  从图1.5中可以看到扫描到的结果。如果想要查看某个主机的具体位置,单击Maps按钮后,Shodan会将查询结果可视化地展示在地图当中,如图1.6所示。
  Shodan服务还支持用户将扫描结果生成一个报表并下载下来。如果想要生成报表,可以单击Create Report按钮,将弹出一个对话框,如图1.7所示。
  在该对话框中需要指定一个标题。例如,这里设置标题为SSH。然后,单击Create Report按钮,将显示如图1.8所示页面。

image.png

image.png

  从图1.8中可以看到一条提示信息,显示报告已生成成功,并且该报告已发送到注册账号的邮箱中。此时,进入邮箱即可看到接收到的邮件,如图1.9所示。

image.png

  从图1.10中可以看到提示报告SSH已成功生成。此时,单击该邮件中的链接,即可查看报告内容,如图1.10所示。

image.png

image.png


  该报告内容较多,由于无法截取整个页面,因而只显示了一部分信息。

image.png

  2.路由器的管理界面
  用户通过登录路由器,也可以查看当前局域网中活动的主机。下面将以TP-LINK路由器为例,来介绍查看活动主机的方法。
  【实例1-2】利用路由器的管理界面查看活动主机。具体操作步骤如下。
  (1)登录路由器的管理界面。其中,该路由器的默认地址为http://192.168.1.1/,用户名和密码为admin。当用户在浏览器中访问http://192.168.1.1/地址后,将弹出一个身份验证对话框,如图1.11所示。

image.png

  (2)在其中输入默认的用户名和密码进行登录。登录成功后,将显示如图1.12所示页面。

image.png

  (3)在其中依次选择“DHCP服务器”|“客户端列表”选项,将进入如图1.13所示页面。

image.png

  (4)从图1.13所示的客户端列表中可以看到有4个客户端。由此可以说明,当前局域网中有4个客户端,其IP地址分别是192.168.1.100、192.168.1.101、192.168.1.102和192.168.1.103。

1.3 准 备 环 境

  当用户对网络扫描的目的和方式了解清楚后,就可以对目标实施扫描了。但是要实施扫描,还需要准备环境,如安装扫描工具、搭建攻击靶机和网络环境等。本节将介绍准备环境的相关工作。

1.3.1 软件环境

  在书中主要是使用Nmap工具来实施扫描的,所以需要安装Nmap工具。在Kali Linux系统中,默认已经安装了Nmap工具。因此推荐用户使用Kali Linux操作系统,这样就无须进行任何配置了,否则需要手动安装Nmap。为了方便用户在非Kali Linux系统中使用Nmap工具,下面介绍获取及安装Nmap工具的方法。
  1.获取Nmap
  如果要安装Nmap工具,可以从官方网站获取其安装包。Nmap的官方下载地址为https:// nmap.org/download.html。在浏览器中输入该地址,即可打开其下载页面,如图1.14所示。

image.png

  在图1.14所示的下载页面中,提供了Windows二进制包、Linux二进制包、Mac OS X二进制包、源码包及其他操作系统的包,并且还提供了几种包的安装方式,如RPM二进制包的安装方式和源码包安装方式。此时可以根据自己的系统版本及架构,选择相应的软件包。由于页面太大,这里只截取了其中的一部分信息(包括源码包和Windows二进制包的下载地址)。
  2.安装Nmap
  下面将以Windows操作系统为例,来介绍安装Nmap工具的方法。Nmap官方网站提供了两种格式的安装包,分别是可执行文件(.exe)和压缩文件(.zip)。其中,.exe格式的文件需要用户手动安装;.zip格式的文件直接解压后就可以使用。为了能够快速并方便地使用Nmap工具,这里将选择下载.zip格式。具体安装方法如下:
  (1)下载Windows版本的.zip压缩文件安装包,下载完成后,其软件包名为nmap-7.70- win32.zip。
  (2)使用WinRAR压缩工具,解压下载的安装包。解压成功后,所有的文件将被解压到一个名为nmap-7.70的文件夹中。打开该文件夹后,即可看到用于启动Nmap工具的应用程序文件.exe,如图1.15所示。
  (3)从图1.15中可以看到解压出的所有文件。其中,nmap.exe可执行文件是用来启动Nmap工具的。接下来,在命令行终端执行该命令即可。

image.png

1.3.2 搭建靶机环境

  将扫描工具准备好后,即可开始实施扫描了。在扫描的时候,需要指定目标。在学习阶段,为了避免法律风险,还需要准备靶机。靶机是用来模拟真实目标,以供用户进行测试和联系。目标靶机有3种类型,分别是实体靶机、虚拟机靶机和第三方靶机。下面将分别介绍搭建靶机环境的方法。
  1.实体靶机
  实体靶机就是使用物理主机充当靶机。使用实体靶机,更贴近实际。构建实体靶机有两种选择,分别是使用空闲计算机和网络云主机。

  • 空闲计算机是指不用的多余的计算机。使用这类靶机可以模拟各种局域网环境。
  • 网络云主机是各大公司提供的云服务器。这类靶机往往具备外网IP,可以更好地模拟外网环境。

  2.虚拟机靶机
  实体靶机花费较多,并且数量有限。如果为了测试各种不同的服务和系统,可以选择使用虚拟机的方法。其中,VMware是一款非常强大的虚拟机安装软件。在该虚拟机软件中,用户可以安装各种操作系统作为靶机,如Windows XP/7/8/10、Linux、Mac OS等。而且,这些操作系统可以同时运行,互不影响。同时,用户可以在系统中安装不同的服务。下面将介绍使用VMware创建虚拟机的方法。
  【实例1-3】使用VMware软件创建虚拟机。具体操作步骤如下:
  (1)下载并安装VMware软件。其中,VMware软件的下载地址如下: https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
  在浏览器中输入该地址后,将打开VMware的下载页面,如图1.16所示。
  (2)从图1.16中可以看到,分别提供了Windows和Linux版本的VMware安装包。本例中将选择下载Windows版本的安装包。单击Windows版本软件包下面的“立即下载”按钮进行下载。下载完成后,其软件包名为VMware-workstation-full-15.0.2-10952284.exe。然后双击该安装包,根据提示即可快速将VMware软件安装到系统中。启动VMware虚拟机软件后,显示界面如图1.17所示。
  (3)从主界面中可以看到有3个图标,分别是“创建新的虚拟机”“打开虚拟机”“连接远程服务器”。本例中要安装新的虚拟靶机,所以选择创建新的虚拟机。单击创建新的虚拟机图标后,弹出如图1.18所示的对话框。

image.png

  (4)该对话框用来选择安装虚拟机的类型,这里选择“典型(推荐)(T)”选项。单击“下一步”按钮,将进入“安装客户机操作系统”对话框中,如图1.19所示。
  (5)在其中选择安装来源。这里提供了3种方式,分别是安装程序光盘(D)、安装程序光盘映像文件(iso)(M)和稍后安装操作系统(S),在本例中选择“稍后安装操作系统(S)”单选按钮。单击“下一步”按钮,将进入“选择客户机操作系统”对话框,如图1.20所示。

image.png

  (6)在其中选择将要安装的操作系统类型和版本。从中可以看到可安装的操作系统类型有Windows、Linux和Apple Mac OS等。选择不同的操作系统类型后,在版本的下拉列表框中可以选择系统版本。在本例中选择Linux系统类型,Debian 9.x 64位版本。然后,单击“下一步”按钮,进入“命名虚拟机”对话框,如图1.21所示。

image.png

  (7)在其中定义将要安装的虚拟机名称和位置。本例中定义的虚拟机名称为Kali Linux,位置为E:Kali Linux。然后,单击“下一步”按钮,进入“指定磁盘容量”对话框,如图1.22所示。
  (8)在其中指定将要安装的虚拟机磁盘大小。这里将定义磁盘大小为100GB,并选择“将虚拟磁盘拆分成多个文件(M)”单选按钮。然后,单击“下一步”按钮,进入“已准备好创建虚拟机”对话框,如图1.23所示。
  (9)在其中显示了前面配置的虚拟机信息。此时,单击“完成”按钮,则虚拟机创建完成,如图1.24所示。
  (10)在图1.24中显示成功创建了一个虚拟机。此时,将要安装的操作系统镜像文件加载到该虚拟机中,即可开始安装操作系统了。在其中选择“编辑虚拟机设置”选项,将弹出“虚拟机设置”对话框,如图1.25所示。

image.png

image.png

  (11)在其中可以设置虚拟机的内存、处理器、使用的镜像文件和网络连接方式等。这里选择CD/DVD(IED)选项,并在右侧选择“使用ISO映像文件(M)”单选按钮,指定要安装的虚拟机系统镜像文件。设置完成后,单击“确定”按钮,将返回如图1.24所示的页面。然后,单击“开启此虚拟机”选项,即可开始安装对应的操作系统。

image.png

  3.第三方靶机
  除了前面的两种靶机外,也可以从互联网上下载一些第三方靶机直接使用,避免手动安装,手动配置系统和服务。例如,一个比较有名的虚拟靶机Metasploit 2,里面包含了很多的漏洞,可以使用该靶机练习扫描。下面来介绍将第三方靶机加载到虚拟机中的方法。
  【实例1-4】在虚拟机中加载Metasploit 2操作系统。具体操作步骤如下:
  (1)下载Metasploitable 2,其文件名为Metasploitable-Linux-2.0.0.zip。
  (2)将Metasploitable-Linux-2.0.0.zip文件解压到本地磁盘。
  (3)打开VMwareWorstation,并依次选择“文件”|“打开”命令,将弹出如图1.26所示对话框。
  (4)在VMware中,后缀为“.vmw”的文件是用来启动操作系统的。所以,这里选择Metasploitable.vmx文件,并单击“打开”按钮,弹出如图1.27所示对话框。
  (5)在该窗口中单击“开启此虚拟机”按钮或按钮,启动Metasploitable 2系统。当启动该系统后,会弹出如图1.28所示对话框。
  (6)该对话框提示此虚拟机可能已经被移动或复制。单击“我已复制该虚拟机”按钮,将启动Metasploitable 2操作系统,如图1.29所示。

image.png

image.png

  (7)该界面为Metasploitable 2登录界面。系统默认的用户名和密码都是msfadmin,此时依次输入用户名和密码后将成功登录系统。

image.png

1.3.3 搭建网络环境

  如果用户使用虚拟机作为靶机的话,还需要对网络进行简单配置;如果靶机配置不当,则会导致无法对其实施扫描。下面将介绍在虚拟机中设置网络的方法。
  1.虚拟机NAT网络
  虚拟机提供了3种网络模式,分别是桥接模式、NAT模式和仅主机模式。如果要访问互联网,NAT模式是最好的选择。使用NAT网络后,不仅可以与局域网中的主机进行通信,还可以访问外网。下面将介绍配置NAT网络的方法。
  (1)由于NAT模式是借助虚拟NAT设备和虚拟DHCP服务器,使虚拟机连接到互联网的,所以要使用NAT网络,必须先启动NAT服务和DHCP服务。在Windows桌面,右击“计算机”,在弹出的快捷菜单中选择“管理”命令,打开“计算机管理”窗口。然后选择“服务和应用程序”|“服务”选项,将显示如图1.30所示的窗口。
  (2)在该窗口中显示了三部分内容,分别是计算机管理(本地)选项列表、服务信息和操作选项。在第二部分的服务信息下拉列表中,即可找到VMware NAT Service和VMware DHCP Service。从该窗口中可以看到,这两个服务已经启动。如果没有启动的话,选择对应服务并右击,将弹出一个快捷菜单,如图1.31所示。

image.png

  (3)在该快捷菜单中,选择“启动(S)”命令,即可启动对应的服务。接下来设置NAT的网段和范围,用来为主机动态分配IP地址。在VMware的菜单栏中依次选择“编辑(E)”|“虚拟网络编辑器(N)”命令,将弹出如图1.32所示对话框。
  (4)从其中可以看到当前虚拟机中的所有虚拟网络连接方式。这里设置的是NAT网络,所以选择VMnet8。然后即可进行NAT和DHCP设置。单击“NAT设置(S)”按钮,将进入如图1.33所示对话框。
  (5)在该对话框中可设置NAT的网段。可以看到,本例中的NAT网段为192.168.33.0/ 24。如果想要修改为其他网段的话,只需要修改网关IP地址即可。例如,如果想要设置NAT网段为192.168.5.0,则设置网关IP地址为192.168.5.2即可。然后单击“确定”按钮,将返回“虚拟网络编辑器”对话框。单击“DHCP设置(P)”按钮,将进入如图1.34所示对话框,在其中即可设置NAT网络范围。
  (6)图1.34中所示的起始IP地址和结束IP地址就是用来设置网络范围的。可以看到,当前的NAT网络范围为192.168.33.128至192.168.33.254,并且还可以设置地址的租用时间。设置完成后,单击“确定”按钮完成设置。

image.png

image.png

  2.使用实体网络
  虚拟机网络可能导致部分扫描出现错误。这时,需要使用实体网络来实施扫描。通过在虚拟机中接入一个USB无线网卡,可以让虚拟机使用物理网络。下面介绍在虚拟机中使用USB网卡的方式。
  【实例1-5】在虚拟机中使用USB无线网卡,具体操作步骤如下:
  (1)启动虚拟机的USB服务。在当前计算机中打开服务界面,如图1.35所示。

image.png

  (2)从服务中找到VMware USB Arbitration Service服务,并确定该服务已启动。接下来将USB无线网卡插到实体机上,此时会弹出一个“可移动设备”对话框,如图1.36所示。

image.png

  (3)从该对话框中可以看到,当前系统中插入了一个名称为“Ralink 802.11n WLAN”的USB设备。通过选择“虚拟机”|“可移动设备”命令,即可将该设备连接到此虚拟机上。此时,在VMware的菜单栏中依次选择“虚拟机(M)”|“可移动设备(D)”|Ralink 802.11n WLAN|“连接(断开与主机的连接)(C)”命令,即可将该USB无线网卡接入到虚拟机中,如图1.37所示。
  (4)当选择“连接(断开与主机的连接)(C)”选项后,将弹出如图1.38所示的对话框。
  (5)从该对话框中可以看到,某个USB设备将要从主机拔出并连接到虚拟机上。此时,单击“确定”按钮,则成功将USB无线网卡接入到虚拟机中。接下来,使用该USB无线网卡即可接入实体网络。

image.png

1.3.4 远程扫描

  前面介绍的几种环境都是一个局域网,可以直接实施扫描。如果无法直接连入对方网络的话,例如异地对局域网进行检测,则需要使用远程扫描方式。此时可以在树莓派上安装Kali Linux系统,并配置4G上网卡加入异地的局域网中。用户在任何地方通过4G网络远程登录Kali Linux系统,即可对所在局域网络实施扫描。

1.4 法 律 边 界

  当实施网络扫描及渗透测试时,获取准确的书面授权是非常重要的事情,否则可能会面临法律诉讼。本节将介绍网络扫描的法律边界问题。

1.4.1 授权扫描

  用户在实施扫描之前,首先需要获取目标所有者的正式授权,否则会违反法律规定,造成不必要的麻烦。下面列举几条网络扫描相关的法律条文。
  (1)不得非法入侵他人网络、干扰他人网络正常功能、窃取网络数据,进行危害网络安全的活动。
  (2)不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害安全活动的程序、工具。
  所以,用户在实施扫描之前,必须要获取网络所有人明确的书面授权。

1.4.2 潜在风险

  在实施扫描时,部分操作存在一定的潜在风险,如消耗大量的网络资源、触发安全软件报警。例如,用户使用Namp -A实施扫描时,将会向1~65535端口依次发包,要求建立TCP连接,这样容易造成网络拥堵。如果同时扫描局域网内多个主机时,占用的网络资源会翻倍。
  部分扫描操作没有建立完整的连接过程,会被网络防火墙认定为攻击行为,从而触发网络警报。同时,部分网络会建立蜜罐机制,而扫描操作往往会触发这类机制,造成错误预警。所以,用户需要事先以正式的方式告知目标网络所有者,扫描操作可能会造成的影响,并要求对方确认。

版权声明:如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developerteam@list.alibaba-inc.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接