探索网络攻击:ARP断网、ARP欺骗和DNS欺骗实验解析

news2024/11/27 1:27:02

目录

前言

一、ARP概述

1.1 什么是ARP

1.2 ARP协议的基本功能

1.3 ARP缓存表

1.4 ARP常用命令

二、ARP断网实验

三、ARP欺骗实验

3.1 内网截获图片

3.2 HTTP账户密码获取

四、DNS欺骗实验

总结


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

在这篇博客中,我介绍了ARP断网、ARP欺骗和DNS欺骗这几种常见的网络攻击方式。然而,需要明确的是,这些实验仅仅是出于教育和研究目的,并且应以合法和道德的方式进行。

实验中模拟的攻击行为仅仅是为了让读者了解和认识这些网络攻击方式,以提高对网络安全的认识和意识。请不要将这些技术用于未经授权的活动,也不要对他人造成任何形式的伤害或损失。

实验中涉及的工具和方法仅仅是为了演示攻击原理和展示可能的防御措施。在进行任何实际部署和操作中,请务必遵守法律法规,仅在授权范围内进行操作。

这是本篇文章的脉络图:


一、ARP概述

1.1 什么是ARP

ARP(Address Resolution Protocol)是一种用于在TCP/IP网络中根据IP地址获取物理地址(MAC地址)的协议。在主机发送数据时,需要知道目标设备的物理地址来进行通信。ARP通过发送广播请求并接收返回消息的方式,来确定目标设备的物理地址。同时,收到返回消息后,主机将目标设备的IP地址和物理地址存入本机的ARP缓存表中,并在一定时间内保持有效,这样下次通信时就可以直接查询ARP缓存,节约资源。

1.2 ARP协议的基本功能

ARP协议的基本功能是通过目标设备的IP地址查询其对应的MAC地址,以确保通信的进行。它在局域网内进行操作,并且只能在局域网中工作。ARP协议将IP地址和MAC地址建立映射关系,以便在网络通信中能够正确地将数据传输到目标设备。

1.3 ARP缓存表

ARP缓存表是一个用于存储IP地址和MAC地址的缓冲区,实质上就是一个IP地址到MAC地址的映射表。每个主机或网络适配器都有自己的ARP缓存表。当需要查询已知IP地址对应的MAC地址时,ARP首先查找本地的ARP缓存表,如果存在相应的记录,则直接返回对应的MAC地址。如果在缓存中没有找到对应的记录,ARP才会发送ARP请求广播到局域网上,以查询目标设备的MAC地址。

1.4 ARP常用命令

在ARP协议中,有一些常用的命令用于管理和操作ARP缓存表。

(1)

'arp -a' 或 'arp -g'

这个命令用于查看ARP缓存表中的所有项目。在UNIX平台上,可以使用`-g`选项,而在Windows上则使用`-a`选项。这两个选项的结果是一样的,都用于显示ARP缓存中的所有项目。

(2)

'arp -a <ip>'

如果有多个网络接口,可以使用此命令加上接口的IP地址,以仅显示与该接口相关的ARP缓存项目。

二、ARP断网实验

ARP断网是指攻击者通过欺骗目标主机和网关的ARP缓存表,将目标主机和网关的IP地址对应的MAC地址修改为攻击者自己的MAC地址。这样,被断网的主机发送的数据包会被发送到攻击者的网卡,而不会继续流向网关或其他目标,从而导致目标主机无法正常连接到网络。

前提信息:

本文中提到的win7和kali是虚拟机,而且它们处于同一个网段。

受害者:win7
        ip:192.168.216.128
        mac:00-0C-29-9C-CD-25
win7网关:
        ip:192.168.216.2
        mac:00-50-56-f0-6a-ce

攻击者:kali
        ip:192.168.216.129
        mac:00:0c:29:be:d4:09

实验步骤:

2.1

通过fping命令,查看当前局域网还存在那些主机,以确定要攻击的主机的ip地址:

fping -g 192.168.216.0/24

或者用nmap扫描:

nmap -sn 192.168.216.0/24

2.2

arpspoof是一个常用于进行ARP欺骗攻击的命令行工具。其使用方法如下所示:

arpspoof -i <网卡名称> -t <目标IP> <网关>

通过运行这个命令,它会发送虚假的ARP响应包给目标主机和网关,将目标主机和网关的ARP缓存表中的IP地址对应的MAC地址修改为攻击者的MAC地址。这样,所有发往网关的数据包都会被截获并转发给攻击者,从而实现ARP欺骗攻击。

执行断网攻击:arpspoof -i eth0 -t 192.168.216.128 192.168.216.2

可以看到,当ARP攻击开始时,就出现了请求超时的提示:

2.3
arp -a 查看靶机网关mac地址的变化。
这是原来的mac地址:

这是现在的mac地址:

三、ARP欺骗实验

ARP欺骗是一种针对以太网地址解析协议(ARP)的攻击技术。攻击者通过欺骗局域网内的主机,将其ARP缓存表中的IP地址与MAC地址的映射关系更改为攻击者所指定的对应关系。这样,当主机发送数据时,数据将被发送到攻击者的主机而不是真正的目标主机,从而实现网络欺骗和窃取数据的目的。

ARP欺骗的常见手法是同时对局域网内的一台主机和网关进行欺骗。攻击者发送虚假的ARP响应包给被攻击的主机和网关,将其ARP缓存表中的IP地址对应的MAC地址修改为攻击者的MAC地址。这样,被攻击的主机和网关会将所有的数据包发送到攻击者的主机,攻击者可以截获、篡改或窃取这些数据包。此外,由于ARP是局域网内的协议,ARP欺骗攻击只对同一局域网内的主机有效。

前提信息:

本文中提到的win7和kali是虚拟机,而且它们处于同一个网段。

受害者:win7

        ip:192.168.216.128
        mac:00-0C-29-9C-CD-25
win7网关:
        ip:192.168.216.2
        mac:00-50-56-f0-6a-ce

攻击者:kali
        ip:192.168.216.129
        mac:00:0c:29:be:d4:09

3.1 内网截获图片

实验步骤:

3.1.1

要在Linux系统中允许流量转发,可以通过修改sysctl.conf配置文件来实现。下面是修改步骤:

(1)打开终端窗口,输入以下命令以使用root权限打开sysctl.conf文件:

   sudo vim /etc/sysctl.conf

(2)在sysctl.conf文件中找到以下行:

   #net.ipv4.ip_forward=1

(3)将这一行的注释符号“#”去掉,修改为如下内容:

   net.ipv4.ip_forward=1

(4)保存并关闭文件。在vim编辑器中,可以按Esc键,然后输入冒号(:)并输入wq,然后按回车键。

(5)应用新的配置,可以输入以下命令使sysctl.conf配置生效:

   sudo sysctl -p /etc/sysctl.conf

3.1.2

进行ARP欺骗:arpspoof -i eth0 -t 192.168.216.128 192.168.216.2

因为开启了ip流量转发,所以此时win7是可以上网的(与ARP断网攻击的不同)。

查看一下ARP缓存表,可以发现欺骗成功。

3.1.3

此时,我的kali就会成为win7和网关之间数据流量的中转,所有经过kali的数据包都将被截获,可以进行进一步的网络攻击。

例如,driftnet是一个命令行工具,可以用于监听网络流量,并从其中提取出所有能够识别为图像的数据。

在kali运行以下命令:

driftnet –i eth0

这样,driftnet就会开始监听eth0网卡上的流量,并在图形界面窗口中实时显示图像,这些图像是从网络流量中提取出来的。

需要注意的是,driftnet只能提取出网络中传输的图像,而不是所有的文件或数据。而且它只能截取到http协议的图片。

在win7中使用火狐浏览器访问百度,搜索图片进行访问的时候,这个driftnet窗口就能捕捉到你在win7访问的图片(在火狐浏览器搜索图片时,一些网站显示的是不安全连接,而当一个网站显示不安全连接时,通常意味着它使用的是http协议而不是https协议)。

3.2 HTTP账户密码获取

实验步骤:

ettercap是一款非常常用的基于ARP欺骗方式的网络嗅探工具,它能够对交换型局域网进行嗅探,并拦截、修改、替换或注入网络数据包,从而实现多种攻击方式和安全检测方法。

比如,在一个本地网络中,你可以运行ettercap命令来嗅探流通数据,并查看被嗅探到的数据,如下所示:

ettercap -Tq -i eth0

此命令是将ettercap启动在文本模式下,并使用eth0网卡嗅探数据包,同时关闭Ettercap的交互式模式和输出所有嗅探信息的详情,以方便进行安静的数据监控。在ettercap中,还有许多参数和插件可供配置和使用,具体可参考其文档和官方网站。

启动ettercap:

在win7访问网址(我访问的是一个仅为了做实验而诞生的盗版网站),输入用户名及密码。这里我输入filotimo/666666。
返回kali攻击机,查看记录。

四、DNS欺骗实验

DNS(Domain Name System,域名系统)是一种分布式的关键网络服务,它将域名解析成相应的IP地址,帮助用户轻松访问互联网资源。

DNS欺骗是指攻击者利用DNS的工作原理和弱点,将用户的域名解析请求重定向到攻击者控制的虚假的域名服务器,使得用户被导向错误的网站或资源,或者受到其它类型的攻击或欺诈。

前提信息:

本文中提到的win7和kali是虚拟机,而且它们处于同一个网段。

受害者:win7
        ip:192.168.216.128
        mac:00-0C-29-9C-CD-25
