小白都能玩的明白的Nmap基础(二)

释放双眼,带上耳机,听听看~!

三、基础知识

3.1 什么是Nmap

Nmap — 网络探测工具和安全/端口扫描器

Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工 具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以 新颖的方式使用原始IP报文来发现网络上有哪些主机,哪些主机提供什么服务(应用程序名 和版本),哪些服务运行在什么操作系统(包括版本信息), 

它们使用什么类型的报文过滤器/ 防火墙,以及一堆其它功能。

虽然Nmap通常用于安全审核, 许多系统管理员和网络管理 员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划,以及监视 主机和服务的运行。   

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使 用的选项。 “所感兴趣的端口表格”是其中的关键。那张表列出端口号,协议,服务名称和 状态。

状态可能是 

open(开放的),

filtered(被过滤的),

 closed(关闭的),

或者unfiltered(未 被过滤的)。 

Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。 filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,

Nmap无 法得知 它是 open(开放的) 还是 closed(关闭的)。

 closed(关闭的) 端口没有应用程序在它上 面监听,但是他们随时可能开放。 

当端口对Nmap的探测做出响应,但是Nmap无法确定它 们是关闭还是开放时,这些端口就被认为是 unfiltered(未被过滤的) 如果Nmap报告状态组 合 open|filtered 和 closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一 个状态。 

当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议 扫描时 (­sO),

Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。   除了所感兴趣的端口表,

Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系 统猜测,设备类型,和MAC地址。

3.2 Nmap主要功能

主机探测   端口扫描   版本检测  

系统检测   支持探测脚本的编写(lua语言)

(1)首先用户需要进行主机发现,找出活动的主机。然后,确定活动主机上端口状况。   

(2)根据端口扫描,以确定端口上具体运行的应用程序与版本信息。  (3)对版本信息侦测后,对操作系统进行侦测。   在这四项基本功能的基础上,Nmap提供防火墙与IDS(IntrusionDetection System,入侵 检测系统)的规避技巧,可以综合应用到四个基本功能的各个阶段;另外Nmap提供强大的 NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。

3.3 Nmap扫描类型

ping扫描:用来检查是否与网络连通 | 端口扫描 | 

TCP SYN扫描:判断通信端口状态  

UDP扫描:用于扫描对方端口上是否有程序在运行 | 操作系统识别 | 隐蔽扫描   

SYN扫描和UDP扫描的区别

:https://blog.csdn.net/changjiangbuxi/article/details/21295175

3.4 扫描基础知识

当目标主机上使用了防火墙、路由器、代理服务或其它安全设备时,使用Nmap扫描结果可能会存 在一些偏差。或者当扫描的远程目标主机不在本地网络内时,也有可能会出现误导信息。 

 在使用Nmap实施扫描时,一些选项需要提升权限。

在Unix和Linux系统中,必须使用root登录或者 使用sudo命令执行Nmap命令。

3.5 法律边界问题

在实施网络扫描时,需要考虑一些法律边界问题。如下所示:

在扫描互联网服务提供商网络时(如政府或秘密服务器网站),如果没有被允许的话,不要进行扫 描。否则,会惹上法律麻烦。   全面扫描某些主机时,可能会导致主机崩溃、停机或数据丢失等不良结果。所以,在扫描关键任务 时要小心谨慎。

3.6 端口

端口范围为:0~65535   按端口号可分为3大类:   

