又一个网络嗅探和安全审核工具nmap,虽小但很强悍!
xsobi 2024-12-01 05:40 1 浏览
对于nmap,相信很多安全运维人员并不陌生,它曾经在电影《黑客帝国》中出现过,是黑客和网络安全人员经常用到的工具。
nmap是一款开源免费的网络发现工具,通过它能够找出网络上在线的主机,并测试主机上哪些端口处于监听状态,接着通过端口确定主机上运行的应用程序类型与版本信息,最后利用它还能侦测出操作系统的类型和版本,由此可见,nmap是一个功能非常强大的网络探测工具,同时也成为网络黑客的最爱,因为nmap所实现的这些功能正是黑客入侵网络的一个基本过程。站在安全运维的角度,只有了解了黑客入侵的基本方式和过程,才能有目的、有针对性地进行安全防护,这也正是我们重点介绍nmap这个网络嗅探工具的原因。
1、namp的快速安装使用
从官方网站www.nmap.org 下载源码包,然后编译安装即可,编译安装过程无需额外参数,操作如下:
[root@localhost ~]# tar jxvf nmap-7.70.tar.bz2
[root@localhost ~]# cd nmap-7.70
[root@localhost nmap-7.70]# ./configure
[root@localhost nmap-7.70]# make
[root@localhost nmap-7.70]# make install
至此,源码方式安装nmap完成。当然也可以yum方式在线安装:
[root@localhost ~]# yum install nmap
yum方式安装的nmap版本会比较老,大家根据爱好,各取所求即可。
2、nmap的典型用法
nmap主要包含四个方面的功能:主机发现、端口扫描、应用程序及版本侦测、操作系统及版本侦测,在详细介绍每个功能点之前,首先介绍下nmap的典型用法。最简单的nmap命令形式如下:
namp 目标主机
通过这个命令,可以确定目标主机的在线情况和端口的监听状态,如下图所示。
由输出可知,目标主机172.16.213.51处于“up”状态,并且此主机上开放了22、111、5900、5901等端口,同时还侦测到了每个端口对应的服务,在最后还给出了目标主机网卡的MAC信息。并猜测给出了目标服务器品牌,厉害吧。
这只是nmap最基础的用法,如果希望了解目标主机更多的信息,可以通过完全扫描的方式实现,nmap命令内置了“-A”选项,可以实现对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统识别等完整全面的扫描,命令形式如下:
nmap -T4 -A -v 目标主机
其中,“-A”选项用于开启全面扫描;“-T4”指定扫描过程中使用的时序模板,总共有6个等级(0~5),等级越高,扫描速度越快,但也越容易被防火墙或者入侵检测设备发现并屏蔽,所以选择一个适当的扫描等级非常重要,这里推荐使用“-T4”;“-v”参数可显示扫描细节。下图是nmap对某主机的全面扫描过程。
从上图中可以看出,整个扫描过程非常详细:第一部分是对主机是否在线进行扫描;第二部分是对端口进行扫描,在默认情况下nmap会扫描1000个最有可能开放的端口,由于只扫描到22、80、3306三个端口处于打开状态,所以在输出中会有“997 closed ports”的描述;第三部分是对端口上运行的应用服务以及版本号进行统计,可以看到,扫描结果非常详细的记录了软件的版本信息;第四部分是对操作系统类型和版本进行探测,从扫描结果来看,还是非常准确的;最后一部分是对目标主机的路由跟踪信息。
看到了吧,nmap真的非常厉害,同时也侧面反映了网络安全的重要性,如果你的服务器没有做安全防护,那么要获取你的信息,真的太容易了。
3、通过nmap对远程主机进行端口扫描
端口扫描是nmap最核心的功能,通过端口扫描可以发现目标主机上TCP、UDP端口的开放情况。nmap在默认状态下会扫描1000个最有可能开放的端口,并将侦测到的端口状态分为6类,分别是:
? open,表示端口是开放的。
? closed,表示端口是关闭的。
? filtered,表示端口被防火墙屏蔽,无法进一步确定状态。
? unfiltered,表示端口没有被屏蔽,但是否处于开放状态,还需要进一步确定。
? open|filtered,表示不确定状态,端口可能是开放的,也可能被屏蔽的。
? closed|filtered,表示不确定状态,端口可能是关闭的,也可能被屏蔽的。
废话不说,直接上例子,看看怎么用nmap执行端口扫描。下面以探测www.abc.com 主机的信息为例,简单演示端口扫描的使用方法。首先,在联网的服务器上执行如下命令:
[root@localhost ~]# nmap -sU -sS -F www.abc.com
执行结果如下图所示。
在上图中,参数“-sS”表示使用TCP SYN方式扫描TCP端口,“-sU”表示使用UDP扫描方式扫描目标主机的UDP端口状况,“-F”表示使用快速扫描模式,扫描最可能开放的前100个端口(TCP和UDP各100个端口),由输出可知,有21个端口处于开放或者屏蔽状态,其他179个端口处于关闭状态。
4、通过nmap探测远程主机上运行服务的版本信息
nmap的版本侦测功能主要是用来确定目标主机开放的端口上运行的应用程序及版本信息,nmap的版本侦测支持TCP/UDP协议,支持多种平台的服务侦测,支持IPV6功能,并能识别几千种服务签名,下面介绍下nmap版本侦测的使用方法。
这里以探测172.16.213.120主机上运行的应用程序的版本信息为例,简单演示版本侦测的使用方法。首先,在联网的服务器上执行如下命令:
nmap -sV 172.16.213.120
其中,“-sV”表示设置nmap进行版本侦测,执行结果如下图所示。
从上图中nmap的输出可以看到每个端口对应的服务名称以及详细的版本信息,通过对服务器上运行服务的了解,以及对服务版本的探测,基本能判断出来此服务器是否存在软件漏洞,进而提醒运维管理人员进行端口关闭或升级软件等操作,尽早应对可能出现的安全威胁。
5、nmap操作系统侦测
操作系统侦测主要是对目标主机运行的操作系统类型及版本信息进行检测。nmap拥有丰富的系统指纹库,目前可以识别近3000种操作系统与设备类型。下面介绍下nmap操作系统侦测的使用方法。
下面以探测某外网主机的操作系统类型为例,简单演示操作系统侦测的使用方法。首先,在联网的服务器上执行如下命令:
nmap -O --osscan-guess 118.18.8.188
执行结果如下图所示:
上图中nmap指定了两个选项,含义如下:
“-O”选项:表示设置nmap进行操作系统侦测.
--osscan-guess选项:表示猜测目标主机的操作系统类型,nmap会给出可能性的比率,用户可以根据提供的比率综合判断操作系统类型。
nmap命令首先执行了主机发现操作,接着执行了端口扫描操作,然后根据端口扫描的结果进行操作系统类型的侦探,获取到的信息有设备类型、操作系统版本、操作系统的CPE描述、操作系统的细节和网络距离.如果不能确定操作系统的版本,会猜测每个系统版本的可能性比率,例如对于扫描的此主机,nmap给出最可能的操作系统版本是Microsoft Windows Vista|7|2008,而事实上,此主机确实安装了Microsoft Windows 2008 server这个版本的系统。由此可见,nmap的操作系统侦测功能是多么的强大。
6、nmap通过脚本进行扫描渗 透
nmap默认自带了很多应用脚本,这些脚本可以完成暴力破解、拒绝服务攻 击、通过已知的漏洞入 侵系统、探测目标机是否感染了病毒等功能。通过脚本扫描时需要设置“--script”参数这种方式进行比较扫描,常见的脚本参数有如下几个:
? -sC:等价于–script=default,使用默认类别的脚本进行扫描 可更换其他类别
? –script=<Lua scripts>: <Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述
? --script=all 调用所有脚本扫描
下面看几个例子:
(1)、检查mysql空密码
[root@localhost ~]# nmap --script=mysql-empty-password localhost
如下图所示:
(2)、尝试破解mysql密码
如果不是空密码,则可以使用自带的暴 力破解功能尝试破解:
[root@localhost ~]# nmap -T5 -p 3306 --script=mysql-brute.nse 172.16.213.236
其中,mysql-brute.nse是一个nmap自带的暴力破解脚本,nmap安装好后,默认在/usr/local/share/nmap/scripts/(源码安装方式后的路径)目录下有nmap自带的所有脚本。扫描结果如下图所示:
可以看出,因为172.16.213.236密码太简单,已经被破解了。
(3)、获取远程主机mysql库信息
如果知道了用户名与密码,就可以做很多事情了,例如可以枚举数据库中的库信息、用户信息:
[root@localhost ~]#nmap -sV --script=mysql-databases --script-args mysqluser=root,mysqlpass=123456 172.16.213.236
从上图可以看到,已经获取了此数据库中的所有库信息,继续操作,查看系统这个mysql中有哪些用户,执行如下命令:
[root@localhost ~]#nmap -T5 -p 3306 --script=mysql-users.nse --script-args mysqluser=root,mysqlpass=123456 172.16.213.236
从上图可以看出,mysql库中的用户都扫描查询出来了。
最后,nmap还支持通配符描述,对同一应用的所有脚本扫描,可这样执行:
[root@localhost ~]# nmap --script=mysql-* 172.16.213.236
这里我们以扫描mysql为例做了一些nmap的高级功能介绍,其实除了mysql,还能对各种常见应用,例如redis、telnet、oracle、ftp、smtp、pop3、ms-sql、pqsql等各种常见的软件进行扫描和测试,用法和mysql完全相同。大家不妨都动手测试一下,顺便检查一下自己的应用是否存在漏洞和安全威胁。
- 上一篇:网络扫描之Nmap
- 下一篇:仅需4步,轻松实战Nmap脚本引擎(NSE)
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)