0x00 序言
笔者最近网络安全的学习方向出了点偏差,有基础但是无法继续提升,在过去,一直在往红队的技能方向进行学习,未来想往红队的技能方向去发展。但笔者目前的方向是渗透测试,而不是红队,过于急切的心理从而导致学习内容有些混乱,于是现在总结自身的技术能力及学习方向,并记录以加深印象。
本文出自:【个人小记】如何做好渗透测试? - 极核GetShell (get-shell.com)
0x01 思路纠正
渗透测试人员与攻击者的性质不一样,攻击者只需要找到程序的一个突破口,拿到权限即可,而渗透测试人员或"白帽子"则不一样,渗透测试人员必须要找到系统的所有漏洞,才能保证系统的安全。
------摘自 《Web安全深度剖析》
在 《Web安全深度剖析》中,笔者发现了目前自身学习路线混乱的原因,红队跟传统的渗透测试,其实有很多东西是差不多的,大家都是采取攻击技术来发现安全问题的。但从摘要中可以读出:渗透测试人员应该是发现全面的安全问题且"点到为止",而红队/攻击者的目标是利用安全问题拿到权限后,在对内网/资产进行进一步的挖掘。
举个例子:
- **渗透测试人员:**给你一些资产目标进行渗透,你找到漏洞了,接下来就不要动了,赶紧写进报告吧。你挖到数据,接下来也不要动了,赶紧写进报告吧。
- **红队人员:**红队就是一种更高层次更高级别的渗透测试,它不仅仅针对技术,例如给业务系统挖掘漏洞等。红队关注技术、人、组织、管理、规范等,测试范围变得更为广泛,不顾一切将目标打穿。
再从作业流程上对渗透测试人员与红队渗透人员进行对比分析:渗透测试相对于红队渗透的作业流程来说,渗透测试人员相当于在红队渗透的权限获取阶段结束后就停止了对资产的渗透测试,发现安全问题后进行记录并编写报告。而红队渗透是不顾一切的进行攻击,无论人或物,不顾一切的去打穿目标。
渗透测试流程图
红队渗透流程图
0x02 风险点分析
明确了渗透测试流程后,就开始对目标资产的风险点进行分析,渗透测试人员渗透服务器就可以从下面这些点下手,同时也是我们所需掌握的部分技能图。但往往企业渗透测试项目用不到一些的技能,一些可能用不到的点将在下文分析中标出。
本段只讲述大概的思路,具体渗透思路过程在本文后篇进行整理发布。
资产风险点分析
社会工程学
笔者认为,社工玩的好得懂人心,行为等,得了解一些灰暗面,所以社工往往具有比较坏的性质,而且一般渗透测试的项目用不着社工,故本篇文章不讨论社工玩法。
社会工程学就是对人类心理漏洞进行攻击的手段。它利用的是人类的脆弱点、贪婪心理、好奇心、信任感等,设置心理陷阱,以此来收集所需信息或者实质利益。社会工程学可以放大黑客攻击,使黑客攻击更具威胁性。
C段渗透&旁站
旁站一般指在单个WEB服务器上同时运行多个资产,如果目标资产无法渗透,就可以对这台WEB服务器上的其他资产进行渗透,也许可以找到突破口。但一般企业渗透测试项目无需此操作。
C段一般指的是一个IP段,例如:156.156.1.1/16
或者192.168.1.1/24
,目标资产无法渗透成功,在同种网络类型下(公网/内网),可以尝试从C段渗透,然后横向进行攻击。但一般企业渗透测试项目无需此操作。
服务渗透
从目标服务器开放的服务来进行渗透是最常用的手法,常用服务包括:SSH、微软远程桌面RDP、Mysql、redis、MSSQL、FTP、WEB服务等。一般情况下,其中WEB服务是优先级最高的渗透测试目标。
一些服务类端口可以尝试进行远程连接的爆破,例如:SSH、RDP、Mysql、Redis等,爆破成功就是弱口令/未授权。而Web服务所牵扯的漏洞方面就很多了,例如:SQL注入、任意文件上传、XSS、包含漏洞、代码执行、逻辑漏洞、弱口令、信息泄露等。
0x03 渗透测试流程分析
根据渗透测试的流程图,笔者详细记录一下每个阶段:应该做什么事,如何去做,做到什么程度,一来加深笔者自身印象,二来希望给未来的朋友提供若干帮助。
渗透测试概览流程图
渗透测试详细流程图
明确目标
明确目标就是指渗透测试可以做的一个范围,一般范围在企业渗透测试项目会给范围/目标资产清单,那么企业渗透测试项目一般需要注意一些事项,例如:
- 如果有详细的资产清单,是只可以测试清单内的资产,还是可以额外渗透测试子域名/旁站/该域名(ip)下其他端口资产等
- 如果只给了一个模糊的范围,例如:get-shell.com,是否可以测子域名/旁站/其他端口资产等
- 如果是公网资产渗透,是否允许测内网测试
- 如果是内网资产渗透,是否允许测内网内其他资产
如果是个人渗透,且没有限制的情况下,那么就要做个大全套,和目标有关的全部都要看一遍。不过要注意授权!笔者列举一下大概可以关注什么方面:
- 目标资产有关的所有域名/子域名/所有端口的资产
- 目标资产的真实IP地址
- 历史解析子域名,历史解析IP
- 域名解析的记录:A记录/CNAME记录等
信息收集
信息收集即收集目标相关的信息,要根据实际情况来进行收集必要的信息,以网站为例,从资产的角度出发,梳理思路。这里列举一下一些可能会用到的信息收集工具以及网站:
- 综合扫描信息收集
- 【资产侦查】ARL灯塔资产侦察系统Plus 魔改版
- 【资产侦查】Nemo
- 在线资产测绘:FOFA、鹰图、钟馗之眼等
- 国内企业资产收集:企查查、爱企查
- 子域名收集
- 端口扫描
- 指纹识别
- 查找真实IP
- 子域名查询
- IP反查域名(旁站)
- 域名历史IP解析查询
- 域名查询(Whois)
漏洞探测(自动化)
在这个阶段,就是使用漏洞扫描器 对已有收集的资产 进行大规模的扫描,使用自动化工具和手动分析,识别目标系统中可能存在的漏洞,原理就是:一些使用量高的系统一般会产生一些漏洞被爆出,然后自动化扫描器就会预先写好这些复现漏洞的POC,然后逐个尝试 。这可能包括已知漏洞数据库的查询、配置文件的检查、源代码的审查等。对于**自动化漏洞扫描器
**可以尝试使用:
当以上的综合漏洞扫描器扫描到漏洞的时候,就要根据漏洞信息进行搜索,根据漏洞信息进行尝试利用,这里列举一些手动常用利用思路:
- 在搜索引擎搜索漏洞编号信息,进行尝试利用,推荐使用**
Bing或者谷歌
** - 根据站点的指纹,尝试在漏洞库里查找漏洞信息,然后尝试利用:
除了手工利用,还有一些工具是专门针对某一些系列漏洞而编写出的工具 ,可以在本站的漏洞利用 标签中尝试寻找一下专门的利用工具:漏洞利用 -- 极核GetShell (get-shell.com)
在成功复现漏洞后,一般就可以认定该系统存在漏洞,接下来就是收集相关信息整理报告。
漏洞探测(手动测试)
除了自动化的扫描器,手动测试也是必须要有的一环,**因为不是所有的系统都会在漏洞扫描器里面有POC,一些小众或者私人写的系统就需要自己手动测试。手动测试是十分体现渗透测试人员的含金量的,不要过度依赖自动化扫描器,自动化扫描器只是锦上添花
。**根据流程思路图来看,可以看一些手动测试的点。
需要注意的是,这些手动测试的手法需要慢慢积累练习才可以学会,本文三言两语无法全部写出来,切记:少就是多,慢就是快