百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

Nmap工具详解

xsobi 2024-12-01 05:40 1 浏览

一、nmap介绍

Nmap(网络映射器)是一种与来探测计算机网络上的主机和服务的安全扫描器。Nmap会发送特制的数据报到目标主机上,然后分析其返回的数据报,从而达到绘制网络拓扑图的效果。

简单来说,Nmap是一款枚举和测试网络的强大工具,有主机探测、端口扫描、版本检测、系统检测以及支持探测脚本编写等功能。

现在你是不是有点疑惑,以上都是些什么东西?为什么我们需要对他们进行整理呢?先别着急,小知老师照旧先为你补充一些课前基础知识。

前言

如果你对网络安全有一些了解,那你一定看到过信息收集、资产探测这些字样,什么是信息收集和资产探测?

这里我们讲的资产可不是传统意义上的公司资产,像厂房设备,公司存款之类的哦。绝对不是要去了解一个公司有多少“钱”,然后再决定渗不渗透哦。听起来有点像小偷会干的事情,我们可是正经人~

我们今天需要讨论是“互联网”资产。广义的互联网资产,指企业在互联网上的投资所形成的积累,包括域名、网站、软件、用户、知名度、访问量、品牌形象等,这些已经有着对企业营收至关重要的生产要素。

作为一个财务人员,研究一个公司可能会去研究公司的财务年报,经营数据;作为一个就业者,研究一个公司可能会去了解公司的企业文化,晋升渠道等等;而我们作为一名专业的网络安全从业人员,需要去了解一家公司,甚至去渗透一家公司,那么首先要做的就是去了解该公司在互联网有哪些资产,而这些资产就包括了主机、域名、IP、端口等等,这些资料会为我们在互联网层面上描述这个公司的状况。

所以资产探测就是通过一定的技术手段,依赖于工具、渠道、人员去整理收集关于公司网络资产,包括但不限于收集公司所有主机、域名、IP等等。

资产探测为后续渗透工作奠定了基础。想象一下如果你现在准备去淘金,首先需要做的不就是确定好要去“哪里”淘金吗?位置选的好,胜利一大半。

这个时候,你肯定想说了。去淘金的话,我们都不知道哪里可以淘到,如果没有限制的话我肯定是想把这个淘的“地方”定的越大越好,这样我的概率不也就大很多了

对呀,资产探测也是这个道理。尽可能全面的收集资产可以让后续的工作更有发挥空间,能发现安全漏洞的几率也就更大,所以资产探测在渗透测试整个流程中就有了至关重要的意义

前面谈到主机、域名、IP之类名词,如果你基础比较弱的话可能还是会有些疑惑为什么我要收集的资料是他们呢?先来看一个故事吧。

在互联网之初,世界上只有三台计算机,这三台计算机的拥有者想互相链接起来交流,这个时候怎么做呢?首先为自己取个名字,不然我怎么知道你们谁是谁呢?

所以他们就互相取名叫小张、小王、小李,这样我们有了名字就可以通信啦,互相之间“发消息”也就不会串了。你可以理解他们的名字叫“主机名”

可是随着互联网的发展,计算机越来越多啦,叫小张的也不止一个,取个游戏id都要想半天避免重复,何况主机名呢。所以现在怎么办呢?

于是IP这个概念就出现了,它规定4个0~255的数字组合为一个计算机地址。比如常见的本地地址:127.0.0.1

所以我们现在可以让小张的IP为0.0.0.1,小王的IP为0.0.0.2,小李的IP为154.21.36.14。每个数字的取值都是0~255之间,四个数字排列组合,这样就有42多亿地址可以用啦。但是这个数字量是够了,但是非常难以记忆啊!比电话号码还难背,为了解决这个问题就出现了域名。



比如说我们非常见到的www.baidu.com,这个样子的就叫做域名。现在我们需要做的就是将域名和IP对应起来,让别人只要访问这个域名就能访问到我们的IP以及IP上的网络服务,怎么做呢?

这里就出现了一个人,他啥都不干,就在那里罗列 IP 地址和域名。你现在想要访问小张的服务,所以你就可以写一个字条,上面是www.zhangsan.com,寄给那个管着IP和域名关系的人。

