Linux 网络探测和安全审核工具 nmap 应用实践

news2024/11/29 16:29:06

对于 nmap,相信很多安全运维人员并不陌生,它曾经在电影《黑客帝国》中出现过, 是黑客和网络安全人员经常用到的工具,本文重点介绍下此工具的实现原理和使用技巧。

nmap 和 Zenmap 简介

nmap 是一款开源免费的网络发现工具,通过它能够找出网络上在线的主机,并测试主机上哪些端口处于监听状态,接着通过端口确定主机上运行的应用程序类型与版本信息,最后利用它还能侦测出操作系统的类型和版本,由此可见,nmap 是一个功能非常强大的网络探测工具,同时也成为网络黑客的最爱,因为 nmap 所实现的这些功能正是黑客入侵网络的一个基本过程。站在安全运维的角度,只有了解了黑客入侵的基本方式和过程,才能有目的、有针对性地进行安全防护,这也正是本节重点介绍 nmap 这个网络嗅探工具的原因。

nmap 是 Network Mapper 的缩写,由 Fyodor 在 1997 年创建,现在已经成为网络安全必备的工具之一, 目前最新的版本为 nmap 6.40 , 更多详细信息可以参考官方主页:

www.nmap.org

nmap 作为一个流行的安全工具,它的主要特点有:

  • 非常灵活。nmap 支持十多种扫描方式,并支持多种目标对象扫描。* 支持主流操作系统。nmap 支持 Windows、Linux、BSD、Solaris、AIX、Mac OS等多种平台,可移植性强。* 使用简单。nmap 安装、使用都非常简单,基本用法就能满足一般使用需求。* 自由软件。nmap 是在 GPL 协议下发布的,在 GPL License 的范围内可自由使用。Zenmap 是 nmap 的 GUI 版本,由 nmap 官方提供,通常随着 nmap 安装包一起发布。

Zenmap 是用 python 语言编写,能够在 Windows、Linux、Unix、Mac OS 等不同系统上运行。开发 Zenmap 的目的主要是为 nmap 提供更加简单的操作方式。

nmap 基本功能与结构

nmap 功能非常强大,从它实现功能的方向性来划分,主要有如下四个基本功能:

  • 主机发现* 端口扫描* 应用程序及版本侦测* 操作系统及版本侦测这四个基本功能既相互独立,又依次依赖,因为一般的网络嗅探都是从主机发现开始的, 在发现在线的主机后,接着就需要进行端口扫描,进而通过扫描到的端口确定运行的应用程序类型及版本信息,并最终确定操作系统的版本及漏洞信息。另外 nmap 还提供了防火墙与入侵检测系统的规避技巧,这个功能可以应用到基本功能的各个阶段中。最后,nmap 还提供了高级用法,即通过 NSE(Nmap Scripting Language)脚本引擎功能对 nmap 基本功能进行补充和扩展。

nmap 的安装与验证

nmap 的安装非常简单,官方提供源码编译安装和 rpm 包两种方式,读者可根据自己的喜好选择安装即可。这里下载的版本为 nmap-6.40.tar.bz2,下面分别介绍两种安装。

1.源码编译安装

从官方网站下载源码包,然后编译安装即可,编译安装过程无需额外参数,操作如下:

[root@localhost ~]# tar jxvf nmap-6.40.tar.bz2

[root@localhost ~]# cd nmap-6.40

[root@localhost nmap-6.40]# make

[root@localhost nmap-6.40]# make install

至此,源码方式安装 nmap 完成。

2.rpm 包安装

nmap 官方也提供了 rpm 格式的安装包,直接从网站下载 rpm 格式的安装包,然后进行安装即可,操作过程如下:

[root@localhost ~]# wget http://nmap.org/dist/nmap-6.40-1.x86_64.rpm [root@localhost ~]# rpm -Uvh nmap-6.40-1.x86_64.rpm

在完成安装后,执行“namp -h”,如果能输出帮助信息,表示安装成功,否则根据错误提示重新安装。

nmap 的典型用法

前面提到了 nmap 主要包含四个方面的扫描功能,在详细介绍每个功能点之前,首先介绍下 nmap 的典型用法。最简单的 nmap 命令形式如下:

namp 目标主机

通过这个命令,可以确定目标主机的在线情况和端口的监听状态,如图 2-22 所示。

图 2-22 nmap 的典型用法

由输出可知,目标主机 192.168.12.189 处于“up”状态,并且此主机上开放了 22、21、

3306 端口,同时还侦测到了每个端口对应的服务,在最后还给出了目标主机网卡的 MAC

信息。

如果希望了解目标主机更多的信息,可以通过完全扫描的方式实现,nmap 命令内置了“-A”选项,可以实现对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统识别等完整全面的扫描,命令形式如下:

