文档库 最新最全的文档下载
当前位置:文档库 › 网络安全实验报告 - 缓冲区溢出攻击

网络安全实验报告 - 缓冲区溢出攻击

网络安全实验报告 - 缓冲区溢出攻击
网络安全实验报告 - 缓冲区溢出攻击

一实验名称

利用跳转指令实现缓冲区溢出

定位参数地址实现缓冲区溢出

二实验目的

1.熟练掌握缓冲区溢出原理

2.利用jmp esp指令实现缓冲区溢出

3.熟练掌握缓冲区溢出原理

4.利用定位参数地址实现缓冲区溢出

三实验步骤

利用跳转指令实现缓冲区溢出

1.编写前导码

程序中提供了一个超长前导码,对程序进行调试来确定实际需要的前导码长度

在图中可以看出,0x49484746四字节覆盖了ret返回地址

2.查找jmp esp指令地址

运行FindJmpesp工具,选取一个地址追加到shellcode尾(追加填加地址时注意数组高字节对应地址高位),所选jmp esp指令地址是

0x77e424da

跟踪调试程序,确定在memcpy执行返回时jmp esp指令是否被执行

从图看出,在jmp esp指令执行完毕后,指令指针紧接着执行了3个空指令,而空指令是追加在shellcode尾部的

3.生成实现弹出对话框的指令码

MessageBoxA函数的绝对内存地址,该地址为

0x77E10000+0x0003D8DE=0x77E4D8DE

函数ExitProcess的绝对内存地址

0x7C800000+0x00013039=0x7C813039

利用反汇编功能获取代码字节,将代码字节以十六进制数据形式继续追加到shellcode尾。重新编译执行。

定位参数实现缓冲区溢出

1.进入工程

2.生成shellcode功能体

(1)首先设置OverFlowClient项目为启动项。

(2)使用Depends工具打开FindShellBase.exe文件定位上述内存地址kernel32.dll 0x7C800000

LoadlibraryA 0x7C800000+0x00001E60=7C801E60

SHELL32.DLL 0x7CA10000

shellExecuteA 0x7CA10000+0x0008F6D4=0x7CA9F6D4

(3)编译并生成OverFlowClient.exe,执行OverFlowClient.exe,确定系统是否新建了jlcss用户,并隶属Administrators组。

3.生成shellcode指令码

(1)设置CreateShellCode为启动项。

(2)填写的宏数值:

①获取SHELLCODE_BODY_START、SHELLCODE_BODY_LEN值

调试OverFlowClient.exe(将该项目设置为启动项)确定ShellCode函数入口偏移地址及函数体大小,调试过程参见图22-2-6所示。

开始地址0x00401020

结束地址0x004011B6

②根据调试结果填写CreateShellCode.cpp源文件中SHELLCODE_BODY_START 宏和SHELLCODE_BODY_LEN宏的值。

③其它数值需要通过调试OverFlowServer来获取,而OverFlowServer的执行又依赖于shellcode.shc文件,所以暂且编译生成CreateShellCode.exe文件,执行该文件生成临时shellcode.shc文件。

4.调用OverFlowServer

(1)OverFlow正常调用返回时的下一条指令地址。

调整TempBuffer缓冲区大小,使其大于临时shellcode指令码长度。调试获取OverFlow函数正常调用执行后的下一条指令地址。

填写该指针地址到CreateShellCode.cpp文件中。

(2)OverFlow函数调用前ebp基地址指针。

单步调试程序定位到OverFlow函数入口处,获取此时的EBP指针地址

填写EBP指针地址到CreateShellCode.cpp文件中。

(3)调用OverFlowServer.exe确定OverFlow调用执行过程中TempBuffer缓冲区的首地址。

将TempBuffer缓冲区首地址填写到CreateShellCode.cpp文件中。运行Createshellcode.exe生成完整的shellcode.sh文件

5.调试确定TempBuffer缓冲区大小

调试OverFlowServer.exe得到OverFlow调用返回时的地址,将返回地址与shellcode.shc中的十六数相比较,有三种比较结果:

(1)返回地址是shellcode最后4字节数据。函数返回时执行shellcode。

(2)返回地址没有在shellcode.sh中,缓冲区空间过大,溢出未发生。可以缩小缓冲区空间或在最后8个字节前用0x90(空指令)补充。

(3)返回地址在shellcode.shc中(不是最后4字节数据),缓冲区空间过小。放大缓冲区空间。

当改变TempBuffer缓冲区大小时,其首地址可能会发生变动,调试确定TempBuffer首地址,重新填写CreateShellCode.cpp,并重新生成shellcode.shc。

调试可知:overflow入口地址为0x00401102,子程序返回地址应为0x00401107

调试至jump,找到程序将返回地址存在0x0012FB1C处

调试进入memcpy,发现shellcode从0x0012F968处开始写

由此可算出shellcode的长度应为0x0012FB1C+4-0x0012F968=0x1B8=440,缓冲区大小应设为432

将overflowserver缓冲区大小设置为432,调试至memcpy得到TempBuffer 入口点0x0012F968

修改createShellCode最后4字节为0x0012F968,在最后8字节之前添加\x90直到生成的shellcode长度为440

运行overflowserver,当overflow子程序运行完后,指针移动到0x0012FB1C 处获得返回原程序地址,此时由于shellcode的最后4字节覆盖了该返回地址,使得程序跳转到shellcode开头执行shellcode程序,而shellcode中含有原程序中overflow下一条语句的开始地址,所以执行完后会跳转至原程序的下一条语句继续执行

经过多次调试后确定缓冲区大小,当满足第一种比较结果时,缓冲区溢出就可以执行下去。运行程序,查看系统用户jlcss(若jlcss用户已存在,请先将其删除再运行程序)及其所属用户组。

四实验小结

栈是一个后进先出的结构,函数在入栈时,先将返回地址RET压入栈,接着是EBP基址寄存器,然后根据局部变量的大小,开辟一定大小的缓冲区,再将局部变量压入。

在将局部变量压入栈的时候,如果压入数据过长,大于事先声明的缓冲区大小,就会覆盖EBP和RET。

漏洞的利用有5个方面的问题需要考虑。

一是RET的定位,要用我们的地址覆盖RET,就需要先知道RET在哪,也就是我们定好的这个地址,应该放在字符串的什么位置。

二是要寻找一个跳转指令,将这个指令的地址填充到RET,这样才能在返回时通过跳转指令转到其它地方执行程序

三是要构造shellcode,也就是完成一些特定的功能。四是将所构造的shellcode放在跳转指令转向的地方。

最后一个步骤就是根据上面的这些分析过程,将它们整合成攻击程序,运行这个攻击程序就能直接利用缓冲区溢出漏洞。

缓冲区溢出攻击实验

HUNAN UNIVERSITY 课程实验报告 题目: Buflab-handout 学生姓名 学生学号 专业班级计科1403 (一)实验环境 联想ThinkPadE540 VM虚拟机ubuntu32位操作系统 (二)实验准备 1.使用tar xvf命令解压文件后,会有3个可执行的二进制文件bufbomb,hex2raw, makecookie。bufbomb运行时会进入getbuf函数,其中通过调用Gets函数读取字符 串。要求在已知缓冲区大小的情况下对输入的字符串进行定制完成特定溢出操作。 从给的PDF文件中我们得知getbuf函数为:

/ /Buffer size for getbuf #define NORMAL_BUFFER_SIZE 32 int getbuf() { char buf[NORMAL_BUFFER_SIZE]; Gets(buf); return 1; } 这个函数的漏洞在于宏定义的缓冲区的大小为32,若输入的字符串长于31(字符串末尾结束符)则会导致数据的覆盖,从而导致一系列损失;在此实验中,我们正是利用这个漏洞来完成实验。 2. hex2raw可执行文件就是将给定的16进制的数转成二进制字节数据。 Makecookie是产生一个userid。输入的相应的用户名产生相应的cookie值。 **我产生的cookie值为0x5eb52e1c,如下图所示: Level0: 实验要求:从英文的PDF文件中的“Your task is to get BUFBOMB to execute the code for smoke when getbuf executes its return statement, rather than returning to test. Note that your exploit string may also corrupt parts of the stack not directlyrelated to this stage, but this will not cause a problem, since smoke causes the program to exit directly.”这句话看出实验让我们在test运行完后,不直接退出,而是跳到smoke函数处执行然后退出,这点很重要!(本人之前一直没有成功就是错在这儿) Test源码: void test() { int val; // Put canary on stack to detect possible corruption volatile int local = uniqueval(); val = getbuf(); // Check for corrupted stack if (local != uniqueval()) { printf("Sabotaged!: the stack has been corrupted\n"); } else if (val == cookie) { printf("Boom!: getbuf returned 0x%x\n", val); validate(3);

网络安全技术实验报告

中南林业科技大学 实验报告 课程名称:计算机网络安全技术 专业班级:2014 级计算机科学与技术 2班 姓名:孙晓阳 / 学号:

( 目录 实验一java 安全机制和数字证书的管理 (5) 一实验名称 (5) 二实验目的 (5) 三实验内容 (5) 四实验结果和分析 (6) , 命令输入 (6) 分析 (7) 五小结 (8) 实验二对称密码加密算法的实现 (10) 一实验名称 (10) 二实验目的 (10) 三实验内容 (10) ? 四实验结果和分析 (10) 说明 (10) 实验代码 (10) 实验结果 (13) 五小结 (13) 实验三非对称密钥 (14) 一实验名称 (14) { 二实验目的 (14) 三实验内容 (14) 四实验结果和分析 (14)

实验代码 (14) 实验结果 (15) 五小结 (16) 实验四数字签名的实现 (17) — 一实验名称 (17) 二实验目的 (17) 三实验内容 (17) 四实验结果和分析 (17) 实验代码 (17) 实验结果 (19) 五小结 (19) ? 总结 (19)

实验一java 安全机制和数字证书的管理》 一实验名称 java 安全机制和数字证书的管理 二实验目的 了解 java 的安全机制的架构和相关的知识; 利用 java 环境掌握数字证书的管理 三实验内容 java 安全机制(JVM,沙袋,安全验证码)。 & java 的安全机制的架构 加密体系结构(JCA,Java Cryptography Architecture) 构 成 JCA 的类和接口: :定义即插即用服务提供者实现功能扩充的框架与加解密功能调用 API 的核心类和接口组。 一组证书管理类和接口。 一组封装 DSA 与 RSA 的公开和私有密钥的接口。 描述公开和私有密钥算法与参数指定的类和接口。用 JCA 提供的基本加密功能接口可以开发实现含消息摘要、数字签名、密钥生成、密钥转换、密钥库管理、证书管理和使用等功能的应用程序。 加密扩展(JCE,Java Cryptography Extension) 构 成 JCE 的类和接口: :提供对基本的标准加密算法的实现,包括 DEs,三重 DEs(Triple DEs),基于口令(PasswordBasedEncryptionstandard)的 DES,Blowfish。 ( 支持 Diffie 一 Hell-man 密钥。定义密钥规范与算法参数规范。 安全套接扩展(JSSE,Java Secure Socket1 Extension)JSSE 提供了实现 SSL 通信的标准 Java API。 JSSE 结构包括下列包: .包含 JSSE API 的一组核心类和接口。

SEED信息安全实验系列:缓冲区溢出漏洞实验

缓冲区溢出漏洞实验 一、实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 二、实验准备 本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备。 1、输入命令安装一些用于编译32位C程序的东西: sudo apt-get update sudo apt-get install lib32z1 libc6-dev-i386 sudo apt-get install lib32readline-gplv2-dev 2、输入命令“linux32”进入32位linux环境。此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash: 三、实验步骤 3.1 初始设置

Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能: sudo sysctl -w kernel.randomize_va_space=0 此外,为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限,这个防护措施在/bin/bash中实现。 linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash。下面的指令描述了如何设置zsh程序: sudo su cd /bin rm sh ln -s zsh sh exit 3.2 shellcode 一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能,这段代码就是shellcode。 观察以下代码: #include int main( ) { char *name[2]; name[0] = ‘‘/bin/sh’’; name[1] = NULL; execve(name[0], name, NULL); } 本次实验的shellcode,就是刚才代码的汇编版本: \x31\xc0\x50\x68"//sh"\x68"/bin"\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80 3.3 漏洞程序 把以下代码保存为“stack.c”文件,保存到/tmp 目录下。代码如下: /* stack.c */ /* This program has a buffer overflow vulnerability. */ /* Our task is to exploit this vulnerability */ #include #include #include int bof(char *str) { char buffer[12]; /* The following statement has a buffer overflow problem */strcpy(buffer, str); return 1;

缓冲区溢出实验报告

华中科技大学计算机学院《信息系统应用安全》实验报告 实验名称缓冲区溢出实验 团队成员: 教师评语:

一.实验环境 ?操作系统:Windows XP SP3 ?编译平台:Visual C++ 6.0 ?调试环境:OllyDbg 二.实验目的 1.掌握缓冲区溢出的原理; 2.掌握缓冲区溢出漏洞的利用技巧; 3.理解缓冲区溢出漏洞的防范措施。 三.实验内容及步骤 1.缓冲区溢出漏洞产生的的基本原理和攻击方法 ?缓冲区溢出模拟程序 程序源代码如下: 运行该程序产生访问异常:

由于拷贝字符串时产生缓冲区溢出,用“ABCD”字符串的值覆盖了原来EIP的值,所以main函数返回时EIP指向44434241,引发访问异常。 运行命令窗口的shellcode shellcode测试代码如下: #include "string.h" #include "stdio.h" #include char name[]= "\x41\x41\x41\x41" "\x41\x41\x41\x41" "\x41\x41\x41\x41" ///覆盖ebp "\x12\x45\xfa\x7f" ////覆盖eip,jmp esp地址7ffa4512 "\x55\x8b\xec\x33\xc0\x50\x50\x50\xc6\x45\xf4\x6d" "\xc6\x45\xf5\x73\xc6\x45\xf6\x76\xc6\x45\xf7\x63" "\xc6\x45\xf8\x72\xc6\x45\xf9\x74\xc6\x45\xfa\x2e" "\xc6\x45\xfb\x64\xc6\x45\xfc\x6c\xc6\x45\xfd\x6c" "\x8d\x45\xf4\x50\xb8" "\x77\x1d\x80\x7c" // LoadLibraryW的地址 "\xff\xd0" "\x55\x8b\xec\x33\xff\x57\x57\x57\xc6\x45\xf4\x73" "\xc6\x45\xf5\x74\xc6\x45\xf6\x61\xc6\x45\xf7\x72" "\xc6\x45\xf8\x74\xc6\x45\xf9\x20\xc6\x45\xfa\x63"

网络安全实验报告[整理版]

一Sniffer 软件的安装和使用 一、实验目的 1. 学会在windows环境下安装Sniffer; 2. 熟练掌握Sniffer的使用; 3. 要求能够熟练运用sniffer捕获报文,结合以太网的相关知识,分析一个自己捕获的以太网的帧结构。 二、实验仪器与器材 装有Windows操作系统的PC机,能互相访问,组成局域网。 三、实验原理 Sniffer程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太同卡)置为杂乱模式状态的工具,一旦同卡设置为这种模式,它就能接收传输在网络上的每一个信息包。 四、实验过程与测试数据 1、软件安装 按照常规方法安装Sniffer pro 软件 在使用sniffer pro时需要将网卡的监听模式切换为混杂,按照提示操作即可。 2、使用sniffer查询流量信息: 第一步:默认情况下sniffer pro会自动选择网卡进行监听,手动方法是通过软件的file 菜单下的select settings来完成。 第二步:在settings窗口中我们选择准备监听的那块网卡,把右下角的“LOG ON”勾上,“确定”按钮即可。 第四步:在三个仪表盘下面是对网络流量,数据错误以及数据包大小情况的绘制图。 第五步:通过FTP来下载大量数据,通过sniffer pro来查看本地网络流量情况,FTP 下载速度接近4Mb/s。 第六步:网络传输速度提高后在sniffer pro中的显示也有了很大变化,utiliazation使用百分率一下到达了30%左右,由于我们100M网卡的理论最大传输速度为12.5Mb/s,所以4Mb/s刚好接近这个值的30%,实际结果和理论符合。 第七步:仪表上面的“set thresholds”按钮了,可以对所有参数的名称和最大显示上限进行设置。 第八步:仪表下的“Detail”按钮来查看具体详细信息。 第九步:在host table界面,我们可以看到本机和网络中其他地址的数据交换情况。

实验4 缓冲区溢出攻击实验

深圳大学实验报告课程名称:计算机系统(2) 实验项目名称:缓冲区溢出攻击实验 学院:计算机与软件学院 专业:计算机科学与技术 指导教师:罗秋明 报告人: 实验时间:2016年5月8日 实验报告提交时间:2016年5月22日 教务处制

一、实验目标: 1.理解程序函数调用中参数传递机制; 2.掌握缓冲区溢出攻击方法; 3.进一步熟练掌握GDB调试工具和objdump反汇编工具。 二、实验环境: 1.计算机(Intel CPU) 2.Linux64位操作系统(CentOs) 3.GDB调试工具 4.objdump反汇编工具 三、实验内容 本实验设计为一个黑客利用缓冲区溢出技术进行攻击的游戏。我们仅给黑客(同学)提供一个二进制可执行文件bufbomb和部分函数的C代码,不提供每个关卡的源代码。程序运行中有3个关卡,每个关卡需要用户输入正确的缓冲区内容,否则无法通过管卡! 要求同学查看各关卡的要求,运用GDB调试工具和objdump反汇编工具,通过分析汇编代码和相应的栈帧结构,通过缓冲区溢出办法在执行了getbuf()函数返回时作攻击,使之返回到各关卡要求的指定函数中。第一关只需要返回到指定函数,第二关不仅返回到指定函数还需要为该指定函数准备好参数,最后一关要求在返回到指定函数之前执行一段汇编代码完成全局变量的修改。 实验代码bufbomb和相关工具(sendstring/makecookie)的更详细内容请参考“实验四缓冲区溢出攻击实验.p ptx”。 本实验要求解决关卡1、2、3,给出实验思路,通过截图把实验过程和结果写在实验报告上。

四、实验步骤和结果 步骤1 返回到smoke() 1.1 解题思路 首先弄清楚getbuf()的栈帧结构,知道存放字符数组buf地址的单元和存放getbuf()返回地址的单元之间相差多少个字节。假设两者之间相差x个字节。 然后找到smoke()函数的入口地址。该值为4个字节。 再构造exploit.txt,前x个字节随意填,然后再填入4个字节的smoke()地址,注意是小端方式存储。 这样操作完成,就可以得到预期结果了。 1.2 解题过程 首先进入GDB对bufbomb进行调试,先在调用getbuf()处设置断点,然后运行。 注:此时的输入文件exploit_raw.txt文件中是随便填的,并不影响我调用smoke(),因为我会在gdb中使用set指令直接修改getbuf()的返回地址。 此时查看运行程序的调用栈帧结构,如下所示: 上图说明当getbuf()执行完后,会返回到test()函数中(返回到地址0x08048db2,我们要修改存放这个值的地址单元,改为smoke的入口地址值)。

缓冲区溢出攻击实验报告

缓冲区溢出攻击实验报告 班级:10网工三班学生姓名:谢昊天学号:46 实验目的和要求: 1、掌握缓冲区溢出的原理; 2、了解缓冲区溢出常见的攻击方法和攻击工具; 实验内容与分析设计: 1、利用RPC漏洞建立超级用户利用工具文件检测RPC漏洞,利用工具软件对进行攻击。攻击的结果将在对方计算机上建立一个具有管理员权限的用户,并终止了对方的RPC服务。 2、利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。 3、利用WebDav远程溢出使用工具软件和远程溢出。 实验步骤与调试过程: 1.RPC漏洞出。首先调用RPC(Remote Procedure Call)。当系统启动的时候,自动加载RPC服务。可以在服务列表中看到系统的RPC服务。利用RPC漏洞建立超级用户。首先,把文件拷贝到C盘跟目录下,检查地址段到。点击开始>运行>在运行中输入cmd>确定。进入DOs模式、在C盘根目录下输入 -,回车。检查漏洞。 2.检查缓冲区溢出漏洞。利用工具软件对进行攻击。在进入DOC模式、在C盘根目录下输入 ,回车。 3,利用软件Snake IIS溢出工具可以让对方的IIS溢出。进入IIS溢出工具软件的主界面. PORT:80 监听端口为813 单击IDQ溢出。出现攻击成功地提示对话框。 4.利用工具软件连接到该端口。进入DOs模式,在C盘根目录下输入 -vv 813 回车。5.监听本地端口(1)先利用命令监听本地的813端口。进入DOs模式,在C盘根目录下输入nc -l -p 813回车。(2)这个窗口就这样一直保留,启动工具软件snake,本地的IP 地址是,要攻击的计算机的IP地址是,选择溢出选项中的第一项,设置IP为本地IP地址,端口是813.点击按钮“IDQ溢出”。(3)查看nc命令的DOS框,在该界面下,已经执行了设置的DOS命令。将对方计算机的C盘根目录列出来,进入DOC模式,在C盘根目录下输入nc -l -p 813回车。 6.利用WebDav远程溢出使用工具软件和远程溢出。(1)在DOS命令行下执行,进入DOC 模式,在C盘根目录下输入回车。(2)程序入侵对方的计算机进入DOC模式,在C盘根目录下输入nc -vv 7788 回车。 实验结果: 1.成功加载RPC服务。可以在服务列表中看到系统的RPC服务,见结果图。 2.成功利用工具软件对进行攻击。 3.成功利用IIS溢出进行攻击利用软件Snake IIS溢出工具让对方的IIS溢出,从而捆绑

网络安全实验报告

网络安全实验报告 务书 一、目的与要求根据实验内容的要求和实验安排,要求学生在掌握网络信息安全基本知识的基础上,能够设计出相应的软件,并且熟练地运用各种网络信息安全技术和手段,发现并解决各类安全问题,维护网络及操作系统的安全。 二、主要内容实验一加密认证通信系统实现设计实现一个通信系统,双方可以通过消息和文件通信,用户可选择一种加密算法和认证算法,对消息和文件进行加密通信和完整性验证。(要实现认证和加密,工具和语言不限,可以直接调用现有模块,认证和加密不限)实验二 综合扫描及安全评估利用常见的一些扫描工具可以检测本系统及其它系统是否存在漏洞等安全隐患,给出全面而完善的评估报告,帮助管理员发现存在的问题,进而采取有力措施予以弥补,从而提高系统的安全性能。实验三 网络攻防技术矛与盾的关系告诉我们,在研究网络安全技术时,只着眼于安全防范技术是远远不够的,知己知彼方能百战不殆,因此,很有必要同时研究攻击与防范技术,才能更有效地解决各种威胁。实验四 Windows系统安全配置方案作为网络节点,操作系统安全成为网络信息安全首先应予考虑的事务,然而人们往往忽视了OS的安

全性。其实,OS的安全不只体现在密码口令上,这仅仅是最基本的一个方面。除此之外,服务、端口、共享资源以及各种应用都很有可能存在着安全隐患,因此,应采取相应措施设置完善的本地安全策略,并使用防病毒软件、防火墙软件甚至入侵检测软件来加强系统的安全。其中实验一要求编程实现,可直接调用相关功能函数完成。实验二至实验四可在机房的网络信息安全综合实验系统上完成。 三、进度计划序号设计(实验)内容完成时间备注1接受任务,查阅文献,开始实现密码算法和认证算法第一天2完成加密认证通信系统第二至七天3上午完成综合扫描及安全评估实验,下午进行网络攻防实验第八天4上午完成网络攻防实验,下午进行系统安全配置实验第九天5撰写实验报告并验收第天 四、实验成果要求 1、要求程序能正常运行,并实现任务书要求功能。 2、完成实验报告,要求格式规范,内容具体而翔实,应体现自身所作的工作,注重对设计思路的归纳和对问题解决过程的总结。 五、考核方式平时成绩+程序验收+实验报告。 学生姓名: 指导教师:xx 年6 月13 日实验报告题目: 网络信息安全综合实验院系: 计算机系班级:

山东大学信息安全实验报告

山东大学软件学院 信息安全导论课程实验报告 学号:201300301385 姓名:周强班级: 2013级八班 实验题目:缓冲区溢出实验 实验学时:日期: 实验目的: (1)了解缓冲区溢出的原理 (2)利用缓冲区溢出现象构造攻击场景 (3)进一步思考如何防范基于缓冲区溢出的攻击 硬件环境: 软件环境: WindowsXP操作系统 VS2008 实验步骤与内容: (1)了解缓冲区溢出的原理 缓冲区溢出简单来说就是计算机对接收的输入数据没有进行有效的检测(理情况下是程序检测数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。 看一个代码实例,程序如下: void function(char *str) { char buffer[16]; strcpy(buffer,str); } 上面的strcpy()将直接把str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。

(2)利用缓冲区溢出现象构造攻击场景 首先打开Microsoft Visual C++,新建工程和cpp文件,复制实验指导书的代码进行编译连接: 单击运行按钮,然后第1次输入“zhouqianga”,第2次输入2个“ga”,即可看到输出“correct”。

按F10开始进行逐步调试: 当第一次执行gets()函数之前,内存情况如下图所示

在最新的版本中gets被认为是不安全的,gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。现在都被要求改为get_s。来防止溢出。 如下图所示。 (3)学习例子程序2:数据被执行 在xp系统下,直接运行Exploit-1.1.exe,如下图所示:

网络安全系统实验报告材料-Nessus扫描工具地使用

网络安全实验报告 Nessus扫描工具的使用 网络10-2班 XXX 08103635 一、实验目的 通过Nessus扫描工具的使用,了解漏洞扫描的常用方法,掌握插件扫描的原理,了解针对扫描工具的防范措施。 二、实验要求 (1)本实验可以在Linux环境也可以在Windows环境下进行。 (2)总结Nessus使用过程中遇到的问题和解决方法。 (3)分析Nessus扫描结果,得出自己的分析报告。 三、实验内容 (1)安装Nessus的服务器端、插件库和客户端。 (2)配置Nessus服务器端,分配具体用户。 (3)用Nessus客户端对局域网或者公共网主机进行扫描。 (4)分析扫描结果报告,获取系统的有用信息,发现网络系统的安全漏洞。 (5)提出防范扫描工具的具体措施,并付诸实施。再用Nessus进行扫描,比较两次扫描结果的异同。 四、实验分析 1、对网络中的部分主机扫描: 本实验我选取的ip段是:219.219.68.110-219.219.68.120(不包含本机219.219.68.106),一共11台主机,理论上可以将11台主机全部扫描出来,但最终只扫描出来8台主机,造成

这种情况的原因可能是另外三台主机没有接入网络,或主机ip已经被篡改。

这里我先简单比较分析一下上面两图的不同,具体的扫描内容分析将会在下面的本机扫描中呈现。 从上面两图中可以看出,扫描出来的8台主机,有5台显示黄色(下面以ip尾号.113为例),其余的是黑色(下面以ip 尾号.112为例),.113有标记:“Medium Severity problem(s) found”,意思为“发现中等严重程度的问题”。仔细比较,不难发现,113的扫描数据比112多了一项general/udp,因为udp是传输不可靠,所以我分析就是这个传输不可靠造成被发现中等严重程度的问题。 2、只对本机扫描:

华科_计算机系统实验报告

课程实验报告课程名称:计算机系统基础 专业班级: 学号: 姓名: 指导教师: 报告日期:年月日 计算机科学与技术学院

目录 实验1: (1) 实验2: (7) 实验3: (24) 实验总结 (34)

实验1:数据表示 1.1 实验概述 实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。 实验目标:加深对数据二进制编码表示的了解。 实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。 实验语言:c。 实验环境:linux 1.2 实验内容 需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。 1)位操作 表1列出了bits.c中一组操作和测试位组的函数。其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。 你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。 表1 位操作题目列表

2)补码运算 表2列出了bits.c中一组使用整数的补码表示的函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。 表2 补码运算题目列表 3)浮点数操作 表3列出了bits.c中一组浮点数二进制表示的操作函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。 表3 浮点数操作题目列表

缓冲区溢出攻击与防范实验报告

实验六报告

如图2所示的Windows 2000系统(虚拟机环境下)的计算机。显然这2台计算机处于同一个网段中,可以相互通讯,win10系统用作攻击机,下面将在此系统上运行Metasploit进行渗透测试,而Windows 2000系统都是本次任务中需要进行渗透入侵的靶机,保持安装后的默认状态,没有打额外的系统安全补丁。 图1 win10攻击机

图2 Windows 2000 靶机 2、扫描靶机 在正式开始渗透之前,应该对靶机进行扫描探测工作,搞清楚渗透目标的系统类型、开放的端口服务、可能存在的安全漏洞等。 在win10攻击机上运行metasploit console,即可进入Metasploit环境。 现在可以利用MSF框架中集成的Nmap扫描器对渗透测试目标进行扫描,如图3所示,获取了靶机的开放服务和操作系统类型等信息。

图3 windows 2000扫描结果

利用扫描器的脚步插件,还有可能直接探测出目标系统的安全漏洞,例如如图4所示,Nmap 利用smb-check-vulns插件扫描探测出了Windows 2000靶机存在MS08_067漏洞,命令执行如下:nmap -script= 。 namap扫描的结果里报告发现MS08-067:DISABLED。这是在暗示我们或许能够对这台主机进行渗透攻击,然后我们在Metasloit里面找到此漏洞的攻击模块,并尝试攻击目标机器。MS08-067是一个对操作系统版本依赖非常高的漏洞,所以在这里,我们只自动payload指定一下目标就可以确保触发正确的溢出代码。 图4漏洞扫描结果 3利用MS08_067漏洞渗透入侵 MS08-067漏洞的全称为“Windows Server服务RPC请求缓冲区溢出漏洞”,如果用户在受影响

缓冲区溢出攻击详细讲解

缓冲区溢出攻击详细讲解 缓冲区溢出(Buffer Overflow)是计算机安全领域既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如MS的Visual Studio2010。接下来,我们结合具体代码,按照对缓冲区溢出原理的循序渐进地理解方式去挖掘缓冲区溢出背后的底层机制。 一、代码 <=> 数据 顾名思义,缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯子里倒入了过量的水一样。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终止。但是如果有人精心构造溢出数据的容,那么就有可能获得系统的控制权!如果说用户(也可能是黑客)提供了水——缓冲区溢出攻击的数据,那么系统提供了溢出的容器——缓冲区。 缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区的,因此所谓缓冲区可以更抽象地理解为一段可读写的存区域,缓冲区攻击的最终目的就是希望系统能执行这块可读写存中已经被蓄意设定好的恶意代码。按照冯·诺依曼存储程序原理,程序代码是作为二进制数据存储在存的,同样程序的数据也在存中,因此直接从存的二进制形式上是无法区分哪些是数据哪些是代码的,这也为缓冲区溢出攻击提供了可能。

网络安全课设Kerberos实验报告

附件《网络安全课程设计》实验报告格式 2012-2013学年第2学期 《网络安全课程设计》实验报告3 实验名称:实验18 安全协议之Kerberos协议 完成时间: 2014-6-4(练习三) 姓名:石心刚学号:110342124 姓名:何伊林学号:110342106 姓名:白冠军学号:110342101 姓名:尹新来学号:110342136 姓名:饶明艺学号:110342122 指导教师:崔鸿班级:110342A

实验目的 1.了解身份认证的原理及其重要意义 2.学习Kerberos身份认证全过程 3.学会在Linux下配置Kerberos身份认证系统 系统环境 Linux 网络环境 交换网络结构 实验工具 krb5 v1.6.2 实验步骤 本练习主机A~F为一组。实验角色说明如下: 首先使用“快照X”恢复Linux系统环境。 一.配置主KDC 在此过程中,将使用以下配置参数: 领域名称= https://www.wendangku.net/doc/8315286967.html,LAB DNS 域名= https://www.wendangku.net/doc/8315286967.html,lab 主KDC = https://www.wendangku.net/doc/8315286967.html,lab admin 主体= admin/admin admin主体密码:admin 数据库管理密码:jlcss (1)首先为主KDC改名,编辑/etc/sysconfig/network文件,把HOSTNAME改为kdc1,保存后重启系统。 (2)配置/etc/resolv.conf文件使本机找到DNS服务器,修改内容如下。 其中domain后面用来标识DNS域名,nameserver后面则用来标识DNS服务器的IP地址。在本实验中我们就以“应用服务器”作为DNS服务器,它的全限制域名是https://www.wendangku.net/doc/8315286967.html,lab,IP可以根据实验情况进行调整。 (3)主KDC配置时钟同步服务ntpd。Kerberos服务对于时间同步的要求是很高的,

网络安全实验报告

信息与科学技术学院学生上机实验报告 课程名称:计算机网络安全 开课学期:2015——2016学年 开课班级:2013级网络工程(2)班 教师姓名:孙老师 学生姓名:罗志祥 学生学号:37 实验一、信息收集及扫描工具的使用 【实验目的】 1、掌握利用注册信息和基本命令实现信息收集 2、掌握结构探测的基本方法 3、掌握X-SCAN的使用方法 【实验步骤】 一、获取以及的基本信息 1.利用ping 和nslookup获取IP地址(得到服务器的名称及地址) 2.利用来获取信息 二、使用工具获取到达的结构信息 三、获取局域网内主机IP的资源信息 -a IP 获得主机名;

-a IP 获得所在域以及其他信息; view IP 获得共享资源; a IP 获得所在域以及其他信息; 四、使用X-SCAN扫描局域网内主机IP; 1.设置扫描参数的地址范围; 2.在扫描模块中设置要扫描的项目; 3.设置并发扫描参数; 4.扫描跳过没有响应的主机; 5.设置要扫描的端口级检测端口; 6.开始扫描并查看扫描报告; 实验二、IPC$入侵的防护 【实验目的】 ?掌握IPC$连接的防护手段 ?了解利用IPC$连接进行远程文件操作的方法 ?了解利用IPC$连接入侵主机的方法 【实验步骤】 一:IPC$ 连接的建立与断开 通过IPC$ 连接远程主机的条件是已获得目标主机管理员的账号和密码。 1.单击“开始”-----“运行”,在“运行”对话框中输入“cmd”

1.建立IPC$连接,键入命令 net use 123 / user:administrator 2.映射网络驱动器,使用命令: net use y: 1.映射成功后,打开“我的电脑”,会发现多了一个y盘,该磁盘即为目标主机的C盘 1.在该磁盘中的操作就像对本地磁盘操作一 1.断开连接,键入 net use * /del 命令,断开所有的连接 1.通过命令 net use 可以删除指定目标IP 的IPC$ 连接。 ?建立后门账号 1.编写BAT文件,内容与文件名如下,格式改为:.bat 1.与目标主机建立IPC$连接 2.复制文件到目标主机。(或映射驱动器后直接将放入目标主机的C 盘中) 1.通过计划任务使远程主机执行文件,键入命令:net time ,查看目标主机的时间。 1.如图,目标主机的系统时间为13:4513:52 c:\ ,然后断开IPC$连接。 1.验证账号是否成功建立。等一段时间后,估计远程主机已经执行了文件,通过建立IPC$连接来验证是否成功建立“sysback”账号:建立IPC$连接,键入命令 net use 123 /user:sysback 1.若连接成功,说明管理员账号“sysback”已经成功建立连接。

缓冲区溢出漏洞

缓冲区溢出漏洞 IBM软件研究院 缓冲区溢出漏洞,是一种在软件中最容易发生的漏洞。它发生的原理是,由于软件在处理用户数据时使用了不限边界的拷贝,导致程序内部一些关键的数据被覆盖,引发了严重的安全问题。 缓冲区指的是操作系统中用来保存临时数据的空间,一般分为栈和堆两种缓冲区类型。缓冲区溢出漏洞是一种非常普通、非常危险的漏洞,在各种操作系统、应用软件,甚至是Web应用程序中广泛存在。 利用缓冲区溢出攻击,可以导致程序运行失败、系统当机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。 在当前网络与操作系统安全中,50%以上的攻击都是来自于缓冲区溢出漏洞。而缓冲区溢出中,最为危险的是栈溢出,因为入侵者可以利用栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,然后为所欲为。 这里要澄清一个概念,很多人把缓冲区溢出称之为堆栈溢出漏洞,其实是错误的,堆溢出和栈溢出是两个不同的概念,都属于缓冲区溢出。 平时听说的缓冲区溢出大部分都是属于栈溢出。由于程序在实现的过程中,往往会自定义一些内存空间来负责接受或者存储数据,这些被直接定义的空间大小是有限的,因此当程序将过多的数据不经检查而直接放入这些空间中时,就会发生栈溢出。 栈溢出最为直接的危害是,这些被过量放进内存空间的数据会将函数的返回地址覆盖。“返回地址”的概念来自于CPU处理指令的结构设计。如果程序现在准备调用一个函数,CPU首先会将执行完这个函数后将要执行的指令地址存储到栈空间中,然后CPU开始执行函数,执行完毕,CPUCPU取出前面保存的指令地址,然后接着执行。这个“返回地址”是保存在栈空间中的,而程序一般定义的空间也是在栈中进行分配的,这就给了我们覆盖这个“返回地址”的机会。 栈是一个先进后出的空间,而堆则恰恰相反,是一个先进先出的空间。缓冲区溢出就是把这些空间装满后还继续往里面装。 但是对于一个软件来讲,危害可能不仅仅如此,用一个表来表示这个过程在栈溢出发生的时候,软件运行时内存中的情况。 正常: Lower Addresses buf2 buf1 var3 saved %EBP return address function()'s arguments saved %EBP

网络安全-会话劫持-实验报告

课程名称网络信息安全实验 实验项目名称会话劫持 一、实验要求 理解TCP会话劫持的原理,掌握TCP会话劫持的技术以及防御技术。 二、实验环境 攻击机系统:Kali :192.168.200.9 TCP会话双方:WINXP:192.168.200.2 Win2000:192.168.200.11

Kali环境: 三、实验步骤 1.Kali上已安装过hunt,故直接通过命令./hunt 正式运行hunt,开启后已经是监听状态。 界面如下图: 2.此时操作被劫持双方运行telnet服务后,登陆或者各种命令行操作都可以,只要还是保持链接即可:在WIN2000上登录到WINXP的telnet: 3.此时回到kali 命令l是查看当前局域网内的连接

命令w是监控当前局域网内的连接 命令r是终结连接 有关劫持更多的操作的两个命令是a,s命令,都是进行arp劫持,但是a命令会防止ack风暴。 下面是部分演示: l(查看当前局域网内的连接): 对于序号0的连接为:192.168.200.11通过端口1049连接到192.168.200.2的23端口(即telnet)操作a: 此时进入一个画面,这时候表明你已经是监控这个对话了,你可以查看到任意192.168.200.11对192.168.200.2的操作。比如:Dir:在Win2000上使用Dir命令查看WINXP的目录: 这时在Kali上同样会显示相应的监控结果:

