20159311《网络攻击与防范》第九周学习总结
教材学习内容总结
本周重点学习了恶意代码安全攻防和软件安全攻防两个章节。
利用恶意代码技术,攻击者能够将系统攻击过程进行自动化和规模化,从而在更短的时间内对更多的网络用户构成伤害。正因为如此,互联网用户或许可能感受不到网络协议攻击和滥用,也不可能担心服务器遭遇渗透入侵,但却不得不面对恶意代码所带来的安全威胁与困扰。
恶意代码从发展和性质、感染范围可以大致分为以下几类
1、计算机病毒
2、网络蠕虫
3、后门与木马
4、僵尸程序和僵尸网络
5、rootkit
在这里重点分析一下“木马”攻击。
“木马”作为广大网名经常接触到的恶意代码,具有很“高明”的欺骗手段,试图偷偷越过计算机安全防线(例如,防火墙等)。通过使自己看起来像是正常有用的软件,木马程序可以用于以下目的:
1、欺骗用户或系统管理员安装木马程序,这样木马程序就通过毫无戒备的用户进入到计算机系统;
2、隐藏在计算机的正常程序中,将自己伪装成看起来属于该系统,使得用户和管理员不会觉察到它的存在,通过与后门结合,成为木马后门。
我们在互联网上浏览网页或者下载文件的过程中,经常会不经意中被木马程序所攻击。攻击者设计出了无数的木马程序和伪装技术的方法,将恶意功能隐藏在木马程序中,并植入到目标计算机系统中,这些技术包括简单的而有效的命名伪装游戏、使用软件包安装工具、攻击软件发布站点、代码下毒等。
所以普通网民很容易遭受到木马的攻击。
如果想要摆脱这些恶意代码的攻击,需要对这些恶意代码进行分析,以推导出其程序结构、数据流程和程序行为。
分析环境则是比较苛刻的。分析的技术方法分为静态分析和动态分析两大类。静态代码分析方法在不实际执行软件代码情况下对恶意代码进行自动化或辅助分析。动态代码分析方法则通过在受控环境中执行待分析的目标恶意代码,并利用系统、网络、甚至指令层次上的监控技术手段,来获取目标代码的行为机理和运行结果。
在计算机系统中,都是由计算机软件在硬件基础之上构建的,绝大部分网络与系统安全问题的根源在于计算机软件存在安全缺陷。
在2001-2006年中最流行的top10安全漏洞类型,缓存区溢出漏洞均保持第一。
缓存区溢出是计算机程序中存在的一类内存安全违规类漏洞,在计算机程序向特定缓存区内填充数据时,超出了缓存区本身的容量,导致外溢数据覆盖了相邻内存空间的合法数据,从而改变程序执行流程破坏系统运行完整性。
由于windows操作系统并不提供直接的系统调用,而是提供一系列的API接口函数,因此windows平台上的shellcode实现linux系统更难一些。所以暂时只研究了linux环境下的缓存溢出。
linux平台中的栈溢出攻击按照攻击数据的构造不同,主要有NSR、RNS和RS三种模式。
1、NRS模式主要适用于被溢出的缓冲区变量较大,足以容纳shellcode的情况;
(本人所理解的shellcode与shell的关系就是:用C语言代码编写实现的shellcode为攻击者启动一个命令行shell,供于攻击者进行下一步操作。)
2、RNS模式一般用于被溢出的变量比较小,不足于容纳shellcode的情况;
3、RS模式下能够精确的定位出shellcode在目标漏洞程序进程空间中的起始地址,因此也无需引入Nop空指令构建“着陆区”。
之前多次提到的shellcode实质就是一段机器指令,对于我们通常接触的IA32架构平台,shellcode就是符合intel32位指令规范的一串CPU指令,被用于溢出之后改变系统正常流程,转而执行shellcode以完成渗透测试者的目的,通常是为他提供一个访问系统本地或远程命令行访问(即shell)。
本人在实验楼也进行了相关实验,对缓存区溢出也进行了更深一步的理解:
首先在实验楼给出的环境中要进行一些设置,进入linux32。
此外,为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限,这个防护措施在/bin/bash中实现。
linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash。下面的指令描述了如何设置zsh程序:
在实验过程中出现一些问题,需要更深一步学习,稍后更博
学习进度条
学习目标(本学期)
能够真正的做到去攻击一个网络,并学会防守。
第二周进度
安装好网络攻防的环境,并学会linux下一些命令的使用。
第三周进度
上周目标基本完成,还需要熟练掌握linux下一些命令的使用。
本周计划熟练掌握关于搜集目标信息过程中的一些工具。
第四周进度
上周学习目标还有待跟进,有一些工具的使用尚未搞懂。
本周在继续跟进上周学习的同时,完成漏洞分析这方面知识的学习。
第五周进度
在上周的学习SQL注入方法的过程中,遇到了瓶颈。
本周继续深入学习该技术。
第六周进度
上周继续深入学习了SQL注入技术,初步有了了解。
本周继续攻克该技术。
第七周进度
上周已经基本掌握数据库注入漏洞技术。
本周深入学习密码攻击的各种工具。
第八周进度
上周学习使用了matasploit。
本周继续深入学习密码攻击的各种工具及对windows级linux系统安全的基本知识。
第九周进度
上周基本了解了缓存溢出的概念。
本周继续深入学习缓存溢出。