nmap端口扫描初识(一)

什么是端口扫描

端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关),但是端口扫描不但可以为黑客所利用,同时端口扫描还是网络安全工作者的必备的利器,通过对端口的扫描,了解网站中出现的漏洞以及端口的开放情况,对网站安全方面有着不可或缺的贡献,是网络安全中的基础认知。   目前在市面上主要的端口扫描工具是X_Scan、SuperScan、nmap,其中在这里主推的是nmap,因为nmap具有以下的这一些优点:
  1. 多种多样的参数,丰富的脚本库,满足用户的个人定制需求,其中脚本库还提供了很多强大的功能任你选择
  2. 强大的可移植性,基本上能在所有的主流系统上运行,而且代码是开源的
  3. 详细的文档说明,和强大的社区团队进行支持,方便新人上手
  Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具,但是nmap也是有一些缺点的,比如说上手较难,但是难上手是相对的,与其他达到这种功能性的软件产品相比,还是比较容易上手的,但是这也不妨碍nmap成为世界千万安全专家列为必备的工具之一,在其中的一些影视作品中《黑客帝国2》、《特警判官》中都有亮相。

Nmap功能介绍

Centos Install:
# yum -y install nmap
Ubuntu Install:
# apt-get install nmap -y
Nmap包含四项基本功能:
  1. 主机发现(Host Discovery)
  2. 端口扫描(Port Scanning)
  3. 版本侦测(Version Detection)
  4. 操作系统侦测(Operating System Detection)
  下面我们介绍一下主机发现,主机发现顾名思义就是发现所要扫描的主机是否是正在运行的状态,接下来就来一个简单例子:获取http://baidu.com 的主机是否开启, 命令:nmap -F -sT -v baidu.com
  • -F:扫描100个最有可能开放的端口  
  •  -v 获取扫描的信息   
  • -sT:采用的是TCP扫描 不写也是可以的,默认采用的就是TCP扫描
 运行结果如下:[attach]1404[/attach]如上图所示1,我们可以发现对URL进行解析花了0.01秒,如果是国外网站这个地方花费的时间较多,可以进行优化的,优化的方法会稍后介绍图中所示2,是总共的运行时间图中的3是说明有98个端口被屏蔽了,也就是说明了网站的防火墙是开启的,因为没有开启防火墙是不会对端口进行屏蔽的。 端口的状态,一般有如下几种:[attach]1405[/attach]图中的4是本次返回的关键信息,其中我们要主要关注的是端口号,端口状态,端口上的服务。 那你可能就会要问为什么要关注这些端口呢?那这个问题就要转到探讨为什么要进行扫描?扫描对于黑客和安全人员来说,大致流程都是如下所示:[attach]1407[/attach]从这个图中我们不难发现,我们主要关注的区域就是这些内容,接下来就来讨论下,上面提出来的问题?怎样对URL解析的时间进行优化,在Nmap重提供了不进行解析的参数(-n),这样就不会对域名进行解析了其中关于域名解析的相关参数还有:
  • -R 为所有的目标主机进行解析
  • --system-dns 使用系统域名解析器进行解析,这个解析起来会比较慢
  • --dns-server 服务器选择DNS解析
说到-R注释的意思你会有所体会,其实nmap的扫描解析不止是对一个目标主机进行解析,还可以对一定范围内的目标主机群进行解析 例如:查找180.149.132.151-152的主机的状态以及端口状态,分析如下:1、虽然查找的主机的数量不多,但是这样查找起来也是很浪费时间的, 所有我们可以通过使用快速查找的方法来节约时间快速查找端口方法的原理如下:默认的情况下,我们的查找是查找最有可能开放的1000端口,但是使用快速端口查找(参数 -F )会查找最有可能开放的100个端口,这样也就节约了10倍的时间 2、这里我们需要获取端口的状态,所以就不能使用参数(-sn),这个参数是可以跳过端口扫描,直接进行主机发现的输入命令:nmap -F -sT -v -n 180.149.132.151-152     180.149.132.151:baidu.com的IP地址PS:1、-sn参数只能扫描的主机,不能扫描端口,另一个参数也要特别注意的是(-PE)通过ICMP echo判定主机是否存活运行情况如下:[attach]1408[/attach]图片中的1处指的是,采用sT的扫描方法,这种扫描方法准确,速度快,但是这样的扫描容易被防火墙和IDS发现并记录,所以这种方法,实际中并不多用由图中的3处我们可以知道在不进行解析的情况下扫描用时为4.53秒,比解析的时候用的时间节约了不少图中的4说明了扫描了2个主机  提示:在nmap运行的时候,如果我们可以像其他编程一样打“断点”,直接按键盘的d键就行了,如果想知道运行的进度可以按下X键

扫描方法

好了,示例也讲完了,下面我们就来分析一下扫描的各种方法:一、端口扫描1、TCP扫描(-sT)这是一种最为普通的扫描方法,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现运行的原理:通过建立TCP的三次握手连接来进行信息的传递[attach]1409[/attach]  2、SYN扫描(-sS)这是一种秘密的扫描方式之一,因为在SYN扫描中Client端和Server端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会再目标主机上留下任何的痕迹,但是这种扫描是需要root权限(对于windows用户来说,是没有root权限这个概念的,root权限是linux的最高权限,对应windows的管理员权限) 运行的原理图如下:[attach]1410[/attach] 3、NULL扫描NULL扫描是一种反向的扫描方法,通过发送一个没有任何标志位的数据包给服务器,然后等待服务器的返回内容。这种扫描的方法比前面提及的扫描方法要隐蔽很多,但是这种方法的准确度也是较低的, 主要的用途是用来判断操作系统是否为windows,因为windows不遵守RFC 793标准,不论端口是开启还是关闭的都返回RST包[attach]1411[/attach]但是虽然NULL具有这样的一些用处,但是本人却认为不宜使用NULL[list=1]
  • NULL方法的精确度不高,端口的状态返回的不是很准确
  • 要获取目标主机的运行系统,可以使用参数(-O),来获取对于一些操作系统无法准确判断的,可以加上参数(-osscan-guess)
  • NULL扫描易被过滤
  •  4、FIN扫描FIN扫描的原理与NULL扫描的原理基本上是一样的在这里就不重复了5、ACK扫描ACK扫描的原理是发送一个ACK包给目标主机,不论目标主机的端口是否开启,都会返回相应的RST包,通过判断RST包中的TTL来判断端口是否开启运行原理图:[attach]1412[/attach]TTL值小于64端口开启,大于64端口关闭大致上主要的扫描方法就是这些,除了我们可以按照这样些参数去执行扫描外,还可以自己定义一个TCP扫描包 6、自定义TCP扫描包的参数为(--scanflags)例如:定制一个包含ACK扫描和SYN扫描的安装包命令:nmap --scanflags ACKSYN baidu.com
    Starting Nmap 7.00 ( https://nmap.org ) at 2016-09-19 23:57 CSTNmap scan report for baidu.com (220.181.57.217)Host is up (0.010s latency).Other addresses for baidu.com (not scanned): 180.149.132.47 123.125.114.144 111.13.101.208Not shown: 998 filtered portsPORT    STATE SERVICE80/tcp  open  http443/tcp open  httpsNmap done: 1 IP address (1 host up) scanned in 5.41 seconds
    接下来还有各种扫描方法的端口列表参数:
    • -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.myhack58.com/Article/60/76/2015/67856.htm?utm_source=tuicool&utm_medium=referral

    0 个评论

    要回复文章请先登录注册