该方式是中间人欺骗,就是被动劫持,使得数据包通过你来传达,所以连接不会终止,而你只能查看其操作结果并不能进行命令的插入。 A操作之主动劫持: a操作有这样一句话 此时按下ctrl+c后,等待目标主机进行操作(随便操作即可),你会发现你输入命令是无效的,切回去kali主机上,会提示你是否代替这个对话的,回车即可,稍等片刻,你会发现你已经代替了这个对话了。目标主机依旧能输入命令,但实际上是没有效果了的。测试结果如下: 被代替主机情况:输入命令无效,输入的内容会在Kali上显示 在Kali上输入命令:

DNS溢出实验

DNS 溢出实验 应用场景 随着计算机网络的普及和发展,人们利用网络可以方便快捷地进行各种信息处理,例如,网上办公、电子商务、分布式数据处理等。但网络也存在不容忽视的问题,例如,用户的数据被篡改、合法用户被冒充、通信被中断等。面临着大量的网络入侵事件,就必须要求在一个开放式的计算机网络物理环境中构造一个封闭的逻辑环境来保障敏感信息和保密数据不受到攻击。为此迫切需要对网络安全作分类研究,把各种网络安全问题清楚有序地组织起来,从而构建一个合理、安全、高效的网络防御体系。 网络安全保护的核心是如何在网络环境下保证数据本身的秘密性、完整性与操作的正确性、合法性与不可否认性。而网络攻击的目的正相反,其立足于以各种方式通过网络破坏数据的秘密性和完整性或进行某些非法操作。 网络及其应用的广泛发展,安全威胁呈现出攻击的种类、方法和总体数量越来越多、破坏性和系统恢复难度也越来越大。这就要求我们对攻击方法有更进一步的研究;对安全策略有更完善的发展,建立起一个全面的、可靠的、高效的安全体系。 DNS 的设计被发现可攻击的漏洞,攻击者可透过伪装DNS 主要服务器的方式,引导使用者进入恶意网页,以钓鱼方式取得信息,或者植入恶意程序。 MS06‐041:DNS 解析中的漏洞可能允许远程代码执行。 Microsoft Windows 是微软发布的非常流行的操作系统。 Microsoft Windows DNS 服务器的RPC 接口在处理畸形请求时存在栈溢出漏洞,远程攻击者可能利用此漏洞获取服务器的管理权限。 如果远程攻击者能够向有漏洞的系统发送特制的RPC 报文的话,就可以触发这个溢出, 导致以DNS 服务的安全环境执行任意指令(默认为Local?SYSTEM )。? 实验目标: ● 了解程序调入内存中的分段情况 ● 掌握常见缓冲区溢出攻击工具使用方法。 ● 掌握缓冲区溢出攻击防御方法。 实验环境: VM Client 172.16.5.10/16 VM Server 172.16.5.20/16

网络安全实验报告

实验报告 网络安全实验 姓名: 班级: 指导教师: 实验时间:2018.06 哈尔滨工程大学 2018年06月

目录 实验一、网络分析器应用实验 (3) 一、实验目的 (3) 二、实验仪器与器材 (3) 三、实验原理 (3) 四、实验过程与测试数据 (3) 五、实验分析 (8) 六、实验体会 (8) 实验二、远程控制实验 (9) 一、实验目的 (9) 二、实验仪器与器材 (9) 三、实验原理 (9) 四、实验过程与测试数据 (10) 五、实验分析 (14) 六、实验体会 (14) 实验三、入侵检测系统分析与应用 (15) 一、实验目的 (15) 二、实验仪器与器材 (15) 三、实验原理 (15) 四、实验过程与测试数据 (16) 五、实验分析 (22) 六、实验体会 (22) 实验四、虚拟蜜罐分析与实践 (23) 一、实验目的 (23) 二、实验仪器与器材 (23) 三、实验原理 (23) 四、实验过程与测试数据 (24) 五、实验分析 (30) 六、实验体会 (31) 综合成绩................................................. 错误!未定义书签。考核要求. (32)

实验一、网络分析器应用实验 一、实验目的 1.下载Wireshark并进行安装; 2.掌握Wireshark的基本用法与设置: (1)了解捕获选项的相关设置; (2)学习使用过滤器显示符合过滤条件的数据包; (3)学习使用着色规则; (4)学习使用基本图表进行网络分析; 3.掌握使用Wireshark捕获流量数据包并保存至本地 4.使用Wireshark分析ARP协议的请求报文。 二、实验仪器与器材 Wireshark Windows 10 三、实验原理 Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。网络包分析工具是一种用来测量有什么东西从网线上进出的测量工具,Wireshark 是最好的开源网络分析软件。 Wireshark的主要应用如下: (1)网络管理员用来解决网络问题 (2)网络安全工程师用来检测安全隐患 (3)开发人员用来测试协议执行情况 (4)用来学习网络协议 (5)除了上面提到的,Wireshark还可以用在其它许多场合。 Wireshark的主要特性 (1)支持UNIX和Windows平台 (2)在接口实时捕捉包 (3)能详细显示包的详细协议信息 (4)可以打开/保存捕捉的包 (5)可以导入导出其他捕捉程序支持的包数据格式 (6)可以通过多种方式过滤包 (7)多种方式查找包 (8)通过过滤以多种色彩显示包 (9)创建多种统计分析 四、实验过程与测试数据 1.Wireshark的安装及界面

相关文档