中国企业网站建设/天津seo优化公司

中国企业网站建设,天津seo优化公司,海口网站建设方面,网络工作室名字大全nmap介绍 Nmap(网络映射器)是一款广受欢迎的网络探测和安全评估工具,被誉为“上帝之眼”。它以其强大的扫描功能和广泛的应用场景,成为系统管理员和安全专家手中的得力助手。本文将对Nmap进行详细介绍,包括其优点、基本…

nmap介绍

        Nmap(网络映射器)是一款广受欢迎的网络探测和安全评估工具,被誉为“上帝之眼”。它以其强大的扫描功能和广泛的应用场景,成为系统管理员和安全专家手中的得力助手。本文将对Nmap进行详细介绍,包括其优点、基本功能、常用命令等。

       如此笼统的说你肯定不明白为什么它为什么会被称为“上帝之眼”,它的功能非常强大,(它可以扫描同学的计算机获取一些计算机的信息,寻找网络内活着的计算机,寻找开放端口等等)它在使用上也非常灵活,支持多种扫描方式。

        本篇旨在介绍一些基本的功能以及概念,如果想要深入学习还需要自己发现它的功能,并且多使用才能更好得理解。本篇在介绍时会发散性地介绍较多的概念,我会尽量展开来叙述,让读者更好理解。

nmap简单功能的使用以及基本原理

一、主机扫描

        主机扫描的功能是用来发现网络中的存活主机的,Nmap使用各种技术,如ping扫描、ARP扫描、ICMP探测等,来确定主机是否在线。这是进行后续扫描和评估的基础,有助于用户创建一个有效的目标主机清单。

        我们首先介绍一下这些扫描方式。

ping扫描

        ping扫描,通常是通过发送ICMP(Internet Control Message Protocol,因特网控制报文协议)回显请求数据包来探测目标主机是否在线。ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。它是网络层的一个协议,主要目的是向数据通信中的源主机报告错误,以及提供有关通信状态的信息。

        ping命令是Windows和Linux等操作系统自带的一个网络工具,用于测试与远程计算机或本机的连接。它通过发送ICMP回显请求数据包给目标主机,并监听回显应答数据包来确定目标主机的存活状态。

        例如,我想通过这种扫描的方式扫描某范围内的IP主机在线状态。我需要输入的是

nmap -sn <网段>

        而网段的表达方式同样也是不局限的。

单个主机扫描

        例如,我们现在是家长,我们已知电脑的IP是192.168.1.3

        我们想偷偷检测一下孩子有没有打开电脑,我们可以在确认连接了家里的网络之后,对这个IP地址进行扫描。

        这就是扫描的结果,我们发现从发送ICMP到对方给我们响应是非常快的。我们发现得到的结果是Host is up那么我们就不用多说什么了,直接去惩罚孩子就行。

通过起始IP和结束IP来规定扫描范围

        在我们家连上网之后,我发现网络越来越慢,我们怀疑邻居蹭我们的网络,但是我们没有证据怎么办,一般在我们的网段内进行整体扫描然后看一下设备数量即可确定有没有额外的设备。

        但是我们的设备IP是192.168.1.3那么我们的扫描范围应该是什么样的?是192.168.1.1->192.168.1.254还是192.168.1.3->192.168.254.3我们不得而知,但是,我们发现一般输入ip(if)config之后,我们还会得到子网掩码,什么是子网掩码?

        子网掩码>

        子网掩码是用于划分IP地址中的网络部分和主机部分的,那它的划分原理是什么呢?可以看到在上面的图片中我们的子网掩码是255.255.255.0,我们知道一般IP是由三个小数点分割的四个八位二进制数(00000000b-11111111b)组成的。那么这就注定了它的范围不会超过255,同时,这个数一般不会是0或者255。那么如果你会十进制到二进制的转换的话,你可以很容易的将上面的子网掩码翻译成二进制我们发现它就是11111111.11111111.11111111.00000000,我们规定为一的部分是网络部分,而为0的部分是主机部分,所以我们的主机和同一个局域网内的主机不同的地方就是主机的名字,也就是四个数里面的最后一个数,所以我们的扫描范围应该是192.168.1.1->192.168.1.254。

        通常我们的扫描范围变得更大之后,我们就会等待更长的时间。

好吧,它扫了不到三秒就把所有的设备都扫出来了。

CIDR书写扫描表达式范围

        在上面的扫描中通常我们认为书写是不够优雅和正规的,我们如果想扫了这个网段的所有的设备,我们可以输入以下的指令:

nmap -sn 192.168.1.0/24

        可以看到,我们得到了所有的结果。但是如果你只想扫描0->100那么这种书写格式可能不如上一种通过直接书写范围扫描的合适了。

        除了ping的扫描方式之外,它同样还有其他的方式来扫描。

ARP扫描

        ARP扫描是在局域网内根据IP地址获取物理地址(MAC地址)的扫描方法。在Nmap中,可以使用-PR参数来进行ARP扫描。但请注意,ARP扫描仅适用于直接连接的网络(即同一局域网内)。它的扫描指令是:

nmap -PR <网段>

        我们发现这种扫描的方式我们会得到更加完整的数据结果,甚至连开放的端口都给我们扫出来了,虽然它更快但是同样会耗费更长的时间,我们扫一个的时间上面已经扫了254个了。

        在我们使用工具的时候,我们只是修改了一下-PR就可以让它实现不同的扫描方式,那么我们现在了解一下什么是ARP也是有必要的。

ARP介绍

        ARP,全称Address Resolution Protocol,即地址解析协议,是一种网络协议,它的主要功能是在网络层(IP层)和数据链路层(MAC层)之间进行地址转换。具体来说,ARP协议允许网络设备(如计算机、打印机、路由器等)根据已知的IP地址找到对应的MAC地址,以便在局域网(LAN)内实现数据的正确传输。

        APR是通过广播--请求--应答的方式来工作的。

        请求:主机A会向局域网内的所有设备发送一个ARP请求包。这个请求包中包含主机A的IP地址和MAC地址,以及主机B的IP地址。由于不知道主机B的MAC地址,所以ARP请求包会被发送到局域网内的广播地址。

        应答:局域网内的所有设备都会收到这个ARP请求包,并检查请求包中的IP地址是否与自己的IP地址匹配。如果某个设备(如主机B)发现请求包中的IP地址与自己的IP地址匹配,它就会生成一个ARP应答包,其中包含自己的MAC地址,并将这个应答包发送回主机A。

        缓存:为了提高效率,主机A会将主机B的IP地址和MAC地址的对应关系存储在ARP缓存中。这样,当主机A下次需要向主机B发送数据时,就可以直接从ARP缓存中查找MAC地址,而无需再次发送ARP请求。

        简单来说,就是我们的路由器要向姓名(MAC地址)为a的设备发送信息,但是并不知道这个a的id=1(IP),于是我们的路由器就会问所有的设备:“你是不是叫a?”(广播),当他问道正确的设备时,这个设备就会回复他:“我就是a。”(ARP相应包)。这个时候为了下次的数据传输更加方便,你的设备通常会创建一个键值对存储起来(缓存),在这个例子中就是a:1下次找的时候就会更加方便了。

        这不禁让我想到了一种网络攻击的方式。如果在缓存中我们给设备注入错的ARP那么设备就会向错误的设备发送请求,让它把包发给我们而不是路由器,我们再把包丢了,这样他的设备就显示正常连接了网络,但是传输数据的功能就会失效。

ARP投毒

        这种投毒的欺骗方式,一般有两种,我们既可以通过欺骗路由器我们是目标主机,从而让路由器把各种响应包发给我们,我们再丢弃掉。

欺骗路由器

        在操作过程中我们必须要用root的用户权限,输入sudo su或者直接打开红色的终端都可以。

        输入指令:

arpspoof -i <网络接口> -t 192.168.1.1 192.168.1.6

        在上面的指令中,192.168.1.1是我们希望欺骗的路由器的地址,而192.168.1.6是我们希望欺骗的主机地址(我的手机)。

        这个网络接口通常是指你的网卡,我们可以输入ifconfig查看网卡都有什么。一般在没有外接网卡的情况下,大家的电脑都是eth0和wlan0网卡两个,我们可以使用eth0网卡来欺骗。

        接下来,我们输入指令测试一下。

        可以看到,我们右上角显示的网络是正常的,但是我们就是无法访问浏览器界面。

输入指令之后就会得到这个界面,我们会舍弃路由器发送的响应包,但是这种攻击只是暂时的,它并不会长期影响,如果我们想进行长期的攻击就需要编写一个脚本,在python中有subprocess包它会成为一个不错的选择,或者编写shell脚本也是可以的。

        而另一种就是让被攻击的主机认为我们是路由器,它会把各种请求发给我们,我们再丢弃掉即可。

欺骗主机

        欺骗主机只需要把上面的指令的后两个IP地址调换过来即可,如果上面的欺骗会让我们的路由器无法找到目标主机,那么这种方法就会让我们的目标主机无法向路由器发送请求。

        该欺骗我就不再过多演示,与上面的大差不差。

