SEEDLAB:缓存攻击实验
1 实验内容1.1 实验文件的下载和导入下载课程提供的实验室程序。解压到我的虚拟机中,将得到一个名为 Labsetup的文件夹。这个实验室需要的所有文件都包含在这个文件夹中。1.2 关闭保护措施在开始这个实验室之前,我们需要确保关闭地址随机化对策(ASLR)。ASLR是一种安全功能,它随机化进程使用的内存地址,增加攻击者利用内存漏洞的难度。在大多数现代Linux发行版上,默认情况下启用ASLR。可以使用以下命令执行ALSR的关闭:$ sudo /sbin/sysctl -w kernel.randomize_va_space=0
2.3 了解实验目的在这个实验室中使用的脆弱程序称为stack.c,它在服务器代码文件夹中。此程序有一个缓冲区溢出漏洞,我们的目的是利用此漏洞并获得根权限。这个程序存在缓冲区溢出漏洞。它从标准输入中读取数据,然后将数据传递给函数bof()中的另一个缓冲区。原始输入的最大长度可以为517字节,但bof()中的缓冲区只有BUF大小字节长,小于517。因为strcpy()不检查边界,所以将会发生缓冲区溢出。该程序将在具有根权限的服务器 ...
SEEDLAB:MD5碰撞实验
1 作业题目本次实验主要是加深大家对 MD5 碰撞及其原理的理解,使用 SEED 实验环境中的工具及编程语言,完成以下任务:
使用 md5collgen 生成两个 MD5 值相同的文件,并利用 bless 十六进制编辑 器查看输出的两个文件,描述你观察到的情况;
参考 Lab3_task2.c 的代码,生成两个 MD5 值相同但输出不同的两个可执行 文件。
参考 Lab3_task3.c 的代码,生成两个 MD5 值相同但代码行为不相同的可执 行文件。
回答问题:通过上面的实验,请解释为什么可以做到不同行为的两个可执行 文件具有相同的 MD5 值?
2 实验步骤及结果
2.1 实验一-使用 md5collgen 生成两个 MD5 值相同的文件首先在实验 Lab3 文件夹创建一个 prefix.txt,
然后执行命令:md5collgen -p prefix.txt -o out1.bin out2.bin
已经发现生成了对应文件 out1.bin 和 out2.bin
发现两文件的md5 值相同
然后执行命令:bless out1.bin和 bless out2.bi ...
SEEDLAB:幽灵攻击实验
一、 实验目的
1 overview幽灵攻击于2017年发现并于2018年1月公开披露,利用了许多现代处理器中存在的关键漏洞,包括英特尔、AMD和ARM 处理器的漏洞。这些漏洞允许程序打破进程间和进程内的隔离,因此恶意程序可以从其无法访问的区域读取数据。硬件保护机制(用于进程间隔离)或软件保护机制(用于进程内隔离)不允许这种访问,但是cpu的设计中存在漏洞,有可能破坏保护。因为缺陷存在于硬件中,所以很难从根本上解决这个问题,除非我们从计算机上的cpu。幽灵漏洞代表了cpu设计中一种特殊的漏洞类型。除了崩溃漏洞之外,它们还为安全教育提供了宝贵的教训。本实验室的学习目标是让学生获得关于幽灵攻击的第一手经验。攻击本身非常复杂,所以我们将其分解为几个小步骤,每个步骤都很容易理解和执行。一旦学生理解了每一步,他们就不难把所有的东西放在一起来执行实际的攻击。本实验室涵盖了以下所描述的一些主题:
幽灵攻击
侧通道攻击
CPU缓存
在CPU微架构内的无序执行和分支预测
二、 实验步骤及结果
2 Code Compilation1gcc -o myprog myprog.c
3 T ...
SEEDLAB:DNS欺骗实验
一、 实验目的
1 overview本实验的目标是获得对DNS(域名系统)的各种攻击的第一手经验。DNS是互联网的电话簿;它将主机名转换为IP地址,反之亦然。这种转换是通过DNS解析实现的,这种解析发生在幕后。DNS欺骗攻击以各种方式操纵此解析过程,目的是将用户误导到其他目的地,这些目的地通常是恶意的。本实验室主要研究几种DNS欺骗攻击技术。将首先设置和配置DNS服务器,然后在实验室环境中的目标上尝试各种DNS欺骗攻击。第一个大实验任务(本地DNS欺骗)中进行的攻击假设攻击者位于同一本地网络上,因此可以嗅探DNS数据包。这个假设是为了简化实验任务。第二个大实验任务为远程DNS攻击实验,攻击者在没有嗅探数据包的情况下发起远程欺骗攻击,远程攻击实验室比本地DNS欺骗实验更具挑战性。
二、 实验步骤及结果
2 DNS _Local
2.1 环境搭建
容器部署
清除上次docker网络环境
启动本次实验的容器
LAN结构
我们启动时用对应的CONTAINER ID即可:
了解攻击者容器
• Shared folder当我们使用攻击者容器来启动攻击时,我们需要将攻击代 ...
SEEDLAB:TCP/IP Attack实验
一、 实验目的
1 overviewTCP/IP协议中的漏洞代表了协议设计和实现中的一种特殊类型的漏洞;它们提供了一个宝贵的教训,说明了为什么安全性应该从一开始就设计好,而不是事后才加上。此外,研究这些漏洞有助于学生了解网络安全的挑战以及为什么需要许多网络安全措施。在本实验中,学生将对TCP进行几个攻击。本实验涵盖以下主题:
TCP协议
TCP SYN洪水攻击和SYN cookie
TCP重置攻击
TCP会话劫持攻击
反向Shell
二、 实验步骤及结果
2 Environment Setup using Container
在这个实验室里,我们至少需要有三台机器。我们使用容器来设置实验室环境。图1描述了实验室的设置。我们将使用攻击者容器来发起攻击,同时使用其他三个容器作为受害者和用户机器。我们假设所有这些机器都在同一个局域网上。学生们也可以在这个实验室中使用三台虚拟机,但使用容器会更方便。
2.1 Container Setup and Commands在labsetup文件夹下,启动docker(内容与以往的实验相同)
123$ dcbuild ...
SEEDLAB:网络嗅探攻击实验
一、 实验目的
1 overview包嗅探和欺骗是网络安全中的两个重要概念;它们是网络通信中的两大威胁。能够理解这两种威胁对于理解网络中的安全措施至关重要。有许多包嗅探和欺骗工具,如Wireshark、Tcpdump、Netwox等。其中一些工具被安全专家以及攻击者广泛使用。能够使用这些工具对学生来说很重要,但对于网络安全课程的学生来说,更重要的是了解这些工具是如何工作的,即包嗅探和欺骗是如何在软件中实现的。
本实验的目标是让学生掌握大多数嗅探和欺骗工具的基本技术。学生们将使用一些简单的嗅探和欺骗程序,阅读它们的源代码,修改它们,并最终对这些程序的技术方面有深入的了解。在本实验结束时,学生应该能够编写自己的嗅探和欺骗程序。
二、 实验步骤及结果
2 Environment Setup using Container
在这个实验室中,我们将使用三台连接到同一局域网的机器。我们可以使用三个虚拟机或三个容器。图1描述了使用容器进行的实验室环境设置。我们将对攻击者容器进行所有攻击,同时使用其他容器作为用户机器。
2.1 Container Setup and Commands ...
SEEDLAB:SQL注入攻击实验
一、 实验目的
1 overviewSQL注入是一种代码注入技术,它利用web应用程序和数据库服务器之间接口中的漏洞。当用户的输入在发送到后端数据库服务器之前未在web应用程序中正确检查时,就会出现此漏洞。许多web应用程序从用户处获取输入,然后使用这些输入构造SQL查询,这样web应用程序就可以从数据库中获取信息。Web应用程序还使用SQL查询在数据库中存储信息。这些是web应用程序开发中的常见做法。如果未仔细构造SQL查询,则可能会出现SQL注入漏洞。SQL注入攻击是对web应用程序最常见的攻击之一。
在本实验室中,我们创建了一个易受SQL注入攻击的web应用程序。我们的web应用程序包含许多web开发人员所犯的常见错误。学生的目标是找到利用SQL注入漏洞的方法,演示攻击可能造成的损害,并掌握有助于抵御此类攻击的技术。
二、 实验步骤及结果
2 Lab Environment由于实验环境已经在VM SeedUbuntu20.04上面配置完成,因此,直接在Firefox中访问即可。
3 Lab Tasks
3.1: Task 1: Get Familiar with ...
SEEDLAB:XSS实验
一、 实验目的
1 overview为了演示攻击者可以做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的web应用程序。我们已经注释掉了Elgg的一些保护方法,故意使其容易受到XSS攻击。学生们需要利用这些漏洞发动攻击,就像Samy Kamkar在2005年通过臭名昭著的Samy蠕虫对MySpace所做的那样。此攻击的最终目标是在用户之间传播XSS蠕虫,这样无论谁查看受感染的用户配置文件都会受到感染,无论谁受感染都会将您(即攻击者)添加到他/她的好友列表中。
二、 实验步骤及结果
**2 **Lab Environment
2.1 DNS Setup查看DNS配置情况,打开虚拟机的/etc/hosts,照实验pdf修改内容
12345610.9.0.5 www.seed-server.com10.9.0.5 www.example32a.com10.9.0.5 www.example32b.com10.9.0.5 www.example32c.com10.9.0.5 www.example60.com10.9.0.5 w ...
SEEDLAB:环境变量&set-uid实验
1 实验内容本实验室的学习目标是让学生了解环境变量如何影响程序以及系统行为。环境变量是一组动态命名值,可以影响正在运行的进程将在计算机上运行。大多数操作系统都使用它们,因为它们是1979年引入Unix。尽管环境变量会影响程序行为,但它们是如何实现的这一点很多程序员都不太理解。因此,如果程序使用环境变量程序员不知道它们被使用,程序可能有漏洞。
在本实验室中,学生将了解环境变量是如何工作的,它们是如何从父进程到子进程,以及它们如何影响系统/程序行为。我们特别感兴趣的是如何环境变量影响Set-UID程序的行为,这些程序通常是特权程序。
2 实验步骤及结果
**2.1 **Task 1: Manipulating Environment Variables使用printenv命令查看PATH环境变量,env |grep PWD命令过滤输出环境变量再使用export “Myname=Enboy” 设置环境变量Myname为Enboy,此时查看环境变量,可以找到名为Myname的环境变量如下
再运行unset Myname进行清除,此时查看环境变量,已经找不到了名 ...
SEEDLAB:shellcode编写实验
1 实验内容shellcode广泛用于许多涉及代码注入的攻击中。编写shellcode是相当有挑战性的。虽然我们可以很容易地从互联网上找到现有的shellcode,但是能够从头开始编写我们自己的shellcode总是令人兴奋的。shellcode中涉及到几种有趣的技术。本实验室的目的是帮助学生理解这些技术,以便他们能够编写自己的shellcode。
编写shellcode有几个挑战,一个是确保二进制文件中没有0x00,另一个是找出命令中使用的数据的地址。第一个挑战不是很难解决,有几种方法可以解决它。第二个挑战的解决方案导致了编写外壳代码的两种典型方法。在一种方法中,数据在执行期间被推入堆栈,因此可以从堆栈指针获得它们的地址。在第二种方法中,数据存储在代码区域中,就在调用指令之后,因此在调用调用函数时,其地址被推入堆栈(作为返回地址)。两种解决方案都非常优雅,我们希望学生能够学习这两种技术。
2 实验步骤及结果
2.1Task 1: Writing Shellcode
2.1.1 Task 1.a: The Entire Process首先来看一下C语言版本的she ...