写在前面:
我为什么要写这个系列呢?第一是我想要以做笔记或是写小说的方式尽量让我记住这些繁杂的东西并顺利化繁为简,其次就是因为记忆力太差了。首先,这个系列是我第一次尝试写的,垃圾话会很多,也会不怎么专业,不过我会尽力完善的,因为这也只是第一版。我还是一只菜鸟,要学的东西还有很多,我希望在看这本书的刚入门的新手能比我少走些弯路,节省宝贵的学习时间。
首先我们了解一下什么是渗透测试,渗透测试就是模仿黑客的手段入侵对方并对其进行安全评估以及给出对应的解决方案,渗透测试是为了更好的维护企业安全的一项重要工作。
这个工作可以说很酷,也同样有着危险性(虽然公司签订的协议一定程度上还是会起到保护作用),总之心中还是要画清界限,文件上写明了不能搞的地方就不搞,这份工作可不是什么好玩的事情。
即使我只能算是个技术爱好者,但好歹也翻了好几本书了,能总结的就是上面几行字。
不管正在阅读这篇文章的你要成为一名自由黑客或是渗透测试工程师,我也想让我的文章起到一点点的作用。不过记住最重要的,不管在看这篇文章的读者想要成为任何人都要记住的一件事——法律,如果使用技术胡作非为的人是不会有任何人为他负责任的。
在开始的时候你需要有一台设备,这就够了,也许它会是一部安卓手机,一个树莓派(或其他arm开发板),一台笔记本电脑或者是一台台式电脑……
总之你需要的就是一个终端以及让它连接到网络上。
当你准备好打开你的电脑,启动了熟悉的win7(或win10)的时候,我们的冒险就开始了。
这本书将带领你通过和《黑客秘籍——渗透测试实用指南》以及《Metasploit魔鬼训练营》类似的角色扮演的方法来进行渗透测试的学习以及实战。
第0章:细谈渗透测试
你缓缓地打开了你已经用得有些旧的笔记本,坐在一把蓝色的小椅子上,你把笔记本放在大腿上等待着记录笔记的应用ONE NOTE打开。
"咳咳,听好了各位,你们在进入公司培训之前也算是有一点小名头,在我们的培训后我相信你们一定会上到更高的技术层次的。"带着方框眼镜的严肃讲师在离你不远处的讲台上说着听起来很热血实际上各种广告嫌疑的垃圾话。
……
安静,无比的安静,你看了看在你身边的各位都满不在乎地低头玩手机。
只见讲师有些尴尬的咳了几声,清了清嗓子,终于又开口道:
"那我们就不多说废话直接进入培训吧。"
"首先,我们来讲讲什么是渗透测试,要怎么进行渗透测试。"
你一直搭在键盘上的手动了起来,把老师说的话敲打进了笔记本里。
……
'''
渗透测试简单地说就是企业出钱来为他们的防御找出不足的地方,防止重要的数据被骇客窃取。渗透测试人员(以下简称"测试人员")需要寻找系统弱点,通过漏洞绕开防御机制,找出攻击者可能使用的攻击方法并避免委托的客户(企业,公司)受到此类攻击。
白盒测试,黑盒测试是渗透测试中的两个常见的类型。虽然有各种各样的分类方法,但在业内普遍将其分为两类:白盒测试和黑盒测试。
白盒测试:测试人员可以获取客户公司的内部资料,可以一定程度减少的工作量且提高评估的精度。白盒测试通过对已知的系统环境出发,全面消除内部安全问题,增加了外部渗透入侵系统的难度。黑盒测试起不到类似的作用。不过白盒测试的步骤数目与黑盒测试基本相同,只是在测试时间,成本,发现并解决安全弱点的技术门槛都低于黑盒测试,这也是为什么白盒测试的报价一般低于黑盒测试的原因。
黑盒测试:测试人员在不清楚目标内部技术构成的情况下从外部对其网络安全进行评估。在测试的各个阶段测试人员通过自身的黑客技术对目标存在的可利用的漏洞进行挖掘,一般使用穷举法把可能测试的地方都测试一次。黑盒测试不仅能挖掘出对方的安全问题,还有可能揭露未被他人发现的0day。测试人员应能理解安全弱点,将其分类并按照"高,中,低"三个风险等级进行排序,风险级别取决于弱点漏洞可能形成的危害大小。在完成所有渗透测试工作后需要将这些风险以及对方的安全情况整理汇总,使用业务语言描述并写成书面报告。
当然还有结合了白盒和黑盒的灰盒测试,也就是在有一部分已知资料来进行的渗透测试。
渗透测试明确分为以下几个阶段:
明确需求阶段: 也就是和客户沟通的阶段,渗透测试人员要专门与客户沟通,理解客户测试的业务需求。当然这会有很多问题出现,例如:这是他们第一次进行渗透测试,是什么因素让他们决定找外部的测试人员?会测试哪一些区域?重点测试的区域?哪些东西不能破坏要特别小心……
在询问客户具体业务时需要主动地提问,那么应该提问些什么呢?在明确需求阶段需要获取的其他信息大概有:
项目范围:列出在测试范围内的ip和主机,以及客户允许的测试行为,能否使用可能导致服务瘫痪的代码(exploit),是否进行社会工程学?
测试时间:客户限定的测试时间。
联系方式:需要有一个发现严重问题时可以联系的联系人。
免责条款:必须确保在测试人员有权对目标进行渗透测试,如果目标为第三方托管,需要验证第三方是否允许客户进行渗透测试。这些重要的细节都要落实在免责条款中,维护意外情况下限定己方的法律责任。不要忘记获取渗透测试的书面授权。
支付条款:落实付款方式,时间,金额。
保密条款:书面承诺对渗透测试的内容以及测试中发现的问题进行保密。
明确需求大概就上面写的那么多了。
接下来让我们进入下一个阶段——信息收集阶段
在这个阶段,测试人员将获取分析各种公开的信息(如:能在互联网上被搜索到的内容)。公开的信息收集又被称为OSINT(Open Source Intelligence,开源情报分析)。当然,测试人员还要使用扫描工具分析目标运行的系统以及服务。
获取公开的信息: 主要通过论坛,公告,新闻媒体文章,博客,社交网络,其他网站等。搜索引擎将会是一个好帮手。
在搜集信息后就可以展开威胁建模,这个阶段测试人员将利用收集到的信息从攻击者的角度出发拟定各种攻击方案。
目标识别,服务枚举,这两个过程用于对目标系统的网络状态进行描绘,在进行服务枚举时就可以对测试范围内的端口进行扫描,找到开放端口就能进一步列出系统上运行的服务。在对目标有了深度的分析和认识后,才能发掘存在的漏洞,渗透测试也才能展开。
漏洞分析阶段:在这个阶段测试人员利用已知的情报对客户的系统进行漏洞探测,来确定渗透测试的有效性。服务崩溃,引发警报,错失良机等等情况都会发生。测试人员需要使用漏洞扫描程序,借助漏洞数据库和主动检测技术,推测目标可能存在的漏洞。当然最重要的还是人工分析亲自对漏洞进行确认,这一段讲述到的过程也可以称为漏洞映射,这个时候我们就进入到了漏洞验证阶段,测试人员将对发现的漏洞进行攻击,在这个阶段测试人员一般会使用Metasploit一类的攻击框架对发现的漏洞进行exploit,获取客户系统的访问权限,也就是所谓的漏洞利用。结合自动和手动(时间较长)的测试方式会对目标系统的认知更加清晰,也能仔细检查已知或未知的漏洞。
深度攻击阶段:这是最有趣的一个阶段了,也就是真正意义上大展身手的时候。测试人员在这个阶段将以被突破的系统为着手点搜索各种信息以及重要文档,甚至在必要的时候提升权限以及访问维护(对权限的维护,安装后门以便于重新进入目标系统)
在这个阶段还有可能根据客户的需求安排社会工程学(简称社工)测试,社工对测试人员的工作进展突破很有帮助。在社会工程学中,达成目标的方式有很多种……社会工程学不只是骗来免费的披萨这么肤浅的事情,它也是一门科学。
书面汇报阶段:
这是最终的阶段了,测试人员要将发现的所有问题整理成易于客户理解的书面文档。这种文档应当指出需要客户的改进不足之处以及应对的安全措施,同时还要描述突破防线的手段和获取到的信息,提供修复问题的建议等内容。
这些报告还可以用于获取和比较渗透测试前后客户系统的完整性。
撰写渗透测试报告是门学问。要掌握各种技巧,只能多加练习。测试人员要使用清晰的专业语言, 让所有人准确理解测试过程中发现的具体问题。此处的“所有人”不仅包括客户方从负责修复漏洞的IT人员到负责签字确认改进进度的高管在内的全部内部人员,还包括与客户有关的外部审计人员。举例来讲,如果把“测试人员通过MS08-067 (的exploit)拿到了一个shell”这样的文字递交给客户的非技术人员,那么他/她也许不会理解MS08-67或是 shell的意思。实际上,测试人员应当在此处描述可获取(甚至改动)数据的具体用途。比方说,如果将此处的“拿到了一个shell"改为“(测试人员)能够读取某人的邮件”,那么所有人就都能理解这是什么问题了。
渗透测试的书面报告应当分为执行摘要和技术报告两个段落。这两个段落的内容大致如下。
执行摘要:对测试目标和调查结果的高度总结。它主要面向那些负责信息安全计划的主管人员。执行摘要通常由以下几个方面构成。
背景介绍:测试人员不仅要在“背景介绍”中记录此次测试的实际目的,还要向管理人员介绍那些他们不常接触的术语。
整体评估:对各类问题进行高度总结。此处应列出测试过程中的问题清单(如:可被利用的某个漏洞),以及导致安全隐患的相应问题(如:缺少补丁管理措施等)。
风险预测:企业安全状况的级别评定。参照同行业情况按照前面说过的"高/中/低"进行评定,划分客户的安全等级。测试人员应补充说明级别评定标准。
调查总结:通过统计分析和定量分析的方法,对已有安全措施的实际效果进行的总结性描述。
改进建议:解决现有问题的初步建议。
战略规划:向客户建议用于增强安全性的长短期规划。
技术报告:技术报告则应记录测试过程中的各种技术细节。它通常由以下几个方面构成:
项目简介:项目范围,联系人等信息的详细记录。
信息收集:信息收集阶段发现的各种问题。(客户一般会特别关注Internet上的系统入口信息。)
漏洞评估:漏洞分析阶段发现的所有技术细节
漏洞验证及攻击方法验证:漏洞验证阶段的技术细节。
深度攻击:深度攻击阶段发现的问题细节。
风险及暴露程度分析:对已知风险的定量分析。在相关篇幅里,测试人员应以假想攻击者成功利用各安全漏洞为前提,评估已知问题可能产生的各类损失。
结论:整个渗透测试项目的总结。
以上就是渗透测试的主要过程了。
(这个科普部分,有一些文字摘抄自《渗透测试完全初学者指南》与《Kali Linux渗透测试的艺术》)
'''
一整个上午的培训时间终于结束了,你算是对渗透测试有了一些认识,心血来潮的你决定在这个公司就职成为一名渗透测试人员。
……
最终你通过了培训考核成功地在X网络安全公司就职了。
刚入职一个月,你就接到了第一份工作……
第1章:L公司的委托
L公司的代表李先生(虚构人物)向你所在的X公司提出了委托,而公司又把这个任务交给了你,现在你需要和客户李先生进行交谈。
(在真实的渗透测试中,需要验证合同缔约方的真实身份,这是渗透人员的责任,必要时需要联系被测单位进行确认)
你和李先生约定了时间地点准备开始谈谈这一次的委托。
你在约定的时间来到了约定地点,你看见李先生已经提前到那里等你了。
开始明确需求阶段
首先你要收集客户的需求,你从单肩包中拿出了一份文件夹,向李先生简单介绍了一下渗透测试并开始询问客户公司的一些状况。
你从文件夹中拿出了调查问卷,这份调查问卷中简单地整理出了一些常见问题(请根据客户的需求扩展或精简其中的问题)。
'''
公司的基本信息(如:名称,注册地址,企业网站,联络人的详细资料,电子邮件地址以及电话号码)
客户启动渗透测试项目的主要动机
渗透测试的具体类型(包含或不包含特定标准):
黑盒测试
白盒测试
外部测试
内部测试
是否进行社会工程学测试(一般情况下客户不会进行社会工程学测试)
调查员工背景
使用伪造的员工信息进行测试(一般情况下不会,如果客户有选择请咨询律师)
是否进行DoS(拒绝服务攻击)测试(注:DDoS为分散式拒绝服务攻击)
渗透业务合作伙伴的系统(需多方协商并同意)
测试项目涉及多少服务器,工作站和网络设备
基础设施架构支持什么操作系统技术?
需要测试什么类型的网络设备?(防火墙,路由器,交换机,调制解调器,负载平衡器,IDS,IPS,还是其他类型的硬件设备)
是否有灾难恢复计划?如果有,谁是测试人员应当联系的紧急联系人?
是否有在岗的网络管理员?
是否需要遵循什么特定的工业标准?如果有请列出来。
当前渗透测试项目的联络人是谁?
这个项目的时间周期是多久?
这个项目的预算是多少?
其他方面的需求?
(摘抄自Kali Linux渗透测试的艺术p62~63,有进行删改)
'''
你帮助李先生完成了问卷,你们又详细地谈了有关这次测试的其他信息。
'''
可交付成果(对渗透测试完成的结果的报告)的需求调查表
您(客户)期望得到哪种类型的报告?
执行报告
技术评估报告
开发人员报告
您希望项目报告采用哪种格式?(PDF,HTML或DOC)
以加密邮件还是纸质文档提交报告?
收取报告的负责人?
员工
股东
干系人
(同样摘抄自渗透测试的艺术)
'''
……
明确需求阶段结束了,你的任务也确定了下来,这是一次特殊的渗透测试工作。你已经被完全授权,允许使用任何方式进行这次渗透工作。你将在这次渗透中使用你的黑客技术,黑客硬件,以及社会工程学。请善用工具箱中的所有工具以及你智慧的大脑,你的目标是像黑客一样突破L公司的网络并窃取其商业机密,当然在保密协议下你只能让秘密烂在肚子里,坐牢可一点都不好玩。
(更新较慢,喜欢的话记得点个赞)
网友评论