ICMP探测

        虽然ICMP探测通常指的是使用ICMP数据包来探测网络设备的存活状态,但在Nmap中,这可以通过Ping扫描来实现,因为Ping扫描本质上就是使用ICMP(或其他协议)数据包进行探测。或者,为了更明确地指定使用ICMP协议进行探测(尽管Nmap通常会根据目标选择最合适的协议),可以使用-PE参数(但这在大多数情况下与-sn的效果相似,除非有特定的需求或配置)。在某些情况下,由于防火墙或网络配置的限制,ICMP数据包可能会被阻止。因此,如果Ping扫描失败,可以尝试使用其他协议或扫描方法。

二、端口扫描

        用于确定目标主机上开放的网络端口。Nmap支持多种扫描技术,如TCP SYN扫描、TCP Connect扫描、UDP扫描等。通过分析响应和超时信息,Nmap可以识别主机上开放的端口,并确定所运行的服务类型。下面我们详细介绍这三种扫描的方式。

TCP SYN扫描

        TCP SYN扫描利用TCP协议的三次握手过程来检测目标主机上的开放端口。攻击者发送一个SYN包给目标主机的每个端口,如果目标主机返回一个SYN/ACK包,则表示该端口是开放的;如果目标主机返回一个RST包,则表示该端口是关闭的。因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。

nmap -sS <目标IP/主机名>

TCP Connect扫描

        TCP Connect扫描使用完整的TCP连接来检测目标主机上的开放端口。攻击者尝试建立一个TCP连接到目标主机的每个端口,如果连接成功,则表示该端口是开放的;如果连接失败,则表示该端口是关闭的。

nmap -sT <目标IP/主机名>

UDP扫描

        UDP扫描用于检测UDP端口的开放状态。由于UDP是无连接的协议,没有像TCP三次握手那样的确认机制,因此UDP扫描需要发送一个UDP包到目标主机的每个端口,并根据目标主机的响应来判断端口状态。如果目标主机返回一个ICMP端口不可达的消息,则表示该端口是关闭的;如果目标主机没有返回任何消息(或在一定时间内没有响应),则表示该端口可能是开放的或者被过滤的。

nmap -sU <目标IP/主机名>

        我们在主机上打开一个服务器然后用第二种方法扫一下试试。

        我们先随便把一个简单的php代码部署到服务器,可以看到我们部署的是8000端口,我们知道浏览器浏览网页走的是TCP协议,所以我们按第一种第二种方式都是可以扫描到的。

我们扫了一千个端口发现只有我们服务器占用的8000端口是开着的,而且是tcp协议。

三、操作系统探测

        用于确定目标主机运行的操作系统类型。Nmap通过分析目标主机的网络响应、TCP/IP栈行为和其他特征来进行操作系统识别,这有助于评估其安全性,并确定适当的安全策略和防护措施。

        这个TCP/IP栈行为应该是计算机网络上比较入门级别的知识点了。我直接从网上搜索过来就不多说了。

        TCP/IP栈行为,指的是TCP/IP协议栈在网络通信中的具体运作方式和过程。TCP/IP协议栈是一个网络通信协议集合,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。这个协议栈通常被分为四层或五层,每一层都负责不同的功能,共同协作以完成网络通信。

TCP/IP协议栈的分层结构

        应用层:这是TCP/IP协议栈的最高层,主要负责处理特定的应用程序细节。它定义数据格式,并按照对应的格式解读数据。常见的协议有HTTP(用于Web通信)、FTP(用于文件传输)、SMTP(用于电子邮件发送)等。应用层将高层应用程序的需求转换为网络通信需求,并将网络响应转换为应用程序可以理解的形式。

        传输层:这一层主要负责端到端的数据传输服务。它定义端口,确认主机上应用程序的身份,并将数据从一端主机传送到另一端主机。传输层的主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的数据传输服务,通过建立连接、确认接收、流量控制和拥塞控制等机制来确保数据的完整性和顺序性。而UDP则提供无连接的数据传输服务,适用于对实时性要求较高的应用,如视频会议和在线游戏。

        网络层:网络层的主要任务是负责数据包从源主机到目的主机的路由选择和传输。它使用IP协议(互联网协议)来标识和寻址不同的网络设备,并将数据包从一个网络传输到另一个网络。IP协议负责将数据包封装成IP数据报,并添加源地址和目的地址信息,以便在网络中进行传输。网络层还负责处理数据包的分片和重组,以及处理网络拥塞控制。

        数据链路层(或网络接口层):这一层负责本地网络连接和数据帧传输。它包括了以太网、Wi-Fi等物理网络技术,负责将数据包封装成帧,并在物理介质上传输。数据链路层还负责错误检测和纠正,确保数据在物理介质上的正确传输。它使用MAC地址(媒体访问控制地址)来标识网络接口。

        物理层(在某些五层模型中):这是TCP/IP协议栈的最底层,负责建立设备与设备间的物理连接。它将二进制数据转换为电信号或其他形式的信号,通过物理介质(如电缆、光纤或无线信号)进行传输。

        这种探测操作起来也是非常简单,因为操作系统的英文是operating system或者os所以输入的指令就是-O。

nmap -O <目标IP/主机名>

        我们用kali扫描一下主机192.168.1.3使用的是Windows系统。

        如果你想获得更加详细的信息,包括操作系统版本、内核信息等,你可以使用:

nmap -A <目标IP/主机名>

给我扫了三分钟了,这种的确没有上面的那一种更加方便,扫出来的东西似乎有用的不多。因此我还是更倾向于使用-O扫描。

四、服务器版本探测

        用于确定目标主机上运行的具体服务及其版本信息。Nmap使用各种技术和指纹库来识别服务类型和版本,包括分析响应信息、探测已知漏洞等。这有助于评估目标主机上运行的服务的安全性和漏洞风险,以及进行服务管理和升级计划。

        输入的指令是:

nmap -p 8000 -sV 192.168.1.18

        我们用django开发了一个服务器端,我们扫描一下看看都有什么结果。

        上图左边是nmap扫描得到的结果,右边是django服务端的报表,最终nmap还是很能干地发现了我们的服务器是python服务器。

        以上是一些基本的操作,有兴趣的同学可以再深入了解。

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

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

相关文章

Spring Boot 整合 log4j2 日志配置教程

文章目录 前言一、常用日志框架二、配置参数介绍 1. 日志级别2. 输出形式3. 日志格式 3.1 PatternLayout 自定义日志布局 三、Log4j2 配置详解 1. 根节点 Configuration2. Appenders 节点 2.1 Console 节点2.2 File 节点2.3 RollingFile 节点 2.3.1 ThresholdFilter 节点2.3.…

MySQL八股学习笔记

文章目录 一、MySQL结构1.宏观结构1.1.Server层1.2.存储引擎层 2.建立链接-连接器3.查询缓存4.解析SQL-解析器&#xff08;1&#xff09;词法分析&#xff08;2&#xff09;语法分析 5.执行SQL5.1.预处理器 prepare5.2.优化器 optimize5.3.执行器 execute&#xff08;1&#xf…

leetcode876.链表的中间结点

目录 问题描述示例提示 具体思路思路一 代码实现 问题描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 题目链接&#xff1a;链表的中间结点 示例 提示 链表的结点数范围是 [1, 100]   1 &…

SpringBoot整合Redis和Redision锁

参考文章 1.Redis 1.导入依赖 <!--Redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.apache.c…

C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector

C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector code review! 文章目录 C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector1. `std::copy`1.1.用法1.2.示例2.`std::vector::assign`2.1.用法2.2.示例3.区别总结4.支持assign的容器和不支持ass…

C# 背景 透明 抗锯齿 (效果完美)

主要是通过 P/Invoke 技术调用 Windows API 函数 gdi32.dll/user32.dll&#xff0c;同时定义了一些结构体来配合这些 API 函数的使用&#xff0c;常用于处理图形绘制、窗口显示等操作。 运行查看效果 局部放大&#xff0c;抗锯齿效果很不错,尾巴毛毛清晰可见。 using System; u…

前端常见面试题-2025

vue4.0 Vue.js 4.0 是在 2021 年 9 月发布。Vue.js 4.0 是 Vue.js 的一个重要版本&#xff0c;引入了许多新特性和改进&#xff0c;旨在提升开发者的体验和性能。以下是一些关键的更新和新特性&#xff1a; Composition API 重构&#xff1a;Vue 3 引入了 Composition API 作为…

【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

目录 ​编辑 1. 插件核心功能 1.1 基础变换操作 1.2 高级特性 2. 安装与配置 2.1 导入插件 2.2 配置控制器参数 2.3 为物体添加交互功能 3. 使用示例 3.1 基础操作演示 3.2 多选与批量操作 3.3 自定义光标与外观 4. 高级配置技巧 4.1 动态调整包围框控件尺寸 4.…

Lineageos 22.1(Android 15)Launcer简单调整初始化配置

