Nmap学习使用指南
本博客严重参考 Nmap使用指南1.0:
自己之前零星学习的各类知识点,在这个暑假想要将其系统地串在一起,形成自己学习的体系,一起来看各类文档学习趴
关于Nmap安装方式网上多如牛毛,在此不再赘述,请往下看。
Nmap (Network Mapper 网络映射器)
端口扫描基础
虽然Nmap这些年的功能越来越多,它也是从一个高效的端口扫描器开始的,并且那仍然是它的核心功能。
nmap target 扫描目标主机上超过1660个TCP端口
Nmap把端口分为六个状态:
open 开放的
closed 关闭的
filtered 被过滤的
unfiltered 未被过滤的
open | filtered 开放或者被过滤的
closed | filtered 关闭或者被过滤的
这些状态描述Nmap怎么看待它们
每个开放的端口都是攻击的入口
Nmap指令语法
nmap [<扫描类型> ... ] [<选项>] { <扫描目标说明>}
端口扫描技术
作为一个修车新手,我可能折腾几个小时来摸索怎样把基本工具(锤子,胶带,扳子等) 用于手头的任务。当我惨痛地失败,把我的老爷车拖到一个真正的技师那儿的时候 ,他总是在他的工具箱里翻来翻去,直到拽出一个完美的工具然后似乎不费吹灰之力搞定它。 端口扫描的艺术和这个类似。专家理解成打的扫描技术,选择最适合的一种 (或者组合)来完成给定的 任务。 另一方面,没有经验的用户和刚入门者总是用默认的SYN扫描解决每个问题。 既然Nmap是免费的,掌握端口扫描的唯一障碍就是知识。这当然是汽车世界所不能比的, 在那里,可能需要高超的技巧才能确定您需要一个压杆弹簧压缩机,接着您还得为它付数千美金。
Nmap支持的扫描类型大概有十几种,一般一次只使用一种,不过UDP扫描(-sU)可以和任何一种TCP扫描类型结合使用
端口扫描类型的选项格式是-s<C>,<C>通常是扫描类型的首字母
操作系统非特权用户仅能执行connect()和ftp bounce()扫描
部分扫描选项
-sS (TCP SYN 扫描/半开扫描)
SYN扫描是默认的也是最受欢迎的扫描选项,优点:执行速度快,扫描痕迹浅,从来不打开一个完整的TCP连接,不依赖于任何的特定平台。
-sT (TCP connect()扫描)
当SYN扫描不能用时,TCP connect()扫描就是默认的TCP扫描
相对与SYN扫描的缺点:
connect()扫描效率较低,因为它需要建立完整的TCP连接
connect()扫描容易在目标机上留下记录,许多普通的UNIX系统上的服务会在syslog留下记录
-sU (UDP扫描)
互联网基于UDP的服务也不少,最常见的如:DNS,SNMP,DHCP,注册端口分别为53,161/162,67/68
UDP扫描一般比较慢,比TCP要困难
UDP扫描可以与各种TCP扫描结合使用而同时检查两种协议
注意:慎用UDP扫描,因为它的扫描速度受到操作系统的限制非常低,如果确实要使用可以采用优先扫描主要端口,并发扫描更多主机,从防火墙后面扫描,使用--host--timeout来跳过慢速主机等手段
-sN -sF -sX (TCP Null,Fin,Xmas扫描)
这三种扫描方法利用了TCP RFC钟发掘出的一个微妙的方法来区分Open和Closed端口
如果扫描目标系统遵循RFC793,则当端口关闭时,任何不包含SYN,RST,ACK位的报文都会导致一个RST返回,而当端口开放时,应当没有任何响应
优势:
能够躲过一些无状态防火墙和报文过滤路由器,甚至比SYN扫描还要隐蔽一些,但是现代的IDS产品可以发现他们
不足:
并非所有的系统都严格遵循RFC793,许多系统端口不管是开放还是关闭的都响应RST,结果导致所有的端口都标记为Closed
它们不能辨别Open端口和一些特定的Filtered端口,从而返回相关信息
-sA (TCP ACK扫描)
目的:
发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的
不足:
无法确定Open或者Open|Filtered端口
-sW(TCP窗口扫描)
与ACK扫描的唯一区别在于它利用了特定系统的实现细节来区分端口是Open还是Closed,而不是全部打印成Unfiltered
不足:
不支持它的系统通常返回所有端口都是Closed
高级扫描方式
-sM (TCP Maimon扫描)
这个扫描技术除了探测报文采用FIN/ACK之外与Null,FIN,Xmas扫描完全一样
--scanflags (定制的TCP扫描)
这是真正的Nmap高手使用的,不受这些现成的扫描类型束缚,可以定义任意TCP标志位来设计自己的扫描
-sl (ldel扫描)
这种高级扫描方法允许进行真正的TCP端口盲扫描,由于它不适用真实IP进行扫描,所以它是一种极端隐蔽的扫描方法
-sO(IP协议扫描)
从技术上讲,这不是端口扫描
用于确认目标机器支持哪些IP协议
-b (FTP弹跳扫描)
通过FTP服务器做代理对其他目标主机进行扫描的技术,这是绕过防火墙的好方法,其实这算是服务器的一个弱点,当前大部分的服务器都被修补了,本弱点利用就困难了,不过可以使用这个选项来判断服务器是否脆弱
端口说明和扫描顺序
默认情况下,Nmap用指定的协议对端口1-1024以及nmap-services文件中列出的更高的端口进行扫描
-p <port range>(只扫描指定的端口)
port range 使用单个端口和用连字符表示的端口范围都可以
可以通过再端口号上添加T: 或者U: 指定协议
例如: -p U:53,111,137,T:21-25,80,139,8080
-F (快速(有限的端口)扫描):
在Nmap的nmap-services文件中指定想要扫描的端口,这个列表中包含1200多TCP端口,比扫描所有的65535个端口要快得多
如果使用--datadir选项指定自己的小小的nmap-services文件,则差别会很惊人了。
-r(不要按随机顺序扫描端口):
默认情况下,Nmap按随机顺序扫描端口(除了处于效率的考虑部分端口前移),这种随机化通常是不错的,但是我们可以指定-r来进行顺序端口扫描
Nmap的扩展功能
服务版本探测
人们完全可以在一些奇怪的端口上运行服务
知道正在运行什么邮件和域名服务器以及它们的版本,有一个精确的版本号对了解服务器有什么漏洞有巨大帮助
nmap-service-probes数据库包含查询不同服务的探测报文和解析识别相应的匹配表达式。
-sV (版本探测)
打开版本探测,也可以使用-A同时打开操作系统探测和版本探测
--allports(不为版本探测排除任何端口)
指定--allports扫描所有端口
--version-intensity <intensity> (设置版本扫描强度)
当进行版本扫描时,nmap发送一系列探测报文,每个报文都被赋予一个1到9之间的值,被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文一般没什么用。
强度水平说明应该使用哪些探测报文,数值越高,服务越有可能被正确识别,当然,高强度扫描花更多的时间,强度值在0到9之间,默认是7
--version-light (打开轻量级模式)
这是--version-intensity 2 的一个别名,这使得版本扫描快很多,但他识别服务的可能性也相对较小一些
--version-all (尝试每个探测)
这是--version-intensity 9 的一个别名,保证对每个端口尝试每个测试报文
--version-trace (跟踪版本扫描活动)
是会让Nmap打印出详细的关于正在运行的扫描的调试信息,它是使用--packet-trace所得到的信息的子集
-sR (RPC扫描)
这种方法和许多端口扫描方法联合使用,对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图确定它们是否为RPC端口,如果是,是什么程序和版本号。这作为版本扫描(-sV)的一部分自动打开。由于版本探测包括它并且全面的多,所以-sR很少被用到。
操作系统探测
Nmap最著名的功能之一就是用TCP/IP协议栈fingerprinting进行远程操作系统探测
Nmap发送一系列TCP和UDP报文到远程主机,检查响应中的每一个比特,再进行一打测试之后,Nmap把结果和数据库nmap-os-fingerprints中超过1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。
-O (启用操作系统探测)
也可以使用-A来同时启用操作系统和版本探测
--osscan-limit(针对指定的目标进行操作系统检测)
采用这个选项,Nmap只对满足这个条件的主机进行操作系统检测,这样可以节约时间
--osscan-guess; --fuzzy(推测操作系统检测结果)
当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,Nmap默认进行这种匹配,使用上述任一个选项使得Nmap的推测更加有效
其他选项
-6 (启用IPv6扫描)
ping扫描(TCP-only),连接扫描以及版本检测都支持IPv6,除了增加-6选项之外,其他命令语法相同
-A(激烈模式扫描 )
这个选项启用额外的高级和高强度选项,目前这个选项启用了操作系统探测 -O 和版本扫描 -sV
该选项的目的是启用一个全面的扫描选项集合,不需要用户记忆大量的选项。
这个选项仅仅启用功能,不包含可能用到的所有需要的时间选项或者细节选项
-V;--version (打印版本信息)
打印Nmap版本号并退出
-h;--help (打印帮助摘要)
打印一个短的帮助屏幕,列出大部分常用的命令选项,这个功能和不带参数运行Nmap是相同的。
Nmap学习使用指南的更多相关文章
- 读书笔记——商广明《Nmap渗透测试指南》
一 Nmap基础学习 1.简介及安装 Nmap是一款由C语言编写的.开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字Nmap是Ne ...
- 不老的神器:安全扫描器Nmap渗透使用指南【转】
介绍 nmap是用来探测计算机网络上的主机和服务的一种安全扫描器.为了绘制网络拓扑图Nmap的发送特制的数据包到目标主机然后对返回数据包进行分析.Nmap是一款枚举和测试网络的强大工具. 特点 主机探 ...
- C,C++网络编程学习简明指南
C,C++网络编程学习简明指南 1. 扎实的C,C++基础知识 参考资料<C程序设计>,<C++ primer>. 2. TCP/IP协议 经典书是:W.Richard Ste ...
- Linux学习路线指南
转载的,感觉写的挺好的,我自己知识复制了下,忘记了转载地址,抱歉! Linux学习路线指南 很多同学接触Linux不多,对Linux平台的开发更是一无所知.而现在的趋势越来越表明,作为一个优秀的软件开 ...
- 2019年Unity学习资源指南[精心整理]
前言 进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1.主流的学习社区与网站. 2.该领域的知名大牛与热心分享的从业者. 3.如何有效的 ...
- C# BS方向 该如何规划学习?【学习路线指南】
C#学习路线指南 花费了几天时间整理了C#学习路线图,可以说是纯野生C#程序员成长路线规划,在这里分享下,希望可以帮助到想从事C#开发的同学们.本人阅历尚浅,有些知识点可能分享不正确,希望广大网友评论 ...
- Python 迁移学习实用指南 | iBooker·ApacheCN
原文:Hands-On Transfer Learning with Python 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则& ...
- Web安全学习笔记之Nmap命令参考指南
最近研究Nmap,命令太多,详细还是需要参考官方文档(可选中文) 本文转载 在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型.物理端口指的是物理存在的端口,如ADSL Modem.集线器. ...
- Web安全学习笔记之Nmap脚本使用指南
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统.它是网络管理员必用的软件之一,以及用以评估网络系统安全. —— 来自百 ...
随机推荐
- layui下拉框后台动态赋值
前台页面: <select name="xm" id="xm" lay-verify="required" lay-filter=&q ...
- 安装使用Pycharm及Anaconda最全教程
网上安装anaconda和pycharm的教程很多,然而很少有人能够很详细地讲解,特别是对于pycharm的虚拟环境相关的说明很少,我也是懵逼的用了两年多,经常发现之前pycharm安装的第三方库,明 ...
- 2012年游戏软件开发独立本科段01B0815自考科目教材
代码-----------教材名----------------------------版本----------作者 03708--------中国近现代史纲要----------------高教08 ...
- Redis 数据结构之字符串的那些骚操作
Redis 字符串底层用的是 sds 结构,该结构同 c 语言的字符串相比,其优点是可以节省内存分配的次数,还可以... 这样写是不是读起来很无聊?这些都是别人咀嚼过后,经过一轮两轮三轮的再次咀嚼,吐 ...
- nagle 算法 tcp nodelay 以及 quick ack分析
后面详细分析 先上传 之前总结查看源码后的总结 Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段.所谓"小段",指的是小于MSS尺寸的数据块,所谓"未被确 ...
- binary hacks读数笔记(file命令与magic file)
file命令的作用是用于检验文件的类型,并打印至终端.file命令检验文件类型按以下顺序来完成: 检验文件系统(Filesystem)中支持的文件类型. 检验magic file规则. 检验文件内容的 ...
- vmlinux, Image ,zImage,uImage
kernel 源码编译生成 vmlinx,vmlinux 是 elf 文件,对 vmlinux 使用 objcopy 得到 Image,Image 是纯粹的二进制文件,vmlinux 只能在OS环境下 ...
- spring mvc 基础知识
spring mvc 在web.xml中的配置: 例子: <?xml version="1.0" encoding="UTF-8"?> <we ...
- 检查linux下服务器的带宽
设想:公司 A 有一个名为 bsdocfs 的存储服务器,并通过名为 beckham 的客户端节点装载 NFS.公司 A 确定他们需要从 bsdocfs得到更多的带宽,因为有大量的节点需要访问 bsd ...
- 没找到Wkhtmltopdf,报表会被显示为html
windows10 odoo 打印报表时提示 没找到Wkhtmltopdf,报表会被显示为html 现象 原因 没有安装Wkhtmltopdf,没有配置环境变量,odoo在电脑系统中找不到Wkhtml ...