nmap –T4 –A –v 目标主机

其中,“-A”选项用于开启全面扫描;“-T4”指定扫描过程中使用的时序模板,总共有6 个等级(0~5),等级越高,扫描速度越快,但也越容易被防火墙或者入侵检测设备发现并屏蔽,所以选择一个适当的扫描等级非常重要,这里推荐使用“-T4”;“-v”参数可显示扫描细节。图 2-23 是 nmap 对某主机的全面扫描过程。

图 2-23 nmap 对主机 192.168.12.188 的全面扫描过程

从图 2-23 中可以看出,整个扫描过程非常详细:第一部分是对主机是否在线进行扫描; 第二部分是对端口进行扫描,在默认情况下 nmap 会扫描 1000 个最有可能开放的端口,由于只扫描到 22、111、80 三个端口处于打开状态,所以在输出中会有“997 closed ports”的描述;第三部分是对端口上运行的应用服务以及版本号进行统计,可以看到,扫描结果非常详细的记录了软件的版本信息;第四部分是对操作系统类型和版本进行探测,从扫描结果来看,还是非常准确的;最后一部分是对目标主机的路由跟踪信息。

nmap 主机发现扫描

主机发现主要用来判断目标主机是否在线,其扫描原理类似于 ping 命令,通过发送探测数据包到目标主机,如果能收到回复,那么就认为目标主机处于在线状态。nmap 支持多种不同的主机探测方法, 例如发送 TCP SYN/ACK 包、发送 SCTP 包、发送 ICMPecho/timestamp/netmask 请求报文等,用户可在不同的环境下选择不同的方式来探测目标主机。

1.主机发现的用法

nmap 提供了丰富的选项以供用户选择不同的主机发现探测方式,使用语法如下:

nmap [选项或参数] 目标主机

nmap 常用的主机发现选项与含义

2.使用实例

下面以探测 www.abc.com 主机的信息为例,简单演示主机发现的用法。首先,在联网的服务器上执行如下命令:

nmap-sn -PE -PS22,80 -PU53 www.abc.com

在这个例子中,使用了“-PE”、“-PS”、“-PU”等参数,根据上面的介绍,“-PE”是以发送 ICMP echo 报文的形式进行主机探测的,“-PS”是以发送 TCP SYN/ACK 包的形式侦测主机信息的,而“-PU”则是以 UDP 的方式进行主机侦测的.为了能清晰的展示 nmap 的侦测方式和侦测过程,这里通过抓包工具 Wireshark 动态监测一下 nmap 探测主机的过程,如图 2-25 所示。

图 2-25 通过 Wireshark 获取的 nmap 探测主机过程

在图 2-25 中可以看到,nmap 所在的主机 192.168.12.188 向目标主机 61.185.133.234 发送了四个探测包,分别是 ICMP Echo (ping)、22 端口和 80 端口的 TCP SYN、53 端口的 UDP 包。但是仅仅收到了 ICMP Echo (ping)和 80 端口的回复,22 端口返回了“RST”标识,这说明 22 端口处于关闭状态。不过 nmap 的原则是只要能收到任何一种探测请求的回复,就认为此主机处于在线状态。

nmap 端口扫描

端口扫描是 nmap 最核心的功能,通过端口扫描可以发现目标主机上 TCP、UDP 端口的开放情况。nmap 在默认状态下会扫描 1000 个最有可能开放的端口,并将侦测到的端口状态分为 6 类,分别是:

  • open,表示端口是开放的。* closed,表示端口是关闭的。* filtered,表示端口被防火墙屏蔽,无法进一步确定状态。* unfiltered,表示端口没有被屏蔽,但是否处于开放状态,还需要进一步确定。* open|filtered,表示不确定状态,端口可能是开放的,也可能被屏蔽的。* closed|filtered,表示不确定状态,端口可能是关闭的,也可能被屏蔽的。在端口扫描方式上,nmap 支持十多种探测方法,最常用的有“TCP SYN scanning”,这是默认的端口扫描方式,另外还有“TCP connect scanning”、“TCP ACK scanning”、“TCP FIN/Xmas scanning”、“UDP scanning”等探测方式。具体使用哪种探测方式,用户可自己指定。

1.端口扫描的用法

nmap 提供了多个选项以供用户来指定扫描方式和扫描端口,使用语法如下:

nmap [选项或参数] 目标主机

nmap 端口扫描的常用选项与含义

2 .使用实例

下面仍以探测 www.abc.com 主机的信息为例,简单演示端口扫描的使用方法。首先,在联网的服务器上执行如下命令:

nmap -sU -sS -F www.abc.com

执行结果如图 2-26 所示。

图 2-26 nmap 端口扫描应用实例

