网络安全 - DNS劫持原理 + 实验

DNS 劫持

什么是 DNS 为什么需要 DNS

D N S \color{cyan}{DNS} DNS(Domain Name System)即域名系统。我们常说的 DNS 是域名解析协议。

DNS 协议提供域名到 IP 地址之间的解析服务。计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名。用户通常使用主机名或域名来访问对方的计算机,而不是直接通过 IP 地址访问。因为与 IP 地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。

为了解决上述的问题,DNS 服务应运而生。DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。

DNS 工作原理

DNS 的递归和迭代

在这里插入图片描述

本地DNS:即 host

根服务器: 根服务器主要用来管理互联网的主目录。全世界只有 13 个根逻辑服务器节点,其中 10 个设置在美国,另外 3 个分别在英国、瑞典、日本。

顶级域名服务器: 顶级域名服务器一般用于存储 .com.edu.cn 等顶级域名。

递归服务器: 递归服务器可以理解为存储着官方域名解析授权的授权服务器。一般存储着这个网络中域名和 IP 地址的解析关系。

试想一下,如果每个用户在上网的时候都向授权服务器发送请求,那授权服务器必然承受不住,所以就有了缓存服务器。

缓存服务器: 缓存服务器相当于授权服务器的代理。用户在每次上网的时候,域名解析的请求都是发给缓存服务器的。缓存服务器经过迭代查询后,将域名和 IP 的解析表存储在本地,等后续再有用户请求相同的域名时,就会直接答复,不再请求。

DNS 解析过程

1、DNS 客户端查询先采用递归方式,先确认本地 DNS 文件是否有域名和 IP 的解析表。如果没有,则将请求发送给缓存服务器,缓存服务器判断本地是否有这个域名的解析缓存。

2、如果本地没有缓存,就会把域名发送到根服务器。根服务器收到 www.baidu.com 请求后,会判断 .com 是谁授权管理,并返回 .com 所在的顶级域名服务器 IP 地址。

3、缓存服务器继续向顶级域名服务器发送 www.baidu.com 的解析请求,顶级域名服务器收到请求后,会返回下一级 .baidu.com 的递归服务器 IP 地址。

4、缓存服务器继续向递归服务器发送 www.baidu.com 的解析请求,递归服务器收到请求后,返回www.baidu.com 的解析地址。(如果域名层级较多,则递归服务器也会存在多级。)

5、缓存服务器得到 www.baidu.com 的解析 IP 后,将 IP 地址发送给客户端,同时在本地存储。

6、后续一段时间内,当有客户端再次请求 www.baidu.com 的域名解析时,缓存服务器直接回应解析的 IP 地址,不再重复询问。

DNS 劫持原理

本质上是利用了 ARP 欺骗原理。恶意攻击者通过 ARP 欺骗伪装成缓存服务器,将客户端的 DNS 请求返回指定的IP地址。

假设用户想要访问一个名为 www.baidu.com 的网站。当用户在浏览器中输入网址并按下回车时,操作系统会向 DNS 服务器发送一个 DNS 查询请求,以获取该网站的 IP 地址。

正常情况下,DNS服务器会返回与 www.baidu.com 对应的正确 IP 地址,然后用户的浏览器会使用该 IP 地址来建立连接并加载网站内容。

但是,在 DNS 劫持的情况下,恶意攻击者可能会干扰 DNS 查询过程。攻击者可能会修改 DNS 服务器的配置或在网络中插入恶意设备,以便在用户发出 DNS 查询请求时返回错误的 IP 地址。

例如,假设攻击者将 www.baidu.com 的 DNS 记录篡改为指向恶意网站的 IP 地址。当用户尝试访问 www.baidu.com时,DNS 服务器返回的 IP 地址实际上是恶意网站的 IP 地址,而不是真正的www.example.com网站的 IP 地址。

因此,用户的浏览器会被重定向到恶意网站,可能会导致用户受到钓鱼攻击或下载恶意软件。

DNS 劫持实验

实验目的

本次实验旨在通过配置和使用 Kali Linux 中的 dnsmasq 服务,演示 DNS 劫持攻击的过程,并观察其对被攻击主机的影响。通过本实验,了解 DNS 劫持的原理及其防御方法,以加强网络安全意识和能力。

实验环境
  • 两台主机:
    • 被攻击主机(Windows/Linux)
    • 攻击者主机(Kali Linux)
  • Wireshark 安装在攻击者主机主机上,用于抓包分析。
实验步骤
1、在 Kali Linux 中安装并配置 dnsmasq 服务 并配置 dnsmasq 进行域名劫持
  • 安装 dnsmasq

    apt-get update
    apt-get install dnsmasq -y
    
  • 配置 dnsmasq

    echo -e "resolv-file=/etc/resolv.conf\nstrict-order\nlisten-address=192.168.100.139,192.168.100.142\naddress=/zhaofan.com/192.168.100.10\nserver=8.8.8.8" >> /etc/dnsmasq.conf
    
  • 本地启用 Dnsmasq 解析

    echo "" > /etc/resolv.conf && echo "nameserver 192.168.100.10" >> /etc/resolv.conf
    
  • 在 hosts 文件中添加解析

    echo "192.168.100.10 zhaofan.com" >> /etc/hosts
    
  • 启动 dnsmasq 服务并设置开机自启动

    systemctl restart dnsmasq && systemctl enable dnsmasq
    
2、修改被攻击主机的 DNS 设置

在被攻击主机上,将其 DNS 服务器地址指向 Kali Linux 主机的 IP 地址。

  • Windows主机:

    打开网络和共享中心,点击当前连接的网络,进入属性,选择Internet 协议版本4 (TCP/IPv4),然后修改 DNS 服务器地址为 192.168.100.20

  • Linux主机:

    修改 /etc/resolv.conf 文件,添加或修改以下内容:

    echo "" > /etc/resolv.conf && echo "nameserver 192.168.100.10" >> /etc/resolv.conf
    
3、 使用 arpspoof 进行 ARP 欺骗

在 Kali Linux 上,使用 arpspoof 进行 ARP 欺骗,使得被攻击主机的流量通过攻击者主机:

 arpspoof -i eth0 -t 192.168.100.142 -r 192.168.100.2
4、观察被攻击主机访问被劫持域名时的重定向情况
  • 启动 Wireshark:

    在 Kali Linux 上启动 Wireshark 并选择合适的网络接口,开始抓包。

    在这里插入图片描述

  • 选择合适的网络接口,开始捕获数据包。

    检查网卡信息

      ifconfig	
    

请添加图片描述
请添加图片描述请添加图片描述

  • 搭建 HTTP 服务器

    在 Kali Linux 上搭建HTTP 服务器

    python3 -m http.server 80
    
  • 被攻击主机访问域名

    在被攻击主机上,打开浏览器访问 zhaofan.com

    如果被攻击主机访问 zhaofan.com 时显示的是 Kali Linux 上的 HTTP 服务器页面,说明 DNS 劫持成功。

  • 观察效果

    在 Wireshark 中,可以观察到 DNS 请求和响应。

    请添加图片描述

    DNS请求:被攻击主机请求解析 zhaofan.com

    DNS响应:Kali Linux主机的 dnsmasq 返回伪造的IP地址(192.168.100.10)。

    被攻击主机会被重定向到攻击者控制的IP地址,而不是 zhaofan.com 的真实IP地址。

5、分析与讨论
  • ARP欺骗原理

    ​ 通过 ARP 欺骗,被攻击主机的 ARP 缓存中会将网关的 MAC 地址错误地映射为攻击者主机的 MAC 地址。这使得被攻击主机的流量首先经过攻击者主机,从而实现流量拦截和篡改。

  • DNS劫持原理

    ​ 通过配置 dnsmasq,攻击者主机能够响应被攻击主机的 DNS 查询请求,并返回伪造的 DNS 解析结果,将特定域名解析为攻击者指定的 IP 地址。

  • 流量分析

    ​ 通过 Wireshark 抓包,可以观察到被攻击主机的 DNS 查询请求被拦截和篡改,返回的 IP 地址是攻击者主机配置的伪造地址。通过这种方式,攻击者可以实现对被攻击主机的 DNS 劫持。

  • 防御措施

    • 使用静态 ARP 表:通过配置静态 ARP 表,可以防止 ARP 欺骗攻击。
    • 启用 DNSSEC:DNSSEC 提供 DNS 数据的真实性和完整性验证,能够有效防止 DNS 劫持。
    • 使用 HTTPS:通过使用 HTTPS 协议,可以确保数据传输的安全性,即使 DNS 劫持也难以篡改加密的数据传输。
6、实验反思
  • 实验过程中的挑战

    ​ 在实验过程中,需要确保被攻击主机正确配置为使用攻击者主机作为 DNS 服务器,同时需要确保 ARP 欺骗成功生效。这要求对网络环境和配置有较高的理解和掌控能力。

  • 实验效果评估

    ​ 通过本次实验,可以直观地理解 DNS 劫持和 ARP 欺骗的原理和实施方法,同时也认识到这些攻击手段的危险性和潜在危害。

  • 安全防护意识

    ​ 通过实验,可以更加深刻地认识到网络安全的重要性,了解各种防御措施的必要性和实施方法,提高网络安全防护意识。

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

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

相关文章

Hbase搭建教程

Hbase搭建教程 期待您的关注 ☀小白的Hbase学习笔记 目录 Hbase搭建教程 1.上传hbase的jar包并解压 2.重新登录 3.启动zookeeper 4.配置环境变量 5.关闭ZK的默认配置 6.修改hbase-site.xml文件 7.修改regionservers文件 8.将配置好的文件分发给其它节点 9.配置环境变量…

单通道触摸感应开关RH6016

1.简介 SOT23-6 RH6016 封装和丝印 RH6016 是一款内置稳压模块的单通道电容式触摸感应控制开关IC,可以替代传统的机械式开关。 RH6016可在有介质(如玻璃、亚克力、塑料、陶瓷等)隔离保护的情况下实现触摸功能,安全性高。 RH6016内置高精度稳压、上电复…

Requests —— 请求头设置!

前戏 在我们进行自动化测试的时候,很多网站都会都请求头做个校验,比如验证 User-Agent,看是不是浏览器发送的请求,如果我们不加请求头,使用脚本访问,默认User-Agent是python,这样服务器如果进行…

DeepSORT(目标跟踪算法)卡尔曼滤波中的贝叶斯定理

DeepSORT(目标跟踪算法)卡尔曼滤波中的贝叶斯定理 flyfish 从例子中介绍名词 假设我们有一个袋子,里面有5个红球和3个蓝球。我们从袋子里随机抽取一个球。 概率 (Probability) 我们想计算从袋子里抽到红球的概率 P ( R ) P(R) P(R)。 …

misc刷题记录(1)陇剑杯

[陇剑杯 2021]签到 题目内容:此时正在进行的可能是__________协议的网络攻击。(如有字母请全部使用小写,填写样例:http、dns、ftp)。得到的flag请使用NSSCTF{}格式提交。 打开统计,找到协议分级&#xff…

大模型应用之路:从提示词到通用人工智能(AGI)

前言 大模型在人工智能领域的应用正迅速扩展,从最初的提示词(Prompt)工程到追求通用人工智能(AGI)的宏伟目标,这一旅程充满了挑战与创新。本文将探索大模型在实际应用中的进展,以及它们如何为实…

php实现一个简单的MySQL分页

一、案例演示&#xff1a; 二、php 代码 <?php $servername "localhost"; // MySQL服务器名称或IP地址 $username "root"; // MySQL用户名 $password "123456"; // MySQL密码 $dbname "test"; // 要连接…

CentOS7安装nginx【巨详细】

CentOS7安装nginx 安装依赖 1.安装gcc&#xff0c;nginx 编译时依赖 gcc 环境 # 安装c yum install gcc-c# 查看版本 gcc -v正常情况显示如下 2.安装openssl 安全套接字层密码库&#xff0c;用于通信加密 yum install -y openssl openssl-devel3.安装zlib,zlib 库 提供了很多…

java反序列化---cc6链

目录 Transformer[]数组分析 链条代码跟进 ChainedTransformer.transform() LazyMap.get() TiedMapEntry.getValue() TiedMapEntry.hashCode() HashMap.hash() HashMap.put()的意外触发 LazyMap.get()中key的包含问题 cc6的payload如下 import org.apache.commons.co…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除 Object划分批量删除/添加参考 Object划分 数据库中对于一张表的数据&#xff0c;由于拥有隐私字段、多余字段、字段过少等原因&#xff0c;不应该直…

汽车油耗NEDC与WLTP有什么区别?以及MATLAB/Simulink的汽车行驶工况仿真

最近的热点新闻非比亚迪的秦L莫属&#xff0c;其油耗达到2.9L/100km&#xff0c;但其标注为NEDC也引起了讨论&#xff0c; NEDC与WLTP的区别 NEDC的全称为“New European Driving Cycle”&#xff0c;即“新欧洲驾驶循环”。这种油耗测试标准起源于上世纪80年代&#xff0c;主…

液晶拼接屏企业应该采取哪些措施来提升整体竞争力和市场地位呢?

步入智能科技时代以来&#xff0c;商显行业面对着各式各样的挑战&#xff0c;人工智能、AI大模型等整合中&#xff0c;液晶拼接屏企业应该采取哪些措施以提升整体竞争力和市场地位。下面小编个人观点简单说一下&#xff1b;下是一些关键的措施&#xff1a; 首先&#xff0c;加…

用Vue3和p5.js打造一个交互式数据可视化仪表盘

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于 Vue.js 集成 p5.js 实现交互式波形图 应用场景介绍 在数据可视化领域&#xff0c;波形图广泛应用于展示动态变化的数据&#xff0c;如声音信号、心跳曲线等。通过动态绘制波形图&#xff0c;用户可以直观…

5.所有权

标题 一、概念二、规则三、示例3.1 变量作用域3.2 所有权的移交&#xff08;深拷贝与浅拷贝&#xff09;3.3 函数与所有权3.4 返回值与作用域3.5 引用的使用 四、切片(&str) 一、概念 所有权是Rust的核心特性。所有程序在运行时都必须管理它们使用计算机内存的方式。Rust的…

InfoComm 2024 直击:千视新品P3和KiloLink技术闪耀亮相

InfoComm 2024 直击&#xff1a;千视新品P3和KiloLink技术闪耀亮相&#xff0c;现场亮点不断 北京时间2024年6月13日&#xff0c;UTC-7时间6月12日&#xff0c;美国视听显示与系统集成展览会InfoComm 2024在美国拉斯维加斯正式开幕。作为全美规模最大、最具影响力的展会&#…

【Test 73 】引用 () 实际的一些用法、常引用问题 详解!

文章目录 1. 常引用的背景2. 字符 a 与 整形 97 是相同的&#xff0c;但是具体是怎么比较的呢 &#xff1f; 1. 常引用的背景 注意&#xff1a; &#x1f427;① 权限可以平移、可以缩小&#xff0c;但是权限 不可以放大。 &#x1f427; 类型转换中间会产生临时变量 2. 字…

[AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现

AI资讯 国产AI大战高考物理&#xff0c;第1题全对&#xff0c;第2题开始放飞终于放大招了&#xff0c;2024WWDC&#xff0c;苹果开启AI反击战苹果一夜重塑iPhone&#xff01;GPT-4o加持Siri&#xff0c;AI深入所有APPOpenAI确认苹果集成ChatGPT 还任命了两位新高管GPT-4搞不定…

【Golang】探索进程资源监控的精妙细节:利用Gopsutil/Process实现高级进程性能和资源信息监控

【Golang】探索进程资源监控的精妙细节&#xff1a;利用Gopsutil/Process实现高级进程性能和资源信息监控 大家好 我是寸铁&#x1f44a; 总结了一篇【Golang】探索进程资源监控的精妙细节&#xff1a;利用Gopsutil/Process实现高级进程性能和资源信息监控的文章✨ 喜欢的小伙伴…

Scrum Day盛大启幕【限时优惠】

关于 Scrum Day 智驭未来&#xff0c;敏捷先行 —— 2024中国Scrum大会启航 在全球数字化转型的浪潮中&#xff0c;敏捷已成为企业脱颖而出的关键。 Scrum中文网携手全球敏捷行业巨擘 —— Scrum.org 联袂呈现年度敏捷盛会 Scrum Day&#xff0c;将于今秋盛大启幕&#xff01…

Ubuntu Linux目录结构

在Linux系统中&#xff0c;最小的数据存储单位为文件。“一切都是文件”是Linux和UNIX一致贯彻的原则。也就是说&#xff0c;在Linux中&#xff0c;所有的数据都是以文件的形式存在的&#xff0c;包括设备。为了便于访问文件&#xff0c;Linux按照一定的层次结构来组织文件系统…