20199135-2019-2020《网络攻防实践》第10周作业
20199135-2019-2020《网络攻防实践》第10周作业
问题 | 回答 |
---|---|
作业所属课程 | 网络攻防实践(https://edu.cnblogs.com/campus/besti/19attackdefense) |
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10723 |
我在这个课程的目标是 | 学习第十章 |
这个作业在哪个具体方面帮助我实现目标 | 熟悉linux环境 |
作业正文 | 见下文 |
参考文献 | 见博客结尾 |
1.实践内容
10.1.1软件安全漏洞威胁
10.1.2软件安全困境
软件安全“困境三要素"(The Trinity of Trouble),它们是复杂性(Complexity)、可扩展性(Extensibility)和连通性(Connectivity), 这三个要素共同作用,使得软件的安全风险管理成为了一个巨大的挑战,从而很难根除安全漏洞。
10.1.3软件安全漏洞类型
10.2.1缓冲区溢出的基本概念
缓冲区溢出是计算机程序中存在的一类内存安全违规类漏洞,在计算机程序向特定缓冲区内填充数据时,超出了缓冲区本身的容量,导致外溢数据覆盖了相邻内存空间的合法 数据,从而改变程序执行流程破坏系统运行完整性。
10.2.2缓冲区溢出攻击背景知识
为理解缓冲区溢出攻击的原理和具体机制,以及其他软件安全漏洞问题及其利用方法,我们需掌握计算机程序的底层运行机理。需要掌握编译器与调试器的使用,汇编语言基础知识,进程内存管理,函数调用过程
10.2.3缓冲区溢出攻击原理
缓冲区溢出漏洞根据缓冲区在进程内存空间中的位置不同,又分为栈溢出、堆溢出和内核溢出这三种具体技术形态,栈溢出是指存储在栈上的一些缓冲区变量由于存在缺乏边界保护问题,能够被溢出并修改栈上的敏感信息(通常是返回地址),从而导致程序流程的改变。
10.3.1 Linux平台栈溢出攻击技术
Linux平台中的栈溢出攻击按照攻击数据的构造方式不同,有NSR、RNS和RS 三种模式。
10.3.2 Linux平台的Shellcode实现技术
按照在本地溢出攻击和远程溢出攻击使用场景的不同,又分为为本地 Shellcode 和远程 Shellcode
• Linux本地Shellcode实现机制
这个过程事实上也体现了 Shellcode的通用方法,包括如下5个步骤:
①先用高级编程语言,通常用C,来编写Shellcode程序;
②编译并反汇编调试这个Shellcode程序:
③从汇编语言代码级别分析程序执行流程;
④整理生成的汇编代码,尽量减小它的体积并使它可注入,并可通过嵌入C语言进 行运行测试和调试;
⑤提取汇编代码所对应的opcode二进制指令,创建Shellcode指令数组。
• Linux远程Shellcode实现机制
Linux系统上的远程Shellcode的实现原理与本地Shellcode完全一致,也是通过执行一系列的系统调用来完成指定的功能。实现方法步骤也是首先给出高级语言的功能代码实现, 然后通过反汇编调试编译后的二进制程序,提取、优化和整理所获得的汇编代码,并最终产生opcode二进制指令代码。
10.4.1 Windows平台栈溢出攻击技术
• Windows平台栈溢出攻击技术机理
Windows操作系统平台在很多方而与Linux操作系统具有显著不同的实现机制,而在这些差异中,与成功攻击应用程序中栈溢出漏洞密切相关的主要有如下三点。
(1)对程序运行过程中废弃栈的处理方式差异
(2)进程内存空间的布局差异
(3)系统功能调用的实现方式差异
10.4.2 Windows 平台 Shellcode 实现技术
(1)创建一个服务器端socket,并在指定的端口上监听:
(2)通过accept接受客户端的网络连接;
(3)创建子进程,运行“cmd.exe”,启动命令行;
(4)创建两个管道,命令管道将服务器端socket接收(rccv)到的客户端通过网络输 入的执行命令,连接至cmd.exe的标准输入;然后输出管道将cmd.exe的标准输出连接至 服务器端socket的发送(send),通过网络将运行结果反馈给客户端。
10.5.1堆溢出攻击
堆溢出(Heap Overflow)是缓冲区溢出中第二种类型的攻击方式,由于堆中的内存分配与管理机制较栈更为复杂,不同操作系统平台的实现机制都具有显普的差异。
堆溢出攻击的基本原理。
•函数指针改写
• Linux下堆管理glibc库free。函数本身漏洞
10.6.1缓冲区溢出攻击的防御技术
使用以下三种技术来达到抵御缓冲区溢出攻击的能力。
•尝试杜绝溢出的防御技术
•允许溢出但不让程序改变执行流程的防御技术
•无法让攻击代码执行的防御技术
实践总结
本章详细介绍了缓冲区溢岀这类安全漏洞类型的基本概念、渗透攻击技术原理与具体过程,以及通过缓冲区溢出攻市注入Shellcode的实现技术原理。最后,为软件开发与使用人员提供了防御缓冲区溢出攻击的技术和方法。