在图 2-26 中,参数“-sS”表示使用 TCP SYN 方式扫描 TCP 端口,“-sU”表示扫描 UDP端口,“-F”表示使用快速扫描模式,扫描最可能开放的前 100 个端口(TCP 和 UDP 各 100个端口),由输出可知,有 21 个端口处于开放或者屏蔽状态,其他 179 个端口处于关闭状态。

nmap 版本侦测

nmap 的版本侦测功能主要是用来确定目标主机开放的端口上运行的应用程序及版本信息,nmap 的版本侦测支持 TCP/UDP 协议,支持多种平台的服务侦测,支持 IPV6 功能,并能识别几千种服务签名,下面介绍下 nmap 版本侦测的使用方法。

1.版本侦测的用法

nmap 在版本侦测方面的命令选项非常简单,常用的语法如下:

nmap [选项或参数] 目标主机

nmap 在版本侦测方面的常用选项及含义

2 . 使用实例

下面以探测 23.76.232.59 主机上运行的应用程序的版本信息为例,简单演示版本侦测的使用方法。首先,在联网的服务器上执行如下命令:

nmap-sV 23.76.232.59

执行结果如图 2-27 所示。

图 2-27 nmap 版本侦测实例

从图 2-27 中 nmap 的输出可以看到每个端口对应的服务名称以及详细的版本信息,通过对服务器上运行服务的了解,以及对服务版本的探测,基本能判断出来此服务器是否存在软件漏洞,进而提醒运维管理人员进行端口关闭或升级软件等操作,尽早应对可能出现的安全威胁。

nmap 操作系统侦测

操作系统侦测主要是对目标主机运行的操作系统类型及版本信息进行检测。nmap 拥有丰富的系统指纹库,目前可以识别近 3000 种操作系统与设备类型。下面介绍下 nmap 操作系统侦测的使用方法。

1.操作系统侦测的用法

nmap 在操作系统侦测方面提供的命令选项比较少,常用的语法如下: nmap [ 选 项 或 参 数 ] 目 标 主 机nmap 在操作系统侦测方面的常用选项及含义

2.使用实例

下面以探测 192.168.12.118 和 192.168.12.119 主机的操作系统类型为例,简单演示操作系统侦测的使用方法。首先,在联网的服务器上执行如下命令:

nmap -O --osscan-guess 192.168.12.118-119

执行结果如图 2-28 所示。

图 2-28 nmap 操作系统侦测实例

从图 2-28 中可以看出,在指定了“-O”选项后,nmap 命令首先执行了主机发现操作,接着执行了端口扫描操作,然后根据端口扫描的结果进行操作系统类型的侦探,获取到的信息有设备类型、操作系统版本、操作系统的 CPE 描述、操作系统的细节和网络距离.如果不能确定操作系统的版本,会猜测每个系统版本的可能性比率,例如对于192.168.12.119 主机,nmap 给出最可能的操作系统版本是 VMware ESXi Server 5.0,而事实上,此主机确实安装了这个版本的系统。由此可见,nmap 的操作系统侦测功能是多么的强大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023兔年大吉HTML,兔兔动态代码「兔了个兔」

文章目录一.2023兔年大吉HTML,兔兔动态代码「兔了个兔」1.1 资源获取和效果预览二.代码讲解(主要代码)1.1 背景加圆圈圈1.2.兔兔和提示字1.3 JavaScript控制动态一.2023兔年大吉HTML,兔兔动态代码「兔了个兔」 1.1 资源获取和效果…

如何在游戏中实现飘花和落叶效果

本文首发于微信公众号: 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。嗨!大家好,我是小蚂蚁。今天这篇文章分享一下如何在游戏中实现飘花和落叶的效果,在游戏背景中加入它们&…

FPGA:数字电路简介

文章目录数字电路的历史电子管时代晶体管时代半导体集成电路IC 时代IC的发展阶段EDA (Electronics Design Automation) 技术数字集成电路的分类数字集成电路的集成度分类从器件导电类型不同从器件类型不同数字电路的历史 数字电路是数字计算机和自动控制系统的基础&#xff0c…

[JavaEE初阶] 线程安全问题之内存可见性问题----volatile

读书要趁黑发早,白首不悔少当时 文章目录1. 什么是内存可见性问题2. 避免内存可见性问题-----volatile(易变的)3. 需要注意的点总结1. 什么是内存可见性问题 在线程A在读一个变量的时候,另一个线程B在修改这个变量,所以,线程A读到的值不是修改之后的,是一个未更新的值,读到的值…

先行“蜀道”, 四川农信核心系统分布式转型

作者:四川省农村信用社联合社 张朝辉 桂俊鸿 来源:《金融电子化》 随着四川省联社党委提出“合规银行、智慧银行、主力军银行”三大银行战略。作为四川省业务规模最大的银行业金融机构、全国农信系统“排头兵”的四川农信积极响应,率先于 2018 年 9 月完…

