怎么做网站卖机床/网站多久被百度收录
目录
- 预备知识
- 关于nmap
- 实验目的
- 实验环境
- 实验步骤一
- 实验步骤二
- 实验步骤三
预备知识
关于nmap
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
实验目的
通过该实验了解nmap脚本的使用。
实验环境
kali,IP地址:随机分配
win,IP地址:10.1.1.100
实验步骤一
在使用nmap时,通过在命令中加–scritp就可以调用nmap的脚本来配合扫描。Nmap自带后已经安装了很多脚本,kali中的路径如下所示:
脚本扩展分类包括:
auth 处理身份验证
broadcast 网络广播
brute 暴力猜解
default 默认
discovery 服务发现
dos 拒绝服务
exploit 漏洞利用
external 外部扩展
fuzzer 模糊测试
intrusive 扫描可能造成不良后果
malware 检测后门
safe 扫描危害较小
version 版本识别
vuln 漏洞检测
可以使用种类的名字调用该分类下的全部脚本,比–scritp vuln,不过这比较费时间,在此就不演示了。
我们来演示单个的,比如以自带的http-methods脚本为例。
首先我们要知道脚本的用法,所以需要用到–script-help。
如下所示–scritp-hep后面指定脚本名称即可:
nmap --script-help=http-methods 10.1.1.100
接下来使用该脚本:
nmap --script=http-methods 10.1.1.100
使–script加载该脚本,在结果中会打印出支持的http方法。
我们在脚本库中看到和http相关的脚本都是以http-的方式命名的,其他的也是一样,比如与ssh相关的都是以ssh-的方式命名。
那么我们就可以使用通配符“*”来对目标机器检测时使用所有的与某种相关的脚本,比如使用所有与rpc相关的脚本。
nmap --script "rpc-*" 10.1.1.100
实验步骤二
在使用脚本时,如果脚本支持,我们还可以通过–script-args传入参数,还是以http-method为例,我们知道一些网站会通过判断user-agent来判断请求是否合法,那nmap在请求时有没有带上自己的特征呢?
我们打开wireshark抓包,同时启动下面的命令看看:
nmap --script=http-methods 10.1.1.100
抓包如下:
右键跟踪http流:
可以看到在user-agent中有nmap的标志“nmap scripting engine”,如果目标站点根据这个标志拒绝nmap的请求时该怎么办呢?
此时我们就可以通过–script-args修改useragent。
命令如下:
nmap --script=http-methods --script-args http.useragent="Mozilla 42" 10.1.1.100
抓包可以看到此时的useragent已经和我们在命令中传入的一样了:
实验步骤三
那么我们不仅限于使用,还想知道这其中的细节呢?我们可以使用–script-trace打印出所有收发的数据:
nmap --script-trace --script=http-methods 10.1.1.100
使用–packet-trace查看所有发送和收到的数据包:
nmap --packet-trace --script=http-methods 10.1.1.100
也能使用-d进入调试模式,-d后面需要跟数字(1-9),数字越大,输出越详细。
以-d3为例,如下图所示:
nmap -d3 --script=http-methods 10.1.1.100
这些脚本用起来很方便,难道你不想动手试一下吗?
在自己写之前,我们先以http-method这个脚本为例看看主体结构是什么样的:
cat http-methods.nse
可以看到一个完整的NSE包括如下几个部分:
description字段:这部分内容是介绍该脚本的功能:
categories给出了该nse所在的分类:
action字段,脚本具体的执行内容,当脚本通过rule字段的检查被触发执行时,就会调用action字段定义的函数:
rule字段,描述脚本执行的规则,也就是确定脚本触发执行的条件,这个规则是一个lua函数,返回值只有true和false两种,只有返回true时,action中的函数才会执行:
Nmap的扩展脚本语言都基于lua来开发的,执行也是调用了内部封装的lua解释器。正常情况下,调用任何一个扩展脚本会首先执行nse_main.lua,该脚本主要做了以下几件事:
加载一些Nmap的核心库(nselib文件夹中)
定义多线程函数
定义输出结果处理函数
读取、加载扩展脚本
定义扩展脚本函数接口
执行扩展脚本
……
扩展脚本执行的规则在nse_main.lua中有定义:
prerule:在扫描任何主机之前,prerule函数运行一次。
hostrule:在扫描一个主机后运行一次。
portrule:在扫描一个主机的端口后运行一次。
postrule:在全部扫描完毕以后运行一次。
这个结论很好验证,写一个脚本就行了:
测试如下:
nmap --script test 10.1.1.100
也就是说,prerule和postrule是在开始和结束运行,并且只运行一次,hostrule是扫描一个主机就运行一次,有N个主机就会运行N次,portrule是扫描到一个端口就运行一次,有N个端口就运行N次。
以http-method为例,只有一个portrule,就是先端口扫描,再运行。
了解了这些基础后,我们可以写一个简单的nse脚本测试:
测试结果如图: