nmap

端口扫描在百度百科上的定义是:html

端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关),可是端口扫描不但能够为黑客所利用,同时端口扫描仍是网络安全工做者的必备的利器,经过对端口的扫描,了解网站中出现的漏洞以及端口的开放状况,对网站安全方面有着不可或缺的贡献,是你学习网络安全的第一门课程的首选linux

目前在市面上主要的端口扫描工具是X_Scan、SuperScan、nmap,其中在这里主推的是nmap,由于nmap具备如下的这一些优势:编程

一、多种多样的参数,丰富的脚本库,知足用户的我的定制需求,其中脚本库还提供了不少强大的功能任你选择windows

二、强大的可移植性,基本上能在全部的主流系统上运行,并且代码是开源的安全

三、详细的文档说明,和强大的社区团队进行支持,方面新人上手服务器

Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具,可是nmap也是有一些缺点的,好比说上手较难,可是难上手是相对的,与其余达到这种功能性的软件产品相比,仍是比较容易上手的,可是这也不妨碍nmap成为世界千万安全专家列为必备的工具之一,在其中的一些影视做品中《黑客帝国2》、《特警判官》中都有亮相网络

废话很少说,开始今天的nmap学习:tcp

nmap的安装:直接从百度上下载,而后安装的步骤跟其余的软件同样,最后确认安装成功只须要在命令行中输入nmap回车,有相关的参数输出即为安装成功,安装的具体步骤能够查看:http://jingyan.baidu.com/article/5bbb5a1b1e0a7713eba179cb.html,在此就很少说了工具

Nmap包含四项基本功能:学习

  1. 主机发现(Host Discovery)
  2. 端口扫描(Port Scanning)
  3. 版本侦测(Version Detection)
  4. 操做系统侦测(Operating System Detection)

下面就从主机发现一步一步进行探讨

主机发现顾名思义就是发现所要扫描的主机是不是正在运行的状态,接下来就来一个简单例子

例子要求:获取http://nmap.org 的主机是否开启

输入命令:nmap -F -sT -v nmap.org

-F:扫描100个最有可能开放的端口   -v 获取扫描的信息   -sT:采用的是TCP扫描 不写也是能够的,默认采用的就是TCP扫描

运行以下:

由图中的1,咱们能够发现对URL进行解析花了16.5秒,这个地方花费的时间是能够进行优化的,优化的方法会稍后介绍

图中的2,是总共的运行时间

图中的3是说明有96个端口被屏蔽了,也就是说明了网站的防火墙是开启的,由于没有开启防火墙是不会对端口进行屏蔽的,

补充说明:

端口端口通常是有下面这几种状态的

状态 详细的参数说明
 Open  端口开启,数据有到达主机,有程序在端口上监控
 Closed  端口关闭,数据有到达主机,没有程序在端口上监控
 Filtered  数据没有到达主机,返回的结果为空,数据被防火墙或者是IDS过滤
 UnFiltered  数据有到达主机,可是不能识别端口的当前状态
 Open|Filtered  端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmas扫描中

 Closed|Filtered

 只发生在IP ID idle扫描

图中的4是本次返回的关键信息,其中咱们要主要关注的是端口号,端口状态,端口上的服务

那你可能就会要问为何要关注这些端口呢?那这个问题就要转到探讨为何要进行扫描?

扫描对于黑客和安全人员来讲,主要的流程是这样的

上面的图中的IP写错了,应该改成FTP

从这个图中咱们不难发现,咱们主要关注的区域就是这些内容

接下来就来讨论下面上面提出来的问题?怎样对URL解析的时间进行优化,在Nmap重提供了不进行解析的参数(-n),这样就不会对域名进行解析了

其中关于域名解析的相关参数还有:

-R 为全部的目标主机进行解析

--system-dns 使用系统域名解析器进行解析,这个解析起来会比较慢

--dns-server 服务器选择DNS解析

说到-R注释的意思你会有所体会,其实nmap的扫描解析不止是对一个目标主机进行解析,还能够对必定范围内的目标主机群进行解析

例如:查找45.33.49.119-120的主机的状态以及端口状态

分析:

一、虽然查找的主机的数量很少,可是这样查找起来也是很浪费时间的, 全部咱们能够经过使用快速查找的方法来节约时间

快速查找端口方法的原理以下:

默认的状况下,咱们的查找是查找最有可能开放的1000端口,可是使用快速端口查找(参数 -F )会查找最有可能开放的100个端口,这样也就节约了10倍的时间

 二、这里咱们须要获取端口的状态,因此就不能使用参数(-sn),这个参数是能够跳过端口扫描,直接进行主机发现的

输入命令:nmap -F -sT -v -n 45.33.49.119-120      45.33.49.119:nmap.org的IP地址

PS:一、-sn参数只能扫描的主机,不能扫描端口,另外一个参数也要特别注意的是(-PE)经过ICMP echo断定主机是否存活

运行状况以下:

图片中的1处指的是,采用sT的扫描方法,这种扫描方法准确,速度快,可是这样的扫描容易被防火墙和IDS发现并记录,因此这种方法,实际中并很少用

由图中的3处咱们能够知道在不进行解析的状况下扫描用时为26.92秒,比解析的时候用的时间节约了很多

图中的4说明了扫描了2个主机,而后只有一个主机为开启

 提示:

在nmap运行的时候,若是咱们能够像其余编程同样打“断点”,直接按键盘的d键就好了,若是想知道运行的进度能够按下X键

好了,示例也讲完了,下面咱们就来分析一下扫描的各类方法:

端口扫描

一、TCP扫描(-sT)

这是一种最为普通的扫描方法,这种扫描方法的特色是:扫描的速度快,准确性高,对操做者没有权限上的要求,可是容易被防火墙和IDS(防入侵系统)发现

运行的原理:经过创建TCP的三次握手链接来进行信息的传递

① Client端发送SYN;

② Server端返回SYN/ACK,代表端口开放;

③ Client端返回ACK,代表链接已创建;

④ Client端主动断开链接。

 二、SYN扫描(-sS)

这是一种秘密的扫描方式之一,由于在SYN扫描中Client端和Server端没有造成3次握手,因此没有创建一个正常的TCP链接,所以不被防火墙和日志所记录,通常不会再目标主机上留下任何的痕迹,可是这种扫描是须要root权限(对于windows用户来讲,是没有root权限这个概念的,root权限是linux的最高权限,对应windows的管理员权限)

运行的原理图以下:

三、NULL扫描

NULL扫描是一种反向的扫描方法,经过发送一个没有任何标志位的数据包给服务器,而后等待服务器的返回内容。这种扫描的方法比前面说起的扫描方法要隐蔽不少,可是这种方法的准确度也是较低的, 主要的用途是用来判断操做系统是否为windows,由于windows不遵照RFC 793标准,不论端口是开启仍是关闭的都返回RST包

可是虽然NULL具备这样的一些用处,可是本人却认为不宜使用NULL

一、NULL方法的精确度不高,端口的状态返回的不是很准确

二、要获取目标主机的运行系统,可使用参数(-O),来获取对于一些操做系统没法准确判断的,能够加上参数(-osscan-guess)

三、NULL扫描易被过滤

四、FIN扫描

FIN扫描的原理与NULL扫描的原理基本上是同样的在这里就不重复了

五、ACK扫描

ACK扫描的原理是发送一个ACK包给目标主机,不论目标主机的端口是否开启,都会返回相应的RST包,经过判断RST包中的TTL来判断端口是否开启

运行原理图:

TTL值小于64端口开启,大于64端口关闭

大体上主要的扫描方法就是这些,除了咱们能够按照这样些参数去执行扫描外,还能够本身定义一个TCP扫描包

六、自定义TCP扫描包的参数为(--scanflags)

例如:定制一个包含ACK扫描和SYN扫描的安装包

命令:nmap --scanflags ACKSYN nmap.org

 好了,接下来还有各类扫描方法的端口列表参数

-PS 端口列表用,隔开[tcp80 syn 扫描]
-PA 端口列表用,隔开[ack扫描](PS+PA测试状态包过滤防火墙【非状态的PA能够过】)【默认扫描端口1-1024】
-PU 端口列表用,隔开[udp高端口扫描 穿越只过滤tcp的防火墙]

其余的常见命令

输出命令

-oN 文件名 输出普通文件

-oX 文件名 输出xml文件

错误调试:

--log-errors 输出错误日志

--packet-trace 获取从当前主机到目标主机的全部节点

其余的相关参数能够参考:http://www.2cto.com/Article/201203/125686.html 到时候须要再进行查找

相关资料:

http://www.tuicool.com/articles/ZBvmYrN

http://www.2cto.com/Article/201203/125686.html

相关文章
相关标签/搜索