win7网关:
        ip:192.168.216.2
        mac:00-50-56-f0-6a-ce

攻击者:kali
        ip:192.168.216.129
        mac:00:0c:29:be:d4:09

实验步骤:

首先打开ettercap的dns文件进行编辑,在kali,linux2.0下的文件路径为/etc/ettercap/etter.dns:

在对应的位置添加对应的标识和IP地址, * 代表所有域名。

在kali终端输入命令/etc/init.d/apache2 start 来启动apache2 服务器。

(1)输入命令ettercap -G来进入ettercap的图形界面。

(2)点击右上角的勾。

(3)扫描网关下的所有在线的计算机主机。

(4)继续打开Hosts选项,列出扫到的主机,点击上面三横杠。

(5)在列表里选择网关进行添加,我这里的网关是192.168.216.2,先点击一下。然后点击 Add to target 1。

(6)然后选择目标的IP地址。

(7)按图操作,即可进行arp欺骗了

点一下ok

(8)可以看到目标机win7的网关mac地址已是攻击机kali的mac地址了(192.168.216.2是win7网关ip,192.168.216.129是kali的ip)。

(9)进行如下操作,就可进行dns欺骗了。

(10)双击运行dns_spoof,开启欺骗。

(11)欺骗成功后,ping 任何.com结尾的网址,都会被解析成攻击机kali的地址。
这是欺骗之前,ping百度的结果:

这是现在,欺骗成功之后,ping百度的结果:


总结

虽然ARP断网、ARP欺骗和DNS欺骗等网络攻击方式是存在的,但需要明确的是,这些攻击方式应该被视为潜在的威胁,而不是普遍存在的风险。

网络安全是一个重要的问题,我们都应该关注和保护自己的网络安全。在日常使用互联网时,我们可以采取一些预防措施来减少风险。首先,保持操作系统和应用程序的更新,以获取最新的安全补丁和修复程序。其次,使用强密码,并定期更改密码。另外,谨慎点击来自不明来源的邮件和链接,避免下载和安装可疑的软件。此外,启用防火墙、安装安全软件和使用虚拟专用网络(VPN)等也是有效的安全措施。

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

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

相关文章

OpenGL ES入门教程(一)编写第一个OpenGL程序

OpenGL ES入门教程&#xff08;一&#xff09;编写第一个OpenGL程序 前言 从本文开始我将参考学习OpenGL ES应用开发实践指南 Android卷 [&#xff08;美&#xff09;KevinBrothaler著]&#xff08;提取码: 394m&#xff09;&#xff0c;并基于自己的理解以更加通俗易懂的方式…

[.NET]桃源网络硬盘 v7.4

桃源网络硬盘是一个以.net进行开发的网络硬盘系统源码。 开发环境&#xff1a;Microsoft.NET Framework SDK 运行要求&#xff1a; Windows 2003及以上版本 或 Windows XP及以上版本&#xff0c;安装 .Net Framework 要求上传目录有写权限 请将其放在虚拟目录或单独的网页空间…

Kubernetes包管理工具Helm简介及使用

文章目录 前言技术积累什么是HelmHelm的核心概念Helm可以解决哪些痛点Helm中文官方文档 Helm安装Helm安装nginx用例写在最后 前言 大家都知道K8S是云原生devops的一大利器&#xff0c;可以直接让我们的中间件、应用服务直接运行在云端&#xff0c;让我们可以只关心自身的业务功…

【Unity】【VR开发疑难】Unity运行就报无法启动XR Plugin

【现象】 连接Link后运行Unity的VR项目Link也无反映&#xff0c;Unity控制台报&#xff1a;无法启动XR Plugin&#xff0c;并说是由于Oculus头盔未连接导致。 【分析】 打开Oculus PC客户端&#xff0c;发现状态是连接正常。重启机器后&#xff0c;提示Oculus没有出于RunTim…

概念解析 | 揭开心电图测量的神秘面纱

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:ECG的测量原理 揭开心电图测量的神秘面纱 How to read an ECG – Physical Therapy Reviewer 1. 背景介绍 心电图(ECG)是记录心脏电活动的过程,它反映了心脏在收缩和舒张期间的…

新一代构建工具Vite-xyphf

一、什么vite? vite:是一款思维比较前卫而且先进的构建工具,他解决了一些webpack解决不了的问题——在开发环境下可以实现按需编译&#xff0c;加快了开发速度。而在生产环境下&#xff0c;它使用Rollup进行打包&#xff0c;提供更好的tree-shaking、代码压缩和性能优化&…

创建javaEE项目(无maven),JSP(九大内置对象)、Servlet(生命周期)了解

一、Servlet和jsp 0.创建web项目(无maven)&#xff1a; 1.创建一个普通的java项目 2.项目根目录右键&#xff0c;添加模板 3.配置tomcat服务器 4.配置项目tomcat依赖 1.Servlet(Server Applet)服务端小程序 用户通过浏览器发送一个请求&#xff0c;服务器tomcat接收到后&…