他会找一下www.zhangsan.com对应的 IP 地址,然后再寄回给你。你拿着这个 IP 地址就可以去找张三了。

这个啥也不干,就罗列IP和域名的“他”就是我们通常说的DNS服务器。“你"就是你所使用的本地机。

一个IP地址可以提供很多服务,比如web服务、FTP服务等等。你可以想象成计算机是一个房子,IP是这个房子的地址,这个房子里有非常多个房间,不同的房间可以提供不同的服务,你如果想与某个数据进行数据交互,就需要知道这个程序在哪个“房间”里,这些能够访问到房间的通道就是“端口”,想要使用什么样的服务就需要走特定的通道。

一个小故事让你简单理解下几个东西之间的关系,可能不够准确,主要是为了大家方便理解。所以我们的资产探测主要就是为了寻找这家公司,名下有几套“房产”,分别都在哪些“地方”,房间里都开着哪些服务。

在渗透测试的过程中,你大概率在公司的主站点很难找到突破口,这个时候你就可以换一个思路,找找主人家是不是还有其他防卫没那么严格的“小房子”。尝试从小房子和小房子里挂着的服务入手,采取包抄策略,来达到我们渗透的目标

这也就是“白帽们”一直强调的信息收集的意义。而nmap就是一款信息收集模块的无敌神器

二、安装

Nmap的安装过程并不复杂,我会详细的展示每一步操作

https://nmap.org/download.html#purpleheader



三、NMAP实战操作

#指定端口扫描
#-Pn 指定主机地址,nmap在扫描主机之前会检测主机是否存活,有些主机设置了防火墙很容易会被检测到未存活,而-Pn则可以指定扫描之前不需要ping命令,直接默认主机是存活的。
nmap -Pn 47.106.80.112 -p 80,443,22,21,8080,25,53
nmap -Pn 47.106.80.112 -p 1-100               #端口区间扫描,nmap 默认扫描目标1-10000范围内的端口号
#综合扫描
nmap -Pn -A 47.106.80.112                     #会自动扫描包含1-10000的端口ping扫描,操作系统扫描,脚本扫描,路由跟踪,服务探测
nmap -Pn 47.106.80.112 -p 1-65535             #扫描所有端口耗时较长

#扫描局域网中的3306端口
nmap -Pn 192.168.10.2130 -p 3306
nmap -Pn 192.168.10.0/24 -p 3306

#批量主机扫描
nmap -sP 192.168.10.0/24     #指定网段,网段扫描
nmap -iL ip-address.txt      #拉取文件列表

#输出结果到文件
nmap -Pn 47.106.80.112 -p 80,443,22,21,8080,25,53 -oG result.txt 

#排除IP
nmap -exclude ip1,ip2 192.168.10.0/24   #扫描网段时,排除IP1和IP2。

。nmap返回状态说明

Open:端口处于开放状态;Closed:端口处于关闭状态;
Filtered(过滤的):由于报文无法到达指定的端口,nmap不能够决定端口的开放状态,这主要是由于网络或者主机安装了一些防火墙所导致的
Unfiltered(未被过滤的),当nmap不能确定端口是否开放的时候所打上的状态,这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没就没能够被nmap访问。
Open|filtered状态,这种状态主要是nmap无法区别端口处于open状态还是filtered状态。这种状态只会出现在open端口对报文不做回应的扫描类型中,如:udp,ip protocol ,TCP null,fin,和xmas扫描类型
Closed|filtered状态,这种状态主要出现在nmap无法区分端口处于closed还是filtered时。此状态只会出现在IP ID idle scan中

下面罗列一些使用过程中的小技巧:

一些小技巧:
1.已知情况关闭多余操作(-Pn -n)选择合适的速度
2.选择适当的扫描方式(Ping扫描/TCP扫描/SYN扫描区别)
3.尝试使用 Nmap 脚本
4.尝试伪装扫描(混淆与伪装)


相关推荐

好用的云函数!后端低代码接口开发,零基础编写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...