Nmap基础入门

Posted 一只猪的思考

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nmap基础入门相关的知识,希望对你有一定的参考价值。

一、Nmap介绍与下载地址

Nmap是一款开源、免费的网络探测、安全审计工具
通过Nmap探测服务器存活以及开放的服务,以及对目标进行安全审计

下载地址:
Nmap官网:https://nmap.org

二、Nmap列举远程机器开放的端口

原理

示列:

  • 使用 nmap scanme.nmap.org 来列举网站的端口信息,以下给出zenmap的扫描结果,也可以使用命令行下的nmap来探测。
  • nmap进行探测之前要把域名通过DNS服务器解析为工P地址,我们也可以使用指定的DNS服务器进行解析。使用–dns-servers参数来指定。

  • 对于已经知道主机存活或者防火墙开启的机器,可以使用-Pn参数来停止探测之前的ICMP请求。已达到不触发防火墙安全机制。
  • 对于默认的端口范围,并不能满足日常工作需要。可以使用-p m-n来指定探测端口范围为m-n之间的所有端口。

nmap扫描技术查看
在命令行中,输入nmap -h来查看nmap自带的帮助信息。

三、端口状态

  • Open 表示端口处于开放状态 ;
  • Closed 表示端口处于关闭状态;
  • Filterd 表示端口处于过滤无法收到返回的probe状态;
  • UnFilterd 表示端口收到返回的probe,但是无法确认;
  • Opend/UnFilterd 表示端口处于开放或者是过滤状态;
  • Closed/UnFilterd 表示端口处于关闭或者未过滤状态。

四、识别目标机器上服务的指纹

4.1 服务指纹

为了确保有一个成功的渗透测试或网络设备监控,必须需要知道目标系统中服务的指纹信息。服务指纹信息包括服务端口服务名版本等。

通过分析目标往Nmap发送的数据包中某些协议标记选项数据,我们可以推断发送这些数据包操作系统等。

nmap通过向目标主机发送多个UDPTCP数据包并分析其响应来进行操作系统指纹识别工作

4.2 Nmap识别服务指纹

  • 使用命令 nmap -sV IP 地址来识别目标机器的服务信息。

4.3 Nmap侵略性探测

  • 使用命令 nmap –A –v –T4 IP地址 来探测目标机器的操作系统、服务等信息。

  • 使用 nmap -sC -sV -O IP地址 来探测目标机器的操作系统、服务等信息。

其中 sC 参数表示使用Nmap脚本进行探测,sV 表示探测目标机器上的服务信息O表示探测目标机器的操作系统信息-sC: equivalent to --script=default

五、发现局域网中存活主机

一个局域网中肯定是连接着多台设备,那么我们如何获取哪些设备正在开机状态呢?

使用 ping ip地址进行探测,但是如果一个网络很大的情况下,这样的手工探测显得很费劲

可以使用不同的工具来进行批量探测,在探测之前需要明白CIDR的含义。

CIDR (无类别域间路由,Classless Inter-Domain Routing), 可以快速表示一个网络。

比如 : 172.16.1.1/24 表示在 172.168.1.1-172.16.1.255之间的所有主机IP地址。

实际使用场景:

  • 使用Nmap命令: nmap -sP CIDR 对该网络中所有主机进行ping扫描,以探测主机存活性。扫描过程中使用了TCP SYN扫描ICMP echo Request来探测主机存活。

  • 使用Nmap命令: nmap -sn CIDR 对该网络中所有主机进行ping扫描,以探测主机存活性。

输出结果

  • 使用Nmap命令: nmap –sn CIDR –oX test.xml 对该网络中所有主机进行ping扫描,以探测主机存活性。
    同时将结果输出到test.xml文件中,以便后续使用。

六、端口探测技巧

实际场景:

  • 在实际环境中,当系统管理员对设备进行管理时,或者渗透测试人员对设备进行检测时,并不一定对所有的服务进行操作。极有可能是对某个或某个范围内的服务进行检测。

  • 如果对所有服务进行探测,那么就会出现耗时长,费力不讨好的情况。针对这样的情况,我们很有必要了解如何使用Nmap来更加灵活的进行服务探测,避免全端口探测对服务器造成压力。

