前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白都能玩的明白的Nmap基础(二)

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

作者头像
天钧
发布2019-07-26 17:00:13
1.5K0
发布2019-07-26 17:00:13
举报
文章被收录于专栏:渗透云笔记渗透云笔记

三、基础知识

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
主机安全
主机安全(Cloud Workload Protection,CWP)基于腾讯安全积累的海量威胁数据,利用机器学习为用户提供资产管理、木马文件查杀、黑客入侵防御、漏洞风险预警及安全基线等安全防护服务,帮助企业构建服务器安全防护体系。现支持用户非腾讯云服务器统一进行安全防护,轻松共享腾讯云端安全情报,让私有数据中心拥有云上同等级别的安全体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档