mysql磁盘io

1、磁盘的一些概念 1.1、盘片、片面 和 磁头 硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从…

Viper渗透框架

文章目录Viper 简介Viper 安装脚本安装手动安装切换到 root 用户执行命令Kali 安装 docker (我已经安装过了,不做演示,命令依次执行即可)安装 docker-compose设置安装目录生成安装目录,并进入安装目录生成 docker-compose.yml设置登录密码写入…

【C++常用算法】STL基础语法学习 | 拷贝算法替换算法

目录 ●copy ●replace ●replace_if ●swap ●copy 1.功能描述: 将容器内指定范围的元素拷贝到另一容器中 2.查看copy定义下底层代码的函数原型: 3.向deque容器中插入10~50五个数,将这五个数拷贝到另一个指定容器中并输出。 #include&…

【生产问题】前端接口请求报blocked:mixed-content

事故现象 客户端反馈系统无法使用。打开页面很多内容无法显示。 f12 显示很多请求都失败了。 定位问题 客户咨询 客户反馈昨天 在nginx 上面配置了https证书。导致了http 请求无法访问。 客户已经在nginx上面配置了https。即 网页端的请求会重定向到https请求上面。那为啥…

无需离开 Visual Studio 即可编写 Markdown

当您想要格式化代码但又不想牺牲易读性时,Markdown 是一个很好的解决方案。GitHub 将其用于自述文件,我们将其用作 Visual Studio 文档的标准。之前收到了不少来自开发者的反馈,大家希望在 Visual Studio 中使用 Markdown 编辑器。在最近的 V…

87、【栈与队列】leetcode ——347. 前 K 个高频元素:优先队列(小根堆)+Hash表(C++版本)

题目描述 原题链接:347. 前 K 个高频元素 一、优先队列(小根堆)Hash表 使用Hash表存nums中各元素出现次数,维护一个优先级队列,在里面存k个数,采用小根堆方式,从小到大进行排列。当存入的数多…

Vue3——第五章(响应式 API:isRef、unref、toRef、toRefs等工具函数)

一、isRef() 检查某个值是否为 ref。请注意,返回值是一个类型判定 (type predicate),这意味着 isRef 可以被用作类型守卫 二、unref() 如果参数是 ref,则返回内部值,否则返回参数本身。这是 val isRef(val) ? val.value : v…

【CPP】STL简介

​🌠 作者:阿亮joy. 🎆专栏:《吃透西嘎嘎》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉什么是 S…

李宏毅ML-机器学习基本概念简介

机器学习基本概念简介 Machine Learning 约等于 Looking for a function. Different types of functions: Regression: The function outputs a scalar. Classification: Given options(classes), the function outputs the correct one. How to find a function? > 预测本…

为什么学完了 C 语言觉得自己什么都干不了?

其他方向不了解哈,我2013年大一开始自学C语言,然后就开始做嵌入式,大学四年,到现在毕业又六年,C语言已经陪我十年了,可以说是一直坚持且养家糊口的工具。 所以,别的也许不行,但是嵌…

使用.htaccess设置图片防盗链的详细方法

对于虚拟主机用户来说,最方便的莫过于利用.htaccess设置图片防盗链了。上网搜了一下,.htaccess规则写法很多,但是大部分的区别在于最后一行,下面我们先看看正确的.htaccess防盗链写法,稍后我再详细解释一下最后一行的重…

JAVA实现代码热更新

JAVA实现代码热更新引言类加载器实现热更新思路多种多样的加载来源SPI服务发现机制完整代码引言 本文将带领大家利用Java的类加载器加SPI服务发现机制实现一个简易的代码热更新工具。 类加载相关知识可以参考: 深入理解JVM虚拟机第三版, 深入理解JVM虚拟机(第二版)—国外的,自…

从零开始搭建一个vue demo工程

查询了不少文章,有知乎、CSDN、简书、思否等,发现如下操作性比较好,特此记录 目录 使用vue-cli创建 使用vite创建 Vue2和Vue3的代表作 参考文章 使用vue-cli创建 Vue3-使用vue/cli搭建项目 - 个人文章 - SegmentFault 思否 此处使用了v…

一文看懂基站无源交调

众所周知,有源器件会在系统中产生非线性效应。虽然已开发出多种技术来改善此类器件在设计和运行阶段的性能,但容易忽视的是,无源器件也可能引入非线性效应;虽然有时相对较小,但若不加以校正,这些非线性效应…

将vue项目打包成电脑端应用.exe

目录 第一步:下载模板electron-quick-start 第二步:进入到下载好的模板文件当中(electron-quick-start) 第三步:打包自己的项目(npm run build) 第四步:删掉官方demo下的index.html文件 …