什么是渗透测试?
渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法
这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
渗透测试还具备以下两个显著特点:
- 渗透测试是一个渐进的并且逐步深入的过程
- 渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试
PETS渗透测试执行标准
- Step1、前期交互阶段:在前期交互阶段,在渗透测试团队与客户进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节
- Step2、情报搜集阶段:在目标范围确定之后,将进入情报搜集阶段,渗透测试团队可以利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。
- Step3、威胁建模阶段:在搜集到充足的情报信息之后,渗透测试团队的成员们停下敲击键盘,大家聚到一起针对获取的信息进行威胁建模(Threat Modeling)与攻击规划。这是渗透测试过程中非常重要,但很容易被忽略的一个关键点。
- Step4、漏洞分析阶段:在确定出最可行的攻击通道之后,接下来需要考虑该如何取得目标系统的访问控制权,即漏洞分析(Vulnerability Analysis)
- Step5、渗透攻击阶段:渗透攻击是是渗透测试过程中最有魅力的环节。在此环节中,渗透测试团队需要利用他们所找出的目标系统安全漏洞,来真正入侵系统当中,获得访问权。
- Step6、后渗透攻击阶段:后渗透攻击是整个渗透测试过程中最能体现渗透测试团队创造力与技术能力的环节,前面的环节可以说是按部就班地完成非常普遍的目标,而在这个环节中,需要渗透测试团队根据目标组织的业务经营模式,保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终能够对客户组织造成最重要业务影响的攻击途径。
- Step7、撰写报告阶段:渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一份渗透测试报告。这份情报凝聚了之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。
实际渗透测试中的一般流程
1、明确目标:当拿到一个渗透测试项目时,我们首先应该明确客户要求我们进行渗透测试的范围以及整体项目的时间 2、信息收集:子域名、系统版本、架构、真实IP地址、whios查询、历史漏洞查询、指纹识别等 3、漏洞发现:通过漏扫软件结合手动挖掘常规的web、系统等漏洞 4、漏洞利用:由浅入深、旁敲侧推、尽可能的将漏洞的价值发挥到最大化 5、后渗透:包括内网渗透、权限维持、权限提升,读取用户hash,这里一定要把握好尺度 6、报告文档阶段:根据之前测试获取的漏洞及企业要求去编写最终的渗透测试报告
风险规避
- 不要进行诸如ddos攻击,不破坏数据测试之前对重要数据进行备份
- 任何测试执行前必须和客户进行沟通,以免引来不必要的麻烦
- 可以对原始系统生成镜像环境,然后对镜像环境进行的测试
- 提前明确渗透测试范围
渗透测试与入侵的区别:
渗透测试:在授权的情况下,出于保护系统的目的,更全面地找出务器的安全隐患
入侵:在未授权的情况下不择手段地(甚至是具有破坏性的)拿到系统权限
1 明确目标
确定范围:
- 测试目标的范围(ip,域名,内外网)
确定规则(立体全方位):
- 能渗透的程度
- 测试的时间范围
- 能否修改上传
- 能否提权
确定需求:
- web应用的漏洞(新上线程序)
- 业务逻辑漏洞(针对业务的)
- 人员权限管理漏洞(针对人员、权限、社会工程学测试)
2 信息收集
方式:主动扫描,被动扫描、开放搜索等
开放搜索:利用搜索引擎获得,后台,未授权页面,敏感url等
基础信息:IP,网段,域名,端口
系统信息:操作系统版本
应用信息:各端口的应用,例如web应用,邮件应用等等
版本信息:所有这些探测到的东西的版本
人员信息:域名注册人员信息,web应用中网站发帖人的id,管理员姓名等
防护信息:试着看能否探测到防护设备
3 漏洞发现
利用上一步中列出的各种系统,应用等使用相对应的漏洞扫描器进行漏洞扫描。 方法:
- goby、awvs、nessus,OpenVAS、AppScan等。
- 结合漏洞去exploit-db等位置找利用。
- 在网上寻找验证poc
主要探测内容:
系统漏洞:系统是否及时打补丁
Websever漏洞:Websever配置问题
Web应用漏洞:Web应用开发问题
其它端口服务漏洞:各种21/8080(st2)/7001/22/3389
通信安全:明文传输,token在cookie中传送等
4 漏洞利用
将上一步中发现的有可能可以成功利用的全部漏洞都验证一遍
结合实际情况,搭建模拟环境进行试验,验证成功后再应用于目标中。
自动化验证:
- 结合自动化扫描工具提供的结果
- 手工验证,根据公开资源进行验证
- 试验验证:自己搭建模拟环境进行验证
- 登陆猜解:有时可以尝试猜解一下登陆口的账号密码等信息
- 业务漏洞验证:如发现业务漏洞,要进行验证
公开资源的利用:
- 漏洞银行exploit-db/乌云wooyun/butian补天
- google hacking
- 渗透代码网站
- 通用、缺省口令
- 厂商的漏洞警告等等
5 后渗透
信息分析
为下一步实施渗透做准备:
精准打击:准备好上一步探测到的漏洞的exp,用来精准打击
绕过防御机制:是否有防火墙等设备,如何绕过
定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标
绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀)
攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等
获取所需
实施攻击:根据前几步的结果,进行渗透测试攻击
获取内部信息:基础设施(网络连接,vpn,路由,拓扑等)
进一步渗透:内网入侵,敏感目标
持续性存在:一般我们对客户做渗透不需要。rookit,后门,添加管理账号,驻扎手法等
清理痕迹:清理相关日志(访问,操作),上传文件等
信息整理
整理渗透工具:整理渗透过程中用到的代码,poc,exp等
整理收集信息:整理渗透过程中收集到的一切信息
整理漏洞信息:整理渗透过程中遇到的各种漏洞,各种脆弱位置信息
6 撰写报告
按需整理:按照之前第一步跟客户确定好的范围,需求来整理资料,并将资料形成报告
补充介绍:要对漏洞成因,验证过程和带来危害进行分析
修补建议:当然要对所有产生的问题提出合理高效安全的解决办法