实验3 扫描工具和finalshell远程登陆实践
实验内容一:nmap扫描工具的使用
预备知识
1、计算机网络基础
2、Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字Nmap是Network Mapper的简称。
Nmap主要包括四个方面的扫描功能,分别是主机发现(Host Discovery)、端口扫描(Port Scanning)、应用与版本侦测(Version Detection)、操作系统侦测(Operating System Detection)。这四项功能之间,又存在大致的依赖关系。通常情况下顺序关系,如下图所示。
下面将详细介绍以上Nmap各功能之间的依赖关系。如下所示:
(1)首先用户需要进行主机发现,找出活动的主机。然后,确定活动主机上端口状况。
(2)根据端口扫描,以确定端口上具体运行的应用程序与版本信息。
(3)对版本信息侦测后,对操作系统进行侦测。
在这四项基本功能的基础上,Nmap提供防火墙与IDS(IntrusionDetection System,入侵检测系统)的规避技巧,可以综合应用到四个基本功能的各个阶段;另外Nmap提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。
3、主机发现(Host Discovery),即用于发现目标主机是否在线(Alive,处于开启状态)。
主机发现发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。
主机发现基本原理:(以ICMP echo方式为例)
Nmap的用户位于源端,IP地址192.168.0.5,向目标主机192.168.0.3发送ICMP Echo Request。如果该请求报文没有被防火墙拦截掉,那么目标机会回复ICMP Echo Reply包回来。以此来确定目标主机是否在线。
默认情况下,Nmap会发送四种不同类型的数据包来探测目标主机是否在线。
(1) ICMP echo request
(2) a TCP SYN packet to port 443
(3) a TCP ACK packet to port 80
(4) an ICMP timestamp request
依次发送四个报文探测目标机是否开启。只要收到其中一个包的回复,那就证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。
通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。而在某些特殊应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。
不管是作为辅助用法还是专门用途,用户都可以使用Nmap提供的丰富的选项来定制主机发现的探测方式。
-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sn: Ping Scan 只进行主机发现,不进行端口扫描。
-sP: Ping Scan 只进行主机发现,不进行端口扫描。
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
-PS[portlist]: 使用TCP SYN Ping扫描方式进行发现。
-PA[portlist]: 使用TCP ACK Ping扫描方式进行发现。
-PU[portlist]: 使用TCP UDP Ping扫描方式进行发现。
-PY[portlist]: 使用SCTP INIT Ping扫描方式进行发现。
-PR: ARP Ping Scan
-PE: 使用ICMP echo Ping扫描方式发现主机。
-PP: 使用ICMP timestamp Ping扫描方式发现主机。
-PM: 使用ICMP netmask Ping扫描方式发现主机。
-PO[protocollist]: 使用IP协议包探测对方主机是否开启(非ping扫)。
-n:表示不进行DNS反向解析(使用该选项的时候Nmap永远不对目标ip地址作反向域名解析)
-R:表示总是进行DNS解析(使用该选项的时候Nmap永远对目标ip地址作反向域名解析)。
-6: 扫描IPv6地址
—dns-servers <serv1[,serv2],…>: 指定DNS服务器。
—system-dns: 指定使用系统的DNS服务器
—traceroute: 路由跟踪(使用—traceroute选项即可进行路由追踪.)使用路由追踪功能可以帮助用户了解网络的同行情况,通过此选项可以轻松地查出从计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间.
其中,比较常用的使用的是-sn,表示只单独进行主机发现过程;-Pn表示直接跳过主机发现而进行端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项);-n,如果不想使用DNS或reverse DNS解析,那么可以使用该选项。
实验目的
了解Nmap工具的主机发现功能的使用
实验工具
Nmap
实验环境
客户机一台、服务器一台
一、Nmap主机发现
实验步骤
第一步:启动拓扑,打开kali2016并打开终端
第二步:输入命令 nmap 192.168.232.130
该扫描方式没有给出具体主机发现的选项,主要是针对IP或者域名进行扫描,扫描方式迅速,可以方便的发现目标端口的开放情况以及主机在线情况。
如果出现如下图的情况
则先ping一下该IP地址,此处为ping 192.168.232.130来查看网络的连通性,网络通之后再执行nmap命令。
第三步:输入命令 nmap -sP 192.168.232.130/24
Ping扫描方式,只进行ping扫描,然后显示在线的主机。扫描时只需要加入 -sP ,Nmap进行ping扫描,然后回显出做出响应的主机,使用该选项扫描可以轻易的获取目标信息而又不被轻易发现。在默认的情况下Nmap回发送一个ICMP回声请求和一个TCP报文到目标端口。ping扫描的 优点是不会返回太多的信息造成对结果的分析,并且这是一种非常高效的扫描方式。
第四步:输入命令 nmap -Pn 192.168.232.130
加入 -Pn,将所有指定的主机视作开启的,跳过主机发现的过程。
第五步:输入命令 nmap -PS -v 192.168.232.130
TCP SYN Ping 扫描发送了一个设置了SYN标志的空TCP报文。默认目标的端口80 (也可以通过改变nmap.h)文件中的DeFault-TCP-PROBE-PORT值进行设置,也可以通过”-PS22,23,25,80,115,3306,3389 “进行设定,每个端口被并发的扫描。
通常情况下,nmap默认使用TCP ACK 和ICMP Echo请求对目标进行是否存活的响应,当目标主机的防火墙阻止这些请求时,可以使用 TCP SYN Ping扫描对目标主机是否存活进行判断。
Nmap是通过SYN/ACK和RST响应来对目标主机是否存活进行判断,但在特定的情况下防火墙会丢弃RST包,这种情况下扫描的结果会不准确,这时需要指定一个端口或者端口范围来避免这种情况。
例如输入命令:nmap -PS80,100-200 -v 192.168.232.130
第六步:输入命令 nmap -PA -v 192.168.232.130
TCP ACK Ping扫描,这种探测方式可以探测阻止SYN包或者ICMP Echo请求的主机。
可以同时使用 -PA -PS
nmap -PA -PS 192.168.232.130
第七步:输入命令 nmap -PU -v 192.168.232.130
UDP Ping 扫描是发送一个空的UDP报文到指定的端口,如果不指定端口则默认40125
使用UDP ping扫描时Nmap会发送一个空的UDP包到目标主机,如果目标主机响应则返回一个ICMP端口不可达错误,如果目标主机不是存活状态则会返回各种ICMP错误信息。
二、Nmap 端口扫描
Nmap的6种端口状态:
Open:开放状态
Closed:关闭状态
Filtered: 过滤状态(可能被过滤,可能网络阻塞)
Unfiltered:未被过滤状态(可以访问,但未知端口处于开放还是关闭状态)
Open|Filtered:开放还是过滤的
Closed|Filtered:不能确定端口事关闭还是被过滤的
-T 时序选项
-p|-F|-r 常用扫描方式
-sS TCP SYN扫描:(需要root权限)
-sT TCP连接扫描:完整三次握手,最基础最稳定的扫描方式
-sU UDP扫描(速度非常慢,一般用-p指定端口范围以节约时间)
-sN/sF/sX 隐蔽扫描
-sA TCP ACK扫描
-sW TCP窗口扫描
-sM TCP Maimon扫描
–scanflags 自定义TCP扫描
-sI 空闲扫描
-sO IP协议扫描
-b * FTP Bounce扫描
时序选项:
-T0(偏执的):非常慢的扫描,用于IDS逃避
-T1(鬼祟的):缓慢的扫描,用于IDS逃避
-T2(文雅的):降低速度以降低对带宽的消耗,一般不同
-T3(普通的):默认,根据目标的反应自动调整时间
-T4(野蛮的):快速扫描,常用,需要在很好的网络环境下进行扫描,请求可能会淹没目标
-T5(疯狂的):极速扫描,以牺牲准确度来提升扫描速度
实验步骤
第一步:启动拓扑,打开kaili2016并打开终端
第二步:常用扫描方式
(1)指定端口扫描:
nmap -p 80 192.168.232.130
如图,直接输入nmap -p 80 192.168.232.130的时候提示Host seems down。我们可以通过ping命令来确定网络的连通性,此处使用的命令是ping 192.168.232.130,发现可以ping通,即网络是通的,使用Ctrl+z停止执行ping命令。再使用nmap -p 80 192.168.232.130命令的时候就可以出现正确的结果了。
ping 192.168.232.130(使用Ctrl+z停止执行ping命令)
nmap -p 80-1000 192.168.232.130
(2)TCP SYN扫描:
ping 192.168.232.130(使用Ctrl+z停止执行ping命令)
nmap -sS 192.168.232.130
又称为半开放(需要root权限),常见扫描方式,扫描速度较快,由于未进行TCP连接,比较隐蔽,很难背防火墙或管理员发现
(3)隐蔽扫描
ping 192.168.232.130(使用Ctrl+z停止执行ping命令)
nmap -sN 192.168.232.130
-sN是Null扫描
ping 192.168.232.130(使用Ctrl+z停止执行ping命令)
nmap -sF 192.168.232.130
-sF是Fin扫描(发送FIN包)
ping 192.168.232.130(使用Ctrl+z停止执行ping命令)
nmap -sX 192.168.232.130
-sX是Xmas扫描(将数据包的FIN/PSH/URG都标记为1)
(4)TCP ACK扫描
ping 192.168.232.130(使用Ctrl+z停止执行ping命令)
nmap -sA 192.168.232.130
致命缺点:无法确定端口是否开放还是被过滤
三、指纹识别与探测实践
1、 版本探测
打开终端,输入nmap –sV 192.168.232.130,可以看到目标主机的版本信息如下图所示:
借助-A选项进行操作系统探测和版本探测.结果信息更详细和直观.
输入nmap –sV –A 192.168.232.130如下图
2 全端口版本探测
输入Nmap –sV –allports 192.168.232.130,如下图
我们用此命令就可以看到目标主机所有开放的端口。
3 设置扫描强度
-version -intensity 设置扫描强度(赋予的值越高,服务越有可能被正确识别,但是时间也较长,强输入度在0~9之间,默认强度是7,0代表最低强度,9代表最高强度.)
输入nmap –sV –version –intensity 5 192.168.232.130 结果如下图所示
-version-light 轻量级扫描(-version-intensity有0~9的测试等级,-version-light则是对应的-version-intensity 2的快捷方式,轻量级扫描会节省时间,但是准确性会降低.使用以下选项可以节约部分时间和不会牺牲太多准确性.)
输入 nmap –sV –version –light 192.168.232.130 结果如下图
我们看到,扫描时间是22.27″
-version-all 重量级扫描 (-version-all则是对应的-version-intensity 9的快捷方式)
输入nmap –version –all 192.168.232.130结果如下
重量级扫描耗时较长26.70″,但是扫描结果跟轻量级扫描的结果是一样的,由此可见,大多数情况下轻量级扫描即可满足我们地需求,也提高了效率。
4 操作系统探测
输入nmap –O 192.168.232.130 结果如下
我们可以看到目标主机的操作系统是 windows XP的
–osscan-limit 对指定的目标进行操作系统检测(该选项仅在使用-O或-A进行操作系统检测时起作用.)
输入nmap -O –osscan -limit 192.168.232.130
–osscan-guess 推测系统版本(当无法准确识别的时候,nmap会从最接近数据中取值,大胆的猜测目标系统.)
输入nmap -O --osscan-guess 192.168.232.130
我们可以看到,推测出的系统也是windows XP的
实验内容二:在本机使用finalshell远程登陆虚拟机中的kali系统,实践并记录登陆过程。