端口探测技巧:
对某个端口进行探测 nmap –p80 scanme.nmap.org

对某几个端口进行探测 nmap –p80,135 scanme.nmap.org

对某个范围端口进行探测 nmap –p1-100 scanme.nmap.org

对所有端口进行探测 nmap –p- scanme.nmap.org

指定协议探测端口 nmap –p T:25,U:53 scanme.nmap.org

通过协议名来扫描端口 nmap –p smtp scanme.nmap.org

通过名称范围扫描 nmap –p s* scanme.nmap.org

扫描注册在nmap中的端口 nmap –p [1-65535]scanme.nmap.org

七、NSE脚本使用

7.1 介绍

NSE(Nmap Script Engine) Nmap脚本引擎,内置很多可以用来扫描的、针对特定任务的脚本。通过NSE可以不断拓展Nmap的扫描策略,加强Nmap的功能。

Nmap中使用 --script 参数来指定调用的脚本,并且脚本存储在Nmap安装路径下的script文件夹下,对于 kali Linux存储在 /usr/share/nmap/script/下。

7.2 NES的使用

  • 使用Nmap探测 Web服务的title信息。 - nmap --script 脚本名称 目标
    以上通过Nmap使用http-title脚本进行探测,还可以使用其他脚本进行探测。目前为止可以用的有589个脚本,每个脚本都有其独特的作用。
  • 使用Nmap探测 http服务的http头。
    -nmap --script http-headers 目标

  • 对于目标使用多个分类脚本进行探测,可以更快的找到目标的信息与弱点。
    使用Nmap中漏洞分类脚本对目标进行探测,使用命令如下:
    -nmap -sV --script vuln 目标
  • 使用Nmap中发现和版本信息分类进行探测,使用命令如下:
    -nmap -sV --script=“version,discovery” 目标
  • 使用Nmap除了exploit分类之外的其他分类进行探测,使用命令如下:
    -nmap -sV --script=”not exploit” 目标
  • 使用Nmap中http* 的脚本,但是除了(http-brute和http-slowlors),使用命令如下:
    -nmap -sV --script “(http*) and not (http-slowlors and http-brute)” 目标

7.3 NSE调试功能使用

  • 使用Nmap中exploit,但是在使用的同时开启调试模式。使用命令如下:
    -nmap -sV --script exploit -d 3 --script-trace 目标

注意: -d(debug 范围0~9)

7.4 NSE 参数的使用

使用nmap的http-title脚本,并且指定使用对应的User-Agent。命令如下:
nmap -sV --script http-title --script-args http.useragent=“Mozilla 999”

7.5 NES跟新

nmap --script-updatedb

7.6 NSE 脚本分类

八、使用特定网卡进行探测

情节介绍:

Nmap是一款可拓展性强的工具,并且有些NSE脚本支持嗅探。但是这种功能需要网卡支持混杂模式才可以。或者当计算机上有两张网卡,并且两张网卡对应的不同网络。

Nmap中提供了切换使用特定网卡进行探测的参数 -e

使用:
使用Nmap命令行: nmap -e interface CIDR

九、对比扫描结果 ndiff

情景介绍:

对某个网路进行探测的时候,有可能之前有探测过的结果,现在探测过后,需要对之前的结果与现在的结果来对比,找到两次不同点。
监视网络变化,达到网络监控的目的。

工具ndiff介绍:

在Nmap整个工程中,除了主要的nmap工具之外,还包括很多其他工具。如接下来要使用到的ndiff工具。

比较Nmap两次扫描结果:

使用命令: ndiff.exe File1 File2 (File1和File2是Nmap扫描结果的xml格式。-oX)

以上是关于Nmap基础入门的主要内容,如果未能解决你的问题,请参考以下文章

Burpsuite Sqlmap Nmap入门总结

Unix操作系统的入门与基础

Nmap从入门到再入门

Nmap脚本引擎NSE

Nmap 使用技巧及其攻略

「Python」python-nmap安装与入门