转眼间,从大三开始学安全,到现在也有五年了,也算是对渗透测试有一定理解,公众号准备出一些入门教程,以实操为主,希望可以帮助到想入门渗透测试的小白。如果觉得有用,可以在文章后面支持一下我,作为我写下去的动力。
1. 什么是渗透测试
渗透测试就是模拟真实黑客的攻击手法对目标网站或主机进行全面的安全评估,与黑客攻击不一样的是,渗透测试的目的是尽可能多地发现安全漏洞,而真实黑客攻击只要发现一处入侵点即可以进入目标系统。
一名优秀的渗透测试工程师也可以认为是一个厉害的黑客,也可以被称呼为白帽子。
一定要注意的是,在进行渗透测试前,需要获得目标客户的授权,如果未获得授权,千万不要对目标系统进行渗透测试,后果请查看《网络安全法》。同时要有良好的职业操守,不能干一些违法的事情。
2. 为什么要学渗透测试
学渗透测试的好处不外乎以下几点:
• 心理满足感。很酷,就像小时候看黑客的电影一样,自己也成为了他们。
没那么卷。在软件开发、金融行业卷上天的时代,网络安全行业的竞争可以说相当小,因为这方面的人才实在太少了。
3. 学习渗透测试的前置技能
学习渗透测试其实最重要的是有兴趣,要有一颗好奇的心,一个对知识渴望的心,以及足够的毅力,这样可以支撑我们在这条道路上不断学习。
当然,学渗透测试还是有点门槛的,如果是计算机专业的人,可以轻松上手,在一两个月内入门。如果是其它专业的,或者是电脑小白,那么还是比较有难度的,但是也不用担心,我身边有很多大牛都是零基础入行的,所以兴趣还是最重要的。
下面说一些渗透测试需要的基本前置知识:
• HTTP协议基础知识。HTTP协议属于计算机网络的知识,因为渗透测试基本是对网站的请求数据进行修改,查找漏洞,所以了解HTTP协议请求的格式是必不可以的。
• cmd / shell 操作。这里说的 cmd 操作是指会使用 Windows 系统的 cmd 命令行窗口执行一些常见的命令,按 win + R 键,输入 cmd 回车,可以打开cmd 窗口。还有就是要会使用 linux 执行一些常见的 shell 命令。
• Linux 操作系统使用。由于很多渗透测试工具只能运行在 Linux 操作系统中,所以我们要会使用 Linux 系统,可以通过 VMWare 虚拟机软件安装 Ubuntu linux 虚拟机来练习使用,也可以直接安装 Kali Linux 来练习。
前面说的是一些基本知识,下面是一些可选知识,没有这些知识也可以做渗透测试,只是局限性会比较大。
• python 编程语言。作为一个脚本小子,会 python 语言可以帮助我们开发一些工具减轻平时的工作量,用 python 来做一些重复性的工作,如自动化信息收集,最重要的是可以写一些漏洞利用工具。
• Java/PHP 编程语言。渗透测试大部分时间都是对网站进行操作,这些网站大多数是使用 Java 或 PHP 语言开发的,有些是使用一些开源的系统进行二次开发的,我们可以对这些开源的系统进行代码审计,直接从代码中发现漏洞。
4. 如何学习渗透测试
回到文章主题,如何学习渗透测试。
第一步,先确定要学习的方向
在学习渗透测试前,可以先了解一下渗透测试有哪些方向,因为渗透测试的范围还是比较广的,按方向分,可以大致分为 Web 渗透 、 APP 渗透、 内网渗透 、物联网渗透、 工控渗透。 按难度来排序,我认为的难度排序是 Web渗透 < 内网渗透 < APP 渗透 < 物联网渗透=工控渗透。理想情况下当然是所有都会最好,但凡事都需要一步步来,可以先从最简单的 Web 渗透开始学,当Web 渗透掌握了,再扩展到其它方向。
为什么这样排序,说下我的理由:
Web 渗透主要是要找网站的漏洞,只需要了解一些基础的计算机网络知识,也就是 HTTP 协议的知识,然后会一些工具的使用就可以了,剩下的就是了解一些常见 Web 漏洞的测试方法。
内网渗透是指在我们通过 Web 渗透获取 Web 服务器权限或者使用钓鱼邮件等方式获取了目标内网主机权限后,对目标公司的内部网络进行渗透测试。其中需要掌握更加多的计算机网络知识,比如子网划分、网络拓扑图、各种网络协议。还要了解 Windows 域知识,权限提升技术、横向移动技术、权限维持技术、免杀技术。要学习的内容难度也不算大,所以只要肯花时间,也是可以掌握的。由于知识点比 Web 渗透多,所以难度比 Web 渗透大。
APP 渗透可以理解是 Web 渗透的扩展,主要是对 安卓 APP 和 iOS APP 进行渗透测试,APP 也需要和服务器后台进行数据交互,这部分的测试和 Web 渗透一样。另外还需要对 APP 本身的漏洞进行测试,这需要逆向分析的能力,而逆向分析其实也属于安全的一个大方向,需要我们掌握一些脱壳技术、动态调试技术、反编译工具使用、Java 编程语言、C/C++ 编程语言、汇编语言、 Swift 编程语言、Object-C 编程语言。在编程语言方面,我们不需要像软件开发人员一样精通,但至少需要能看懂代码。由于 APP 渗透需要逆向分析能力,并且学习的计算机底层知识更多,而因此 APP 渗透难度更大。
物联网渗透、 工控渗透其实都差不多,区别其实就是物联网设备需要联网,工控设备一般是在隔离的网络中,相同点是都需要接触物理设备。不同于上面的各项渗透,只需要有网络就可以开始,如果没有物联网和工控设备,根本无法开始,或者只能做部分的测试,在能否接触到设备这里,就拦住了很多人。这方面的学习需要花钱买硬件,或者公司进行投入采购硬件。在技能方面,除了要会逆向分析外,还需要了解各种硬件知识、电气知识、工业协议、物联网协议,因此难度是最高的。
第二步,了解所学习方向的框架和知识点。
了解所学习方向的框架和知识点比较重要,这样不至于盲目学习不重要的知识点。要入门渗透测试,先从最简单的 Web 渗透开始,入门级的 Web 渗透知识点框架我认为可以分为三部分。
一、信息收集流程。
如子域名收集、备案查询、github 敏感信息查找等等,知道的方式越多,收集的信息也越多。
二、渗透测试常用工具使用。
对于入门级的渗透测试,会使用 nmap、Burpsuite、Kali Linux 、sqlmap 就基本足够了。
三、Web渗透常见漏洞测试。
对于入门级的渗透测试,可以先掌握 OWASP Top 10 的漏洞、如最常见的 SQL 注入漏洞、XSS 漏洞、文件上传漏洞、越权漏洞、弱口令等。
1.1 明确目标
主要是确定需要渗透资产范围; 确定规则,如怎么去渗透; 确定需求,如客户需要达到一个什么样的效果。
1.2 信息收集
信息收集阶段主要是收集一些基础信息,系统信息,应用信息,版本信息,服务信息,人员信息以及相关防护信息。
信息收集大多是工具加手工进行收集信息,工具如nmap,相关终端命令,浏览器插件,在线工具等。
1.3 漏洞探测(挖掘)
主要是探测(挖掘)系统漏洞,web服务器漏洞,web应用漏洞以及其他端口服务漏洞,如telnet,ssh,vnc,远程桌面连接服务(3389)等。
1.4 漏洞验证(利用)
漏洞验证主要是利用探测到的漏洞进行攻击,方法主要有自动化验证(msf),手工验证,业务漏洞验证,公开资源的验证等。
总的来说就是工具加手工,为了方便,可以将自己渗透常使用的工具进行封装为工具包。
1.5 提升权限
提升权限主要是在当前用户权限不是管理员的时候需要进行提升权限,提升权限可以是提升系统权限,web应用权限或是数据库权限等。
1.6 清除痕迹
清楚痕迹主要是清除渗透过程中操作的一些痕迹,如添加的测试账号,上传的测试文件等。
1.7 事后信息分析
主要是对整个渗透过程进行信息分析与整理,分析脆弱环节,技术防护情况以及管理方面的情况进行一个现状分析以及提出相关建议。
1.8 编写渗透测试报告
根据渗透测试具体情况编写渗透测试报告,渗透测试报告必须简洁明了,说清楚渗透清单(范围),攻击路径,渗透成果,以及详细的漏洞详情(相关描述、漏洞危害等)及可行的修复建议,最后对整改渗透情况进行简单的总结和分析,说清楚目前资产的一个状况是什么样的,应该从哪些方面进行加强和提升。另外根据渗透测试报告可让第三方相对容易复现成功!
二、Web站点渗透测试流程
这个靶场是一个对渗透新手很友好的靶场。而且,该靶场包含了渗透测试的信息收集,漏洞利用和权限提升的全过程,对新手理解渗透测试的流程有很好的帮助。
靶场地址:HackMyVM
靶场基本情况:
KALI靶机:192.168.1.3/24
主机:192.168.1.146/24
目标:普通用户flag和管理员flag
① 信息收集阶段:
这里我们看到开启了21端口,22端口和80端口:
我们连接下21端口:
用户名和密码都是ftp,然后查看当前目录文件,可见密钥文件和users.txt文件。
其实用户名是ftp,密码是什么,都可以登录!
③ 权限提升阶段:
接下来,root权限提升:
在这台VM上root的权限提升很容易。这个/etc/shadow文件对任何人可写。因为我们可以通过修改这个文件来获取root的密码。
以下链接介绍了/etc/shadow文件的组成:
Understanding /etc/shadow file format on Linux - nixCraft (cyberciti.biz)
因为我们不需要读/etc/shadow这个文件,我们只需要复写它。
因此,我们把密码修改为root,如下:
1 生成密码root的加密值
openssl passwd # enter new password “root”
2 将root的加密值导入到/etc/shadow的root用户格式中
echo root:qdbEWfKM1ov2g:18844:0:99999:7::: > /etc/shadow
3 切换为root,输入密码root
su -l
完事了,这个难度是easy,其实也不简单。
三、内网渗透测试流程
红队实战,本次实战的靶场是红日安全vulnstack系列的第二个靶场。
主要以真实企业环境为实例搭建一系列靶场,本次红队环境主要Access Token利用、WMI利用、域漏洞利用SMB relay,EWS relay,PTT(PTC),MS14-068,GPP,SPN利用、黄金票据/白银票据/Sid History/MOF等攻防技术。