2016.07.25 丨 壹佰案例
网络安全与渗透测试训练营||渗透测试基础
2016.07.25 丨 壹佰案例
张银奎
微软MVP,《软件调试》一书的作者,《程序员》杂志调试之剑栏目作者。毕业于上海交通大学信息与控制工程系,长期从事软件开发和研究工作,对 IA-32 架构、操作系统内核、驱动程序、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast 和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(2008年中国软件技术大会)、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软 “深入研究Windows内部原理系列”的一部分)等。翻译(合译)作品有《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、 《人工智能:复杂问题求解的结构和策略》等。
本期微课堂,张银奎老师跟大家聊聊“渗透测试”。
今天跟大家分享的渗透测试跟软件调试在技术角度是有一定关系的,二者都是软件产业的永恒难题。
渗透测试是针对信息安全这个方向的。软件本身已经有很多复杂问题,比如软件瑕疵,调试,如何解bug,再加上安全问题,今天的软件真是负担重重。
到底什么是渗透测试?它的英文名是penetration testing,就是模拟黑客的做法,来考验我们的软件,黑客怎么做我们就怎么做,这样来发现问题。
虽然方法跟工具基本类似,但是目的是不一样的,黑客攻破信息系统常常有着不可告人的目的,而渗透测试的目的是为了提升软件的安全性。可以说二者既有联系又有区别,因此,从事渗透测试的人有时候被称为遵守道德的计算机黑客,简称白帽子。
首先给大家讲的一个关键点是如何构建一个渗透测试环境,在我当时学渗透测试的时候是一个比较复杂的问题,要用真实的硬件来模拟各种计算机系统,再加上路由器等网络设施。今天就可以大大简化了,随着计算机硬件的提升跟虚拟机技术的成熟,完全可以在一个物理平台上搭建几个虚拟机,用虚拟的网络环境,来建立这样一个渗透测试虚拟环境。上图是一个比较典型的基于虚拟机的渗透测试环境,这里面有多个虚拟机,有的是攻击方,就是发起测试的一方,有的是被攻击方,就是被测试的一方。
接下来讲几个比较典型的用于渗透测试的环境,第一个是著名的Kali Linux,它是一个基于Linux的定制系统。这个系统是专门为渗透测试而设计的,里面预装了很多渗透测试工具,使用很广。
怎么装这个系统呢?一种方法是下载ISO文件,进行安装,需要注意的是要给它分配比较大的磁盘空间,建议大家分配10个G左右。另一种方法是使用别人安装好的虚拟机镜像。
下面讲另一个系统,Metasploitable 2,它是模拟被攻击方的,里面已经预装了很多有漏洞的软件,还有很多典型的具有漏洞的网站。Metasploitable这样的目标环境是比较好的学习材料,我们在学习,练习渗透测试的攻击工具的时候,一般是希望攻击动作可以成功的。如果针对真实的系统进行攻击,很可能打过安全补丁,你的攻击是不能成功的。这时候也不确定是方法不对,还是其他问题。我们用Metasploitable这样的目标,它有漏洞没有打过补丁,刚好适合学习目的。
刚才讲了一攻一防两个系统,下面讲渗透测试的一般过程。这个过程常常被分为五大步骤。第一步叫Reconnaissance,我喜欢将其翻译为踩点,简单说就是收集目标系统的基本信息;第二步叫目标评估,是在对目标有了基本的理解之后,找寻目标系统存在的漏洞,看有哪些弱点;第三步叫Exploit,就是利用漏洞,乘漏洞之机,占领阵地。这一步成功意味着我们的代码在目标系统得到执行的机会,登陆了;第四步,权利提升;第五步,维护据点,运载一些工具过来,把自己的代码迁移到一个重要的进程上去,这样就能始终跟着系统一起重启,得到下次运行的机会。
接下来,再分别讲一下这五个步骤。
1.踩点,搜集信息。每一步都有很多工具,上图是Kali Linux里用于采集信息的工具截图,界面做的很友好,可以通过菜单项一层层找到工具,比如现在显示的是专门用于信息搜集的工具。
搜集信息包括了解目标的:域名,IP地址,哪些端口是打开的,上面跑了哪些服务。
2.目标评估。找攻击面里的弱点,漏洞。这一步是比较关键的一步,也是比较花时间的一步,它是真正的想找到目标系统的弱点,漏洞,哪里存在安全问题。这个有大量的工具帮助我们做这样的事情。
上图中是比较常用的,扫描目标系统漏洞的工具,这只是一小部分,不是完整的。
Cvechecker
Cve是一个著名的漏洞数据库,几个安全组织联合维护的信息系统。Cvechecker相当于用数据库里已经周知的漏洞,来进行扫描,看目标系统里面存在不存在Cvechecker数据库里已有的漏洞。
RIPS
静态扫描工具
OpenVAS
开源框架,可以实现扫描漏洞的目标
OpenVAS的架构如图所示,是一个比较好的通用的框架。运行之后有几个进程,OpenVAS Manager,相当于后台管理器,负责接收扫描参数的输入,把这个信息持久化,断了还可以继续扫。OpenVAS Scanner的任务时从OpenVAS Manager接收到任务,对定义的目标系统进行扫描。
OpenVAS的架构很有意思,安装好之后,会启动两个后台服务,host一个网站,启动好之后用浏览器去访问,来定义扫描的目标和选项。定义的选项的不同,所花的时间是不同的。扫描好之后会生成报告,上图是做扫描的一个web界面。
3.利用漏洞,Exploitation相当于发起攻击,前面搜集好了信息做好了准备,现在开火。
下面重点介绍一下著名的Metasploit Framework,简称MSF。MSF是一个开放的软件框架,支持各种插件(成为模块)。
MSF最初是HD Moore开发的,始于2003年,项目非常成功,2009年被Rapid 7收购。
2008年,HD Moore被eWeek评为安全领域最有影响力的十五大人物的第十名,主要就是因为他开发了MetasploitFramework。
上图是MetasploitFramework简单发展史,主要分为两个阶段,收购之前完全开原,收购之后有开源版本和收费版本。
Metasploit官网上可以看到目前的MSF主要贡献者,可以看到Wei Chen排在第一位,排在了HD Moore之前。可能是因为HD Moore于今年年初离开了Rapid 7。
上图是MetasploitFramework的架构图,在基础设施之上,分为四大类模块:
Payloads:有效负载
Auxilliary:提供各种扫描,小的工具
Exploits:攻击键,发起攻击的最关键的模块
Post:攻击成功的后期的模块
有多种方法使用MSF,一种就是通过命令行,执行msfconsole即可。上图是执行msfconsole后的启动界面,一组很有趣的慢画。最左边架起的机关枪代表踩点瞄准,这里略去了评估目标,右边画的是一辆坦克车,发起攻击。左下角是Payloads,运送负载到目标地。右下角是钱来了,攻击成功。
从这个logo看,也代表了MSF这样的渗透测试工具,初衷是给好人用的,有的时候也被黑客利用发起攻击。
上图先是了攻击的过程,通过攻击模块和负载模块可以得到代码执行权。闪电代表攻击得手,接下来运载Payloads,之后Payloads会回连攻击方。远程就可以控制界面控制目标机了。
也可使用图形界面的Armitage来做渗透测试,它是对MSF的包装,使用它可以感受到图形界面的便利之处。它把四大类模块都做了比较好的组织,可以在图像界面选择这四大模块再选择目标机。
上面是Armitage的截图,窗口区域一:四大模块,窗口区域二:目标,窗口区域三:控制台接口。
关于渗透测试书籍有很多,以下供参考:
END
张银奎老师将于9月24日在成都MPD分享《WEB安全与渗透测试》