串口通信(7)判断数据帧头来接收一串数据

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

微信小程序:两层循环的练习,两层循环显示循环图片大图(大图显示、多层循环)

效果 代码分析 外层循环 外层循环的框架 <view wx:for"{{info}}" wx:key"index"></view> wx:for"{{info}}"&#xff1a;这里wx:for指令用于指定要遍历的数据源&#xff0c;即info数组。当遍历开始时&#xff0c;会依次将数组中的每…

链表的结点个数统计及查找

链表节点个数统计 要统计链表中的节点个数&#xff0c;只需要遍历整个链表&#xff0c;并在遍历的过程中计数即可。具体实现代码如下&#xff1a;(仍然使用C#) 先定义一个整型函数(节点个数的返回值一定是整型变量) int getLinkNodeNum(struct Test *head) {int cnt 0;whil…

STM32:AHT20温湿度传感器驱动程序开发

注&#xff1a;温湿度传感器AHT20数据手册.pdf http://www.aosong.com/userfiles/files/AHT20%E4%BA%A7%E5%93%81%E8%A7%84%E6%A0%BC%E4%B9%A6(%E4%B8%AD%E6%96%87%E7%89%88)%20B1.pdf 一、分析AHT数据手册文档 (1).准备工作 1.新建工程。配置UART2 2.配置I2C1为I2C标准模式&…

数据链路层中存在的报文ip,arp,rarp

IP数据报 ARP请求/应答报 RARP请求/应答报 IP数据报 这里的目的地址和源地址是MAC地址。 这个被称为 MAC 地址&#xff0c;是一个网卡的物理地址&#xff0c;用十六进制&#xff0c;6 个 byte 表示。 MAC 地址是一个很容易让人误解的地址。因为 MAC 地址号称全球唯一&…

深度学习_7_实战_点集最优直线解_优化版代码解析

完整版优化代码&#xff1a; import torch from torch.utils import data from d2l import torch as d2l # 特定导入 from torch import nndef load_array(data_arrays, batch_size, is_trainTrue):dataset data.TensorDataset(*data_arrays) #解包传递&#xff0c;转成张量…

【Linux】Nignx的入门使用负载均衡前端项目部署---超详细

一&#xff0c;Nignx入门 1.1 Nignx是什么 Nginx是一个高性能的开源Web服务器和反向代理服务器。它使用事件驱动的异步框架&#xff0c;可同时处理大量请求&#xff0c;支持负载均衡、反向代理、HTTP缓存等常见Web服务场景。Nginx可以作为一个前端的Web服务器&#xff0c;也可…

使用docker进行nextcloud+onlyoffice环境搭建(在线 or 离线)

1.安装 MySQL&#xff08;有MySQL就可以不装&#xff09; docker run -itd --name mysql8.0 -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot --restartalways -e TZ"Asia/Shanghai" -v /home/docker/workspace/mysql:/var/lib/mysql mysql:latest --lower_case_table_na…

【案例】3D地球

效果图&#xff1a; 直接放源码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"viewport" content"initial-scale1.0, user-scalableno" …

用Python实现批量下载文件——代理ip排除万难

目录 前言 一、准备工作 二、批量下载文件 三、添加代理ip 四、处理异常 完整代码 总结 前言 下载文件是我们在日常工作中常常要做的一件事情。当我们需要从互联网上批量下载大量文件时&#xff0c;手动一个一个去下载显然不够高效。为了解决这个问题&#xff0c;我们可…

Unity内打开网页的两种方式(自带浏览器、内嵌浏览器)

1.自带浏览器 这个比较简单&#xff0c;直接调用unity官方的API即可&#xff0c;会直接使用默认浏览器打开网页&#xff0c;这里就不多做解释了。 代码 public InputField input;private void OpenUrlByUnity(){string inputStr input.text;if (!string.IsNullOrEmpty(input…

JVM虚拟机:你是如何理解Java中的垃圾?

什么是垃圾&#xff1f; 垃圾就是内存中不再被使用到的空间&#xff0c;当一个对象不再被引用后那么久成为垃圾可以回收了&#xff0c;但是线程计算没有引用也可以独立运行&#xff0c;因此线程和对象不同。如果一个对象没有任何一个引用指向它了&#xff0c;那么这个对象就是…

什么是Web 3.0?

什么是Web 3.0&#xff1f;简而言之&#xff0c;就是第三代互联网。 在回答Web 3.0之前&#xff0c;让我们先看一下Web 1.0和Web 2.0。 互联网革命 Web 1.0&#xff0c;第一代互联网&#xff0c;从互联网诞生到1997年。 在Web 1.0&#xff0c;互联网的信息是静态的只读网页&a…