一、前言 Launcer的初始化配置主要在如下的xml文件夹下&#xff0c;默认读取的5x5 这里我们把device_profiles调整一下&#xff0c;然后新建一个default_workspace_my.xml作为我们自己的配置就行。 二、配置 注意Lineageos 的Launcer是在lineageos/packages/apps/Trebuchet…

排查JVM的一些命令

查看JVM相关信息的方法 环境&#xff1a; Win10, jdk17 查看端口的Pid netstat -ano | findstr <端口号>列出当前运行的JVM进程 ## 用于输出JVM中运行的进程状态信息。通过jps&#xff0c;可以快速获取Java进程的PID&#xff08;进程标识符&#xff09;&#xff0c; …

DeepSeek 助力 Vue 开发:打造丝滑的瀑布流布局(Masonry Layout)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

封装一个vue3控制并行任务数量的组合式函数

一. 使用场景 使用环境&#xff1a; vue3 当需要处理多个异步任务时&#xff0c;想要控制并行异步任务的数量&#xff0c;不想所有任务同时执行导致产生性能上的问题&#xff0c; 比如当需要同时发起多个网络请求&#xff0c;但又不想一次性发出过多请求导致服务器压力过大或…

最新华为 HCIP-Datacom(H12-821)2025.2.20

最新 HCIP-Datacom&#xff08;H12-821&#xff09;&#xff0c;完整题库请扫描上方二维码访问。 如图所示为某OSPF网络&#xff0c;已知R1和R2已,成功建立邻接关系&#xff0c;现一工程师在R2上配置了图中命令。那么在R2上查看LSDB时&#xff0c;可能存在以下哪些LSA? A&…

Web自动化之Selenium 超详细教程(python)

Selenium是一个开源的基于WebDriver实现的自动化测试工具。WebDriver提供了一套完整的API来控制浏览器&#xff0c;模拟用户的各种操作&#xff0c;如点击、输入文本、获取页面元素等。通过Selenium&#xff0c;我们可以编写自动化脚本&#xff0c;实现网页的自动化测试、数据采…

如何调用 DeepSeek API:详细教程与示例

目录 一、准备工作 二、DeepSeek API 调用步骤 1. 选择 API 端点 2. 构建 API 请求 3. 发送请求并处理响应 三、Python 示例&#xff1a;调用 DeepSeek API 1. 安装依赖 2. 编写代码 3. 运行代码 四、常见问题及解决方法 1. API 调用返回 401 错误 2. API 调用返回…

基于flask+vue的租房信息可视化系统

✔️本项目利用 python 网络爬虫抓取某租房网站的租房信息&#xff0c;完成数据清洗和结构化&#xff0c;存储到数据库中&#xff0c;搭建web系统对各个市区的租金、房源信息进行展示&#xff0c;根据各种条件对租金进行预测。 1、数据概览 ​ 将爬取到的数据进行展示&#xff…

磐维数据库双中心容灾流复制集群搭建

1. 架构 磐维数据库PanWeiDB V2.0.0基于gs_sdr工具&#xff0c;在不借助额外存储介质的情况下实现跨Region的异地容灾。提供流式容灾搭建&#xff0c;容灾升主&#xff0c;计划内主备切换&#xff0c;容灾解除、容灾状态监控等功能。 2. 部署双中心磐维集群 2.1. 主集群 角色…

Linux应用之构建命令行解释器(bash进程)

目录 1.分析 2.打印输入提示符 3.读取并且处理输入字符串 4.创建子进程并切换 5.bash内部指令 6.完整代码 1.分析 当我们登录服务器的时候&#xff0c;命令行解释器就会自动加载出来。接下来我们就。在命令行中输入指令来达到我们想要的目的。 我们在命令行上输入的…

ETL工具: Kettle入门(示例从oracle到oracle的数据导入)

kettle介绍 ETL工具,用于对数据的抽取&#xff08;Extract), 转换(Transform),加载 (Load&#xff09; Kettle 是一种ETL工具, 现称为 Pentaho Data Integration (PDI) 特点:纯JAVA语言编写 官方学习文档 网站: https://docs.hitachivantara.com/r/en-us/pentaho-data-int…

SQLMesh 系列教程7- 详解 seed 模型

SQLMesh 是一个强大的数据建模和管道管理工具&#xff0c;允许用户通过 SQL 语句定义数据模型并进行版本控制。Seed 模型是 SQLMesh 中的一种特殊模型&#xff0c;主要用于初始化和填充基础数据集。它通常包含静态数据&#xff0c;如参考数据和配置数据&#xff0c;旨在为后续的…