漫画:什么是中间人攻击

转载自 漫画:什么是中间人攻击

故事发生在上世纪40年代......





在解放战争初期,东北牡丹江一带,奶头山有一个土匪副官叫栾平。他计划将包含重要信息的先遣图,献给威虎山的土匪头子座山雕。





而后栾平被共军抓获,侦查员杨子荣利用审讯栾平获得的情报以及先遣团,巧妙混入威虎山。





结局不用多说,栾平和座山雕自然都倒了大霉。






虽然那个时候没有互联网,但杨子荣采取的谋略却相当于现在威胁网络安全的中间人攻击(MITMA,man in the middle attack)


中间人攻击是一种间接的入侵攻击,这种攻击模式是将一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。


黑客利用这台“中间人”计算机模拟相互通信的一端或者两端,使“中间人”能够与原通信计算机建立活动连接并允许其读取或修改通信两端所传递的信息。





在故事里,栾平与座山雕就好比网络通信端A和通信端B;杨子荣好比是攻击者C;几人传递的先遣图和联络暗号,则好比是网络传输的数据信息。大多数情况下,中间人攻击是发生在局域网中。







1.DNS欺骗:


对于DNS服务器,相信小伙伴们都很熟悉了。在互联网的世界里,DNS(Domain Name System,域名系统)用于把访问域名解析成IP地址,使得用户发出的网络请求可以寻找到正确的目标服务器。


攻击者往往可以通过入侵DNS服务器,或是篡改用户本地hosts文件,从而截获到用户发出的请求。截获请求以后,根据不同目的,攻击者既可以让用户“误入歧途”,引导用户访问一个假网站,也可以把用户请求依旧转发给目标服务器,仅仅实现监听的目的。


欺骗的流程如下图所示:





需要注意的是,这里为了便于描述,大大简化了DNS解析的过程。实际场景涉及到DNS的递归查询、root DNS、A记录解析、CName解析等概念,以后有可能专门写文介绍相关知识。



2.APR欺骗:


如果说DNS欺骗是在广域网中的拦截用户请求,那么APR欺骗就是在局域网中的拦截用户请求。ARP(Address Resolution Protocol)地址解析协议,是一种将IP地址转化成物理地址的协议。


在局域网中,主机A想要跟主机B(假设IP是123)通信,不仅需要知道对方的IP,也要需要知道对方的MAC地址。如果主机A的本地ARP缓存表没有主机B的地址缓存,主机A就会在向局域网内的所有主机发起广播,请求IP为123的主机。



主机B收到广播,检查自己的IP地址与主机A请求中的IP地址一致,就会把自己的MAC地址返回给主机A。主机A接收到反馈以后,会把主机B的MAC地址存入本地ARP缓存表,以便下次直接使用。




如何实现APR欺骗呢?攻击者利用了APR协议的漏洞,通过局域网内部的一台主机(IP并不是123),冒充主机B,向主机A发送自己的MAC地址。主机A接到消息以后,无法识别消息是真的来自主机B,还是来自一个冒名顶替者,只能照样把接受到的新MAC地址存入ARP缓存表,取代原先的记录。



下一次,当主机A想要向主机B发送请求的时候,会先查询自己的ARP缓存表,查出主机B的MAC地址是def(本来应该是abc),结果把请求发给了主机D。从而让攻击者拦截到了请求信息。




3.代理服务器:


这个概念就很简单了。所谓代理服务器,就是用户主机在访问网站时所使用的各种代理,比如wifi,比如VPN,比如翻墙工具。这些代理未必都是可靠的,有些可能会遭到黑客攻击,有些可能自身就有问题。当用户通过这些代理发送请求的时候,请求信息自然而然就会被劫持。







1.使用DNSSEC机制


Domain Name System Security Extensions (DNSSEC)DNS安全扩展,是一系列DNS安全认证的机制,可以验证用户访问的站点地址是否有效,解决DNS欺骗的问题。



2.使用防火墙和杀毒软件


在局域网内,发起ARP欺骗的主机往往是中了病毒的机器,从而被黑客控制,因此需要定期查杀病毒。而防火墙可以有效地阻挡疑似APR欺骗的消息。



3.使用HTTPS协议


HTTPS协议在HTTP协议的基础上增加了SSL层,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。这样一来,即使攻击者截获了用户发出的请求信息,也无法解密信息,更无法篡改信息。





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

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

相关文章

微信小程序的setData

1.setData()中修改为bool类型不要加" " 例:setData({"a":false}) 2.修改以变量作为索引值的数组时的语法为 this.setData({ [ judge[${current}] ]: true })

转:AKF 扩展立方体

转: https://www.cnblogs.com/fengyc/p/12286726.html AKF 扩展立方体(AKF Scale Cube)是一个描述从单体应用到可扩展架构的模型,见 (https://akfpartners.com/growth-blog/scale-cube)[https://akfpartners.com/growth-blog/scal…

漫画:三分钟了解敏捷开发

转载自 漫画:三分钟了解敏捷开发 什么是敏捷开发? 敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。 在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试&#xff0c…

微信小程序数组的坑

定义和用法 splice() 方法用于添加或删除数组中的元素。 注意:这种方法会改变原始数组。 返回值 如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。 主要:array.splice(index,howmany&#xff09…

转: 理解RESTful架构

转自: http://www.ruanyifeng.com/blog/2011/09/restful.html 作者: 阮一峰 日期: 2011年9月12日 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。 这种"互联网软件"采用客户端/服务器模式&a…

Git 12 岁了,送给你 12 个 Git 使用技巧

转载自 Git 12 岁了,送给你 12 个 Git 使用技巧Git,一个分布式版本控制系统,它已经成为了开源世界的源码控制默认工具,在4月7号12岁了。但是使用Git中更另人沮丧的是,你需要了解多少才能让你更有效的使用它。同时这也是…

转:Kafka、RabbitMQ、RocketMQ等消息中间件的介绍和对比

转自: https://blog.csdn.net/yunfeng482/article/details/72856762 前言 在分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。 概念 MQ简…

微信小程序定时器setInterval()的使用注意事项

setInterval(function(){}, number 时间间隔/ms) 注意在setInterval中定义的函数中使用 this 指向的是该计时器,若要用到页面数据应如下操作: let thatthis setInterval(function(){ that.data.a0; },number 时间间隔/ms) …

图解分布式架构的演进

转载自 图解分布式架构的演进一、什么是分布式架构分布式系统(distributed system) 是建立在网络之上的软件系统。内聚性:是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性:是指每一个数据库分布节点…

转:微服务架构:BFF和网关是如何演化出来的?(这篇文章相当棒)

转自: https://juejin.im/entry/6844903806208049159 这篇文章写得非常棒,从服务,到bff, 到gateway 的一步步演化,描述的非常清晰易懂。 1、介绍 BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概…

微信小程序的坑

<input>组件后台接受到的是字符串类型&#xff0c;若要用数字类型应用Number()进行转化 微信小程序中许多API会是页面的 this 转向应注意用 let that this 来获取页面的指针&#xff01;

实现滚到div时淡入效果

首先实现淡入的动画 CSS代码如下&#xff1a; keyframes float { from { position: relative; margin-top:200px; opacity: 0; } to { position: relative; margin-top: 50px; opacity: 1; } } 接下来用JS判断当前滚动的位置并加入…

高级 Java 面试通关知识点整理

转载自 高级 Java 面试通关知识点整理1、常用设计模式单例模式&#xff1a;懒汉式、饿汉式、双重校验锁、静态加载&#xff0c;内部类加载、枚举类加载。保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。代理模式&#xff1a;动态代理和静态代理&#xff0c;…

windows查找端口占用并杀死端口进程

tasklist 查看进程netstat -ano|findstr "8080" 查找端口 8080 占用信息&#xff1b; tasklist|findstr 7176 查找进程id为 7176的进程信息&#xff1b; taskkill /F /PID 7176 杀死进程7176

Angular项目打包到nginx部署过程

Angular项目打包到nginx部署过程 一. 打包Angluar ng build,会在项目文件夹下生成dist文件&#xff0c;里面是打包后的文件 二. 部署nginx 在nginx官网中下载nginx 把dist文件夹下的打包文件拷贝到nginx/html下并重命名为myProj 修改conf/nginx.conf文件 location / {root…

SpringMVC表单验证器的使用

转载自 SpringMVC表单验证器的使用本章讲解SpringMVC中怎么通过注解对表单参数进行验证。 SpringBoot配置 使用springboot&#xff0c; spring-boot-starter-web会自动引入 hiberante-validator, validation-api依赖。 在 WebMvcConfigurerAdapter实现类里面添加验证器及国际化…

转-Kafka【第一篇】Kafka集群搭建

转自&#xff1a; https://www.cnblogs.com/luotianshuai/p/5206662.html Kafka【第一篇】Kafka集群搭建 Kafka初识 1、Kafka使用背景 在我们大量使用分布式数据库、分布式计算集群的时候&#xff0c;是否会遇到这样的一些问题&#xff1a; 我们想分析下用户行为&#xf…

Angular 应用解决跨域访问的问题

设置反向代理 原理是设置反向代理服务器&#xff0c;让 Angular 应用都访问自己的服务器中的API&#xff0c;而这类API都会被反向代理服务器转发到 Java 服务API中&#xff0c;而这个过程对于 Angular 应用是无感知的。 业界经常是采用 NGINX 服务来承担反向代理的职责。而在 …

57张PPT彻底搞清楚区块链技术。。

转载自 57张PPT彻底搞清楚区块链技术。。

如何基于tomcat构建web站点

修改 conf/server.xml 配置&#xff0c; 如下&#xff1a; <Server port"8005" shutdown"SHUTDOWN"><Service name"Catalina111"><Connector port"8080" protocol"HTTP/1.1"connectionTimeout"20000&q…