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

2019-07-26 17:00:13 浏览数 (1)

三、基础知识

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扫描的区别

代码语言:javascript复制
: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工具将会随机的生 成指定数量的目标进行扫描。其中,语法格式如下所示:

代码语言:javascript复制
nmap ­iR [主机数量]

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

4.5 Nmap IP地址范围扫描

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

代码语言:javascript复制
nmap [IP地址范围]

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

4,6 Nmap 整个子网扫描

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

代码语言:javascript复制
nmap [CIDR格式的网络地址]

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

4.7 Nmap扫描排除扫描目标

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

代码语言:javascript复制
nmap [目标] –exclude [目标]

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

代码语言:javascript复制
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之外的所有主机。

则执行命令如 下所示:

代码语言:javascript复制
root@localhost:~# nmap 192.168.1.1/24 --exclude 192.168.1.100-103 

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

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

代码语言:javascript复制
nmap [目标] –excludefile [目标列表]

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

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

代码语言:javascript复制
root@localhost:~#vi list.txt 

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

代码语言:javascript复制
root@localhost:~# nmap 192.168.1.0/24 --excludefile list.txt 

4.9 Nmap扫描实施全面扫描

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

代码语言:javascript复制
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的主机是活动的。 命令如下:

代码语言:javascript复制
 nmap –sn 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

指定端口扫描:

代码语言:javascript复制
 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扫描),所以,定制该 情况下发包的频率和发包延时可以降低目标主机的审查强度、节省网络带宽。

实例:

代码语言:javascript复制
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

0 人点赞