实验 名称 | NMAP网络扫描器 | 成绩评定 | |||||
所用 仪器 材料 | win10 NMAP | ||||||
实 验 目 的 或 要 求 | 一、实验目的 深入Nmap网络扫描器的原理,并通过使用Nmap发现目标主机、开放端口、服务类型、版本和操作系统,进行nmap脚本及库文件编写,深入掌握网络扫描器的作用,达到以下要求: 1.深入掌握信息探测技术中的nmap网络扫描器原理,掌握常用网络服务对应的端口号。 2.熟练使用nmap常用参数对网络环境进行扫描,并通过扫描结果对目标进行分析。 3.掌握nmap脚本的基本使用方法和开发方法,理解并掌握nmap的API和库文件的使用。 二、实验步骤 (1)安装Nmap 双击nmap-7.92-setup.exe安装,在安装过程中,保持默认设置,按照提示进行安装即可。 (2)Zenmap应用 (2.1)单机扫描 在虚拟机上打开Zenmap,在目标框中输入预先使用cmd中ipconfig命令查看的物理主机的ip地址192.168.101.11进行扫描 由第三张图标示处得,该IP地址最有可能的OS类型为Microsoft Windows XP SP3 (98%), Microsoft Windows XP SP3 or Windows 7 or Windows Server 2012 (97%),……………… | ||||||
附 原 始 实 验 记 录 | 接着将配置改为:Intensescan,allTCPports,重新对目标192.168.101.11进行扫描,与之前的进行对比 (2.2)网段扫描 在扫描目标中输入:192.168.101.0/24,将配置改为:Intense scan, all TCP ports,然后运行扫描任务,扫描任务停止后即可查看返回结果。 存活的主机IP有:192.168.101.1,192.168.101.2,192.168.101.3,192.168.101.4,192.168.101.5 192.168.101.6,192.168.101.11 以及有SSH服务的IP有哪些?没有IP有ssh服务 (3)Nmap命令行的使用 打开CMD命令提示符,在CMD命令提示符窗口中输入“nmap”命令 判断对应IP地址:192.168.101.11的操作系统,则nmap命令为:nmap-O-T5 192.168.101.11 若不在目标主机上留下连接痕迹,nmap的命令为:nmap-sS 192.168.101.11 若要扫描目标主机的所有端口,命令为:nmap-p 1-65535 192.168.101.11 (4)nmap脚本的使用 4.1)使用--script、--script-help选项的脚本扫描: 使用命令查看http-methods脚本的使用方法nmap --script-help http-methods, 再使用http-methods脚本查看对应主机webserver支持的httpmethods 由扫描后的结果可得支持HTTP协议的请求方式有:GETHEADPOST 4.2)使用 --script-args选项的脚本扫描: 使用wireshark抓取该命令的扫描请求报文 可以看到在user-agent中有nmap的特征“nmapscriptingengine” (4.3)理解Nmap脚本扫描的细节 通过命令:nmap –-script-trace –-script=http-methods 192.168.101.11 (4.4)简单Nmap脚本开发 根据实验所要求的在scripts目录下创建一个test.nse文件 并在cmd中运行命令nmap –scripttest 127.0.0.1 再根据要求编辑一个test-simple.nse文件 执行命令 nmap--script test-simple 127.0.0.1 (5)基于Halcyon的nmap脚本开发 5.1)安装jdk、启动并配置Halcyon: 安装并配置 重启Halcyon |
5.2)创建nse模板文件、查看Halcyon的布局:
Create new 一个nse文件
5.3)Halcyon模板代码生成功能、利用Halcyon编写nmap脚本:
删掉插入的代码,编写一个实现对web服务器的检测功能的nmap脚本
保存后,在CDM中执行命令:nmap --script=demo www.baidu.com
(6)Nmap的API和库文件的使用:
(6.1)理解并使用Nmap关于主机信息的API:
首先启动Halcyon,再在nmap安装目录的scripts文件夹下创建一个名为apitest.nse的脚本并将portrule改为hostrule,若我们想要得到的是mac_addr,所以在action中,使用return返回host.mac_addr
在cmd中执行命令:nmap --script apitest 192.168.101.1
引入stdnse库
再次在cmd中执行命令:nmap --script apitest 192.168.101.1
问题4:请根据上述方法测试host的字段host.directly_connected,测试对象为自己主机网关和百度,并分别回答返回结果。
在nmap安装目录的script目录里新建一个脚本文件answer.nse并把portrule改为hostrule,在action区域增加代码return host.directly_connected
在cmd中分别执行命令:nmap --script=answer 192.168.101.1 和
nmap --script=answer www.baidu.com
本机网关:
百度:
测试对象为自己主机网关时返回结果为true,测试对象为百度时返回结果为:false
6.2)理解并使用Nmap关于端口信息的API:
根据实验要求修改apitest.nse代码如下
在cmd中执行命令:nmap --script=apitest www.baidu.com
6.3)理解并编写Nmap的库文件:
在nmap安装目录的nselib文件夹下,新建一个名为mylib.lua的库文件
在nmap安装目录的script文件夹下创建一个名为apitestlib.nse脚本,在其中导入mylib.lua库文件,在action部分调用PrintPort函数,保存并Update Script DB。
在cmd执行命令nmap --script apitestlib baidu.com
七、分析与思考:
1)在使用Nmap扫描时,TCP connect()扫描(-sT)与TCP SYN扫描(-sS)有什么区别?
TCP connect()需要建立完整的连接
而TCP SYN仅仅发送SYN包而不用建立完整的连接
2)Nmap对局域网中主机扫描与互联网扫描有什么区别?Nmap在进行扫描时,应该怎样选择相应参数?
Nmap扫描局域网中的主机的速度比扫描互联网的速度更快而且在局域网内更安全
在选择相应参数时,应该根据你所想获得的信息类型以及你想要使用的扫描方法去选择对应参数,比如:想要知道目标主机的操作系统就应该选用-O参数,想用半开扫描就使用SYN scan的参数-sS
3)如果你是网络管理员,为了防止其他人扫描你管理的服务器以获取信息,有哪些解决办法?
1.减少外界访问重要信息的权限
2.建立好防火墙
3.访问某些重要信息时只能通过内网IP进行访问