(1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常 这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。   

(2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有 许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024 左右开始。   

(3)动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为 服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从 32768开始。

四、Nmap扫描

4.1 Nmap扫描单个主机

4.4 Nmap扫描随机目标

Nmap工具提供了一个­iR选项,可以用来选择随机的互联网主机来扫描。

Nmap工具将会随机的生 成指定数量的目标进行扫描。其中,语法格式如下所示:

nmap ­iR [主机数量]

一般情况下,不建议用户实施随机扫描。除非,你是在做一个研究项目。否则,经常实施随机扫描 可能会给自己的互联网服务提供商带来麻烦。

4.5 Nmap IP地址范围扫描

用户在指定扫描范围时,可以通过IP地址或子网的方式来实现。使用IP地址指定扫描范围的方法语 法格式如下所示:

nmap [IP地址范围]

在以上语法中,IP地址范围之间使用短连字符(­)。

4,6 Nmap 整个子网扫描

Nmap也可以使用CIDR(无类别域间路由,Classless Inter­Domain Routing)格式来扫描整个子 网。CIDR将多个IP网络结合在一起,使用一种无类别的域际路由选择算法,可以减少由核心路由器 运载的路由选择信息的数量。其中,语法格式如下所示:

nmap [CIDR格式的网络地址]

以上语法中的CIDR是由网络地址和子网掩码两部分组成,并且中间使用斜杠(/)分割。   使用Nmap扫描192.168.1.1/24整个子网中的所有主机。执行命令如下所示:

4.7 Nmap扫描排除扫描目标

当用户指定一个扫描范围时(如局域网),在该范围内可能会包括自己的主机,或者是自己搭建的 一些服务等。这时,用户为了安全及节约时间,可能不希望扫描这些主机。此时,用户就可以使 用–exclude命令将这些主机排除。其中,排除单个目标的语法格式如下所示:

nmap [目标]exclude [目标]

扫描192.168.1.1/24网络内除192.168.1.101以外的所有主机。执行命令如下所示:

root@localhost:~# nmap 192.168.1.1/24 --exclude 192.168.1.101 

用户使用–exclude选项,可以指定排除单个主机、范围或者整个网络块(使用CIDR格式)。

例 如,扫描192.168.1.1/24网络内,

除192.168.1.100­192.168.1.103之外的所有主机。

则执行命令如 下所示:

root@localhost:~# nmap 192.168.1.1/24 --exclude 192.168.1.100-103 

4.8 Nmap扫描排除列表中的目标

当用户排除扫描的目标很多时,也可以将这些目标主机的IP地址写入到一个文本文件中。然后,使 用–excludefile选项来指定排除扫描的目标。其中,排除扫描列表中目标的语法格式如下所示:

nmap [目标]excludefile [目标列表]

使用Nmap扫描192.168.1.0/24网络内主机,但是排除list.txt文件列表中指定的目标。具体操作步骤 如下所示:

(1)创建list.txt文件,并写入要排除扫描目标的IP地址。如下所示:

root@localhost:~#vi list.txt 

(2)实施扫描。执行命令如下所示:

root@localhost:~# nmap 192.168.1.0/24 --excludefile list.txt 

4.9 Nmap扫描实施全面扫描

在使用Nmap工具实施扫描时,使用不同的选项,则扫描结果不同。用户可以使用不同的选项,单 独扫描目标主机上的端口、应用程序版本或操作系统类型等。但是,大部分人又不太喜欢记这些选 项。这时候,用户只需要记一个选项­A即可。该选项可以对目标主机实施全面扫描,扫描结果中包 括各种类型的信息。其中,实施全面扫描的语法格式如下所示:

nmap ­A [目标]

【示例2­12】使用Nmap工具对目标主机192.168.1.105实施全面扫描。则执行命令如下所示:

从以上输出的信息,可以明显看出比前面例子扫描结果更详细。在以上输出信息中,可以看到目标 主机上开启的端口、服务器、版本、操作系统版本、内核、系统类型等。

五、Nmap命令

5.1 Nmap主机发现

详解 :https://blog.csdn.net/github_35068711/article/details/51530422

通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。而在某些特殊 应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。

无ping扫描:常用于防火墙禁止ping的情况,可穿透防火墙   

TCP SYN Ping扫描(默认80号端口,nmap通过SYN/ACK和RST的响应来判断,防火墙可能会丢弃RST 包)   

TCP ACK Ping扫描(很多防火墙会封锁SYN报文,此时可以使用TCP ACK ping扫描)   

ARP Ping扫描(一般用于扫描局域网)   禁止反向域名解析(永远不对目标ip地址作反向域名解析,单纯扫描一段ip时,使用该选项可以减少扫 描时间)   路由跟踪(需要root权限)  

 SCTP INIT Ping扫描(流控制传输协议,向目标发送INIT包,需要root权限)

­sL (列表扫描)   列表扫描是主机发现的退化形式,它仅仅列出指定网络上的每台主机,不发送任何报文到目标主 机。默认情况下,Nmap仍然对主机进行反向域名解析以获取它们的名字。简单的主机名能给出的 有用信息常常令人惊讶。

­sP (Ping扫描)   该选项告诉Nmap仅仅进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。

­P0 (无ping)   该选项完全跳过Nmap发现阶段。 通常Nmap在进行高强度的扫描时用它确定正在运行的机器。 默 认情况下,Nmap只对正在运行的主机进行高强度的探测如 端口扫描,版本探测,或者操作系统探 测。用­P0禁止主机发现会使Nmap对每一个指定的目标IP地址进行所要求的扫描。­P0的第二个字 符是数字0而不是字母O。 和列表扫描一样,跳过正常的主机发现,但不是打印一个目标列表, 而 是继续执行所要求的功能,就好像每个IP都是活动的。

­n (不用域名解析)   告诉Nmap 永不对它发现的活动IP地址进行反向域名解析。

­R (为所有目标解析域名)   告诉Nmap永远对目标IP地址作反向域名解析。一般只有当发现机器正在运行时才进行这项操作。

­system­dns (使用系统域名解析器)   默认情况下,Nmap通过直接发送查询到您的主机上配置的域名服务器来解析域名。

为了提高性能,许多请求 (一般几十个 ) 并发执行。如果您希望使用系统自带的解析器,就指定该选项 (通过 getnameinfo()调用一次解析一个IP)。除非Nmap的DNS代码有bug–如果是这样,请联系我们。一 般不使用该选项,因为它慢多了。系统解析器总是用于IPv6扫描。

实例   探测局域网内活动主机   

扫描局域网192.168.1.100­192.168.1.120范围内哪些IP的主机是活动的。   命令如下: 

 nmapsn 192.168.1.100­120

5.2 端口扫描

详解 :https://blog.csdn.net/github_35068711/article/details/51530422 

open 表示服务正在监听这个端口上的连接   

close 表示已经收到探测,但是这个端口没有服务运行  

 filterd 表示没有收到探测信息,无法建立连接,同时表明探针可能被一些过滤器(防火墙) 终止了  

 unfiltered 表示端口对探测做出相应,但是nmap无法确定它们是关闭还是开发。   

open/filtered 端口被过滤或者开放的

nmap无法做出判断。  

 close/filtered 端口被过滤或者是关闭,nmap无法做判断

时序选项:  

 ­T0(偏执的):非常慢的扫描,用于IDS逃避   

 T1(鬼祟的):缓慢的扫描,用于IDS逃避  

 T2(文雅的):降低速度以降低对带宽的消耗,一般不同  

 ­T3(普通的):默认,根据目标的反应自动调整时间   ­

T4(野蛮的):快速扫描,常用,需要在很好的网络环境下进行扫描,请求可能会淹没目标  

 ­T5(疯狂的):极速扫描,以牺牲准确度来提升扫描速度   nmap ­T4 172.20.62.150

指定端口扫描:  

 nmap ­p 80 172.20.62.150 nmap ­p 80­1000 172.20.62.150

TCP SYN扫描:又称为半开放扫描,常见扫描方式,扫描速度较快   由于未进行TCP连接,比较隐蔽,很难背防火墙或管理员发现   nmap ­sS 172.20.62.150(需要root权限)

隐蔽扫描   ­sN是Null扫描   ­sF是Fin扫描(发送FIN包)   ­sX是Xmas扫描(将数据包的FIN/PSH/URG都标记为1)

TCP ACK扫描   致命缺点:无法确定端口是否开放还是被过滤

5.3 服务和版本探测

­sV 开放版本探测,可以直接使用­A同时打开操作系统探测和版本探测 

  –version­intensity “level” 设置版本扫描强度,强度水平说明了应该使用哪些探测报文。数 值越高,服务越有可能被正确识别。默认是7   

–version­light 打开轻量级模式,为–version­intensity 2的别名  

 –version­all 尝试所有探测,为–version­intensity 9的别名   

–version­trace 显示出详细的版本侦测过程信息

实例:对主机192.168.1.100进行版本侦测。

5.4 OS识别

­O 启用操作系统检测,­A来同时启用操作系统检测和版本检测  

 –osscan­limit 针对指定的目标进行操作系统检测(至少需确知该主机分别有一个open和 closed的端口)  

 –osscan­guess 推测操作系统检测结果,当Nmap无法确定所检测的操作系统时,会尽可能 地提供最相近的匹配,Nmap默认进行这种匹配

实例:指定­O选项后先进行主机发现与端口扫描,根据扫描到端口来进行进一步的OS侦测。

5.5 防火墙/IDS躲避和哄骗

­f; –mtu value 指定使用分片、指定数据包的MTU.   

 D decoy1,decoy2,ME 使用诱饵隐蔽扫描 

  ­S IP­ADDRESS 源地址欺骗  

 ­e interface 使用指定的接口 

  ­g/ –source­port PROTNUM 使用指定源端口   

–proxies url1,[url2],… 使用HTTP或者SOCKS4的代理 

 –data­length NUM 填充随机数据让数据包长度达到NUM  

 –ip­options OPTIONS 使用指定的IP选项来发送数据包  

 –ttl VALUE 设置IP time­to­live域   

–spoof­mac ADDR/PREFIX/VEBDOR MAC地址伪装   

–badsum 使用错误的checksum来发送数据包

防火墙与IDS规避为用于绕开防火墙与IDS(入侵检测系统)的检测与屏蔽,以便能够更加详细地发 现目标主机的状况。 

  Nmap提供了多种规避技巧,通常可以从两个方面考虑规避方式:数据包的变换(Packet Change)与时序变换(Timing Change)。 

  规避原理   

1、分片(Fragmentation)   将可疑的探测包进行分片处理(例如将TCP包拆分成多个IP包发送过去),某些简单的防火墙为了 加快处理速度可能不会进行重组检查,以此避开其检查。   

2、 IP诱骗(IP decoys)   在进行扫描时,将真实IP地址和其他主机的IP地址(其他主机需要在线,否则目标主机将回复大量 数据包到不存在的主机,从而实质构成了拒绝服务攻击)混合使用,以此让目标主机的防火墙或 IDS追踪检查大量的不同IP地址的数据包,降低其追查到自身的概率。注意,某些高级的IDS系统通 过统计分析仍然可以追踪出扫描者真实IP地址。   

3 、 IP伪装(IP Spoofing)   顾名思义,IP伪装即将自己发送的数据包中的IP地址伪装成其他主机的地址,从而目标机认为是其 他主机在与之通信。需要注意,如果希望接收到目标主机的回复包,那么伪装的IP需要位于统一局 域网内。另外,如果既希望隐蔽自己的IP地址,又希望收到目标主机的回复包,那么可以尝试使用 idle scan或匿名代理(如TOR)等网络技术。  

 4、 指定源端口   某些目标主机只允许来自特定端口的数据包通过防火墙。例如FTP服务器配置为:允许源端口为21 号的TCP包通过防火墙与FTP服务端通信,但是源端口为其他端口的数据包被屏蔽。所以,在此类 情况下,可以指定Nmap将发送的数据包的源端口都设置特定的端口。   

5、 扫描延时   某些防火墙针对发送过于频繁的数据包会进行严格的侦查,而且某些系统限制错误报文产生的频率 (例如,Solaris 系统通常会限制每秒钟只能产生一个ICMP消息回复给UDP扫描),所以,定制该 情况下发包的频率和发包延时可以降低目标主机的审查强度、节省网络带宽。

实例:

nmap ­v ­F ­Pn ­D192.168.1.106,192.168.1.100,ME ­e eth0 ­g 3355 192.168.1.100

其中,­F表示快速扫描100个端口;­Pn表示不进行Ping扫描;­D表示使用IP诱骗方式掩盖 自己真实IP(其中ME表示自己IP);­e eth0表示使用eth0网卡发送该数据包;­g 3355表 示自己的源端口使用3355;192.168.1.100是被扫描的目标IP地址

5.6 Nmap 输出

­oN 将标准输出直接写入指定的文件   ­

oX 输出xml文件   ­

oS 将所有的输出都改为大写  

 ­oG 输出便于通过bash或者perl处理的格式,非xml   ­oA BASENAME 可将扫描结果以标准格式、XML格式和Grep格式一次性输出   ­v 提高输出信息的详细度   ­d level 设置debug级别,最高是9   –reason 显示端口处于带确认状态的原因   –open 只输出端口状态为open的端口   –packet­trace 显示所有发送或者接收到的数据包  

–iflist 显示路由信息和接口,便于调试   

–log­errors 把日志等级为errors/warings的日志输出   

–append­output 追加到指定的文件  

 –resume FILENAME 恢复已停止的扫描   

–stylesheet PATH/URL 设置XSL样式表,转换XML输出   

–webxml 从namp.org得到XML的样式  

 –no­sytlesheet 忽略XML声明的XSL样式表

5.7 其他nmap选项

­6 开启IPv6   ­A OS识别,版本探测,脚本扫描和traceroute   

–datedir DIRNAME 说明用户Nmap数据文件位置   

–send­eth / –send­ip 使用原以太网帧发送/在原IP层发送  

 –privileged 假定用户具有全部权限   

–unprovoleged 假定用户不具有全部权限,创建原始套接字需要root权限   ­V 打印版本信息   ­h 输出帮助

组合查询:

精准查询:nmap ­T4 ­A ­v   

UDP 强烈扫描: nmap ­sS ­sU ­T4 ­A ­v   强烈扫描所有tcp端口:nmap ­p 1­65535 ­T4 ­A ­v   

强烈扫描不ping :nmap ­T4 ­A ­v ­Pn  

 ping 扫描:nmap ­sn   

快速扫描:nmap ­T4 ­F  

 快速路由追踪:nmap ­sn ­traceroute

下一篇《nmap实战》

本文源自微信公众号:渗透云笔记

人已赞赏
安全工具

实战 | 从任意文件下载到Getshell

2019-10-16 17:05:48

安全工具

一百美金骗局

2019-10-16 17:15:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索