我们可以逐一去看目录,利用思维导图或者你喜欢的方式把内容整理出来,比如 Kali linux 渗透测试的艺术 思维导图,Web 渗透测试思维导图,都是对图书内容进行的整理。
方法简单,但是需要你去下力气实践,下面我们继续进行拆解。
实践--流程和渗透测试任务内容和工具
上面我给初学者的一个简化渗透测试流程,在每个流程应该做的事情进行了概述,如何去执行这一阶段的任务,最简单的入门方法是从工具入手。每个阶段都有哪些工具可以使用呢?最简单的办法就是打开 Kali Linux,它已经对工具进行了分类,我们可以在此基础上进行额外的扩展。
Kali Linux 将所带的工具集划分为十四个大类,这些大类中,很多工具是重复出现的,因为这些工具同时具有多种功能,比如 nmap 既能作为信息搜集工具也能作为漏洞探测工具。另外,这里介绍的工具都是系统默认推荐的工具,我们也可以自行添加新的工具源,丰富工具集。根据笔者的经验,绝大多数情况下,系统推荐的工具已经足够使用了。一些专用工具,随着自己经验的丰富,可以逐渐添加进来,最终形成符合自己风格的一套工具。我们以 Kali 为例,对这些工具和对应的任务,结合流程,做简单的介绍。下面是入门阶段需要掌握的内容,工具不是核心是辅助,重要的是理解要做的事情和基本原理。
信息搜集
信息搜集工具集又分为 DN S分析、IDS/IPS 识别、SMB 分析、SMTP 分析、SNMP 分析、SSL 分析、VoIP 分析、VPN 分析、存活主机识别、电话分析、服务指纹识别、流量分析、路由分析、情报分析、系统指纹识别共 15 个小分类。Kali 的这些分类,基本概况了信息搜集阶段我们需要了解的任务内容。如果你有不熟悉的概念可以借助搜索引擎和教程去做大致了解了。
每一轮迭代我们需要根据自身的情况,顶一个容易掌握的标准,把不能掌握的内容暂时排除在外。因为随着学习迭代的增加,能力和知识水平一直都在增长,所有在第一轮遇到的难点,可能回过头来就会变成容易理解的内容。这样我们一直保持一个低难度学习的状态,不断上升,才不会让你中途放弃。
每一个大迭代中,我们要把所有模块都按低难度学习一遍,以保证渗透测试体系的完整性。同时对子模块做同样的分析,比如这个大迭代中,我要学习 Python 编程,那么需要按照前面说的方法对 Python 编程做全景分析,划分模块,区分难度等级,划分迭代。在我划分的三个大迭代中,第一个迭代不包含编程,二三迭代包含编程,同时会适当的将编程和工具使用,渗透测试任务逐步结合,达到互相融合和促进的效果。
下面我描述下三个迭代的内容。
实践
在具体实践过程中,我通常会推荐从 Web 渗透测试开始。因为当前 Web 应用是最常见的应用开发形式,同时一个完整的 Web 应用,会涉及渗透测试的各个领域。比如下面这张 Web 应用的架构图:
因为 Web 的复杂性,一个完整的 Web 应用渗透会将各个领域交织在一起的,从 Web 应用入手,会拓展到内网,操作系统,硬件,App 各个安全领域。
下面我举例说明的三个迭代学习过程,以 Web 渗透测试入门为基本范围,编程假定 Python 语言为主,工具训练以 Kali 为载体。
第一迭代
以 kali linux 为基础,把系统中所有工具都过一遍。开始动手实践的时候,选一本 Kali 的教材,相关书籍很多,选一本就够用,其他相关知识点,结合搜索引擎做扩展即可。
搭建靶机环境,选择一个网上流行的训练环境(需要能查到题解答案的),推荐 DVWA 和 DVWS。训练目标为熟练使用工具或者手工安装渗透测试基本流程完成对目标漏洞的攻击。
在原理理解层面,需要理解浏览器/服务器应用的基本架构;理解各个阶级各种工具完成任务的概念及作用;掌握基本的攻击方法和流程;理解各种漏洞基本原理。这个时候希望大家尽可能多做一些运维相关的任务,从安装服务器操作系统开始,到配置基本的 Web 服务器(比如配置 Nginx 支持动静态网站),手动大家 DNS 服务器,安装流行的数据库,下载流行的 CMS 部署到自己的实验环境中。 此时我们虽然不会编写 Web 站点,但是下载一个 CMS,按部就班的搭建一个网站还是可以的。这有助于我们理解网站的基本架构,以及 Web 服务程序、Web 应用代码、数据库等是如何组织在一起给用户提供功能的。
第二迭代
通过第一个迭代,我们可以利用工具完成一些简单的渗透测试任务了。有些工具的高级用法可能被你跳过去了,这个时候可以回头看看了。另外是是时候学学 TCP/IP 体系结构了,同时重点学习 HTTP 协议。对常用工具的原理多查找资料,去学习,从协议的角度去分析工具。
这一迭代的核心是编程入门,建议选一本经典的 Python 编程的入门书籍,你大致浏览的全书的内容之后,给自己定一个大概两个月的学习内容,先粗略的筛掉不好理解的东西。我在编写针对性的 Python 黑客编程入门的教程时,会尽可能的对 Python 基础进行裁剪,整个入门课程的各个章节都是对 Python 基础的一个不断的迭代的过程,每个章节都是本着够用就好的原则。相关基础会在实践的环节不断根据需要补充进去。如果想一下把整个 Python 编程的内容学全了再和渗透测试结合,是违背了螺旋学习法的原则的。这个大家要把控好。我个人定制的课程目录供参考(整体内容是完整的,但是每个章节的内容都按入门标准进行了精心设计,详情可以参考。)
Python 黑客编程之极速入门
第一章:Python 编程基础 • Python 简介和开发环境搭建
• 数值类型
• 字符串、列表、元组、字典和集合
• 流程控制
• 函数
• 模块
• 异常处理
• 面向对象编程
第8章: 课程总结和寄语
关于 Web 编程,是你必须要涉及的,入门标准需要你掌握基本的前后端编程基础。前端包括 JavaScript、Html、CSS 的基本使用。后端要求能使用一个 Web 开发框架,编写基本的 Web 站点,能自己阅读靶机的实现代码。在此基础上理解常见漏洞的本质原因,比如 xss,csrf,sql 注入,点击劫持等等。同样,找一本 Web 编程的入门书籍来学习即可,仍要把握螺旋学习的原则,同时定好难度标准,结合你的渗透学习内容,够用即可。
可参考的资料如下: