1、渗透测试基本流程

明确目标

确定范围:测试目标的范围、ip、域名、内外网、测试账户。

确定规则:能渗透到什么程度,所需要的时间、能否修改上传、能否提权、等等。

确定需求:web应用的漏洞、业务逻辑漏洞、人员权限管理漏洞、等等。信息收集、

方式:主动扫描,开放搜索等。

开放搜索:利用搜索引擎获得:后台、未授权页面、敏感url、等等。

基础信息:IP、网段、域名、端口。

应用信息:各端口的应用。例如web应用、邮件应用、等等。

系统信息:操作系统版本

版本信息:所有这些探测到的东西的版本。

服务信息:中间件的各类信息,插件信息。

人员信息:域名注册人员信息,web应用中发帖人的id,管理员姓名等。

防护信息:试着看能否探测到防护设备。漏洞探测

利用上一步中列出的各种系统,应用等使用相应的漏洞。

方法:

(1) 漏扫,awvs,IBM appscan等。

(2) 结合漏洞去exploit-db等位置找利用。

(3) 在网上寻找验证poc。

内容:

系统漏洞:系统没有及时打补丁

WebSever漏洞:WebSever配置问题

Web应用漏洞:Web应用开发问题

其它端口服务漏洞:各种21/8080(st2)/7001/22/3389

通信安全:明文传输,token在cookie中传送等。漏洞验证

将上一步中发现的有可能可以成功利用的全部漏洞都验证一遍。结合实际情况,搭建模拟环境进行试验。成功后再应用于目标中。

自动化验证:结合自动化扫描工具提供的结果

手工验证,根据公开资源进行验证

试验验证:自己搭建模拟环境进行验证

登陆猜解:有时可以尝试猜解一下登陆口的账号密码等信息

业务漏洞验证:如发现业务漏洞,要进行验证

公开资源的利用

exploit-db/wooyun/

google hacking

渗透代码网站

通用、缺省口令

厂商的漏洞警告等等。信息分析

为下一步实施渗透做准备。

精准打击:准备好上一步探测到的漏洞的exp,用来精准打击

绕过防御机制:是否有防火墙等设备,如何绕过

定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标

绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀)

攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等获取所需

实施攻击:根据前几步的结果,进行攻击

获取内部信息:基础设施(网络连接,vpn,路由,拓扑等)

进一步渗透:内网入侵,敏感目标

持续性存在:一般我们对客户做渗透不需要。rookit,后门,添加管理账号,驻扎手法等

清理痕迹:清理相关日志(访问,操作),上传文件等信息整理

整理渗透工具:整理渗透过程中用到的代码,poc,exp等

整理收集信息:整理渗透过程中收集到的一切信息

整理漏洞信息:整理渗透过程中遇到的各种漏洞,各种脆弱位置信息形成报告

按需整理:按照之前第一步跟客户确定好的范围,需求来整理资料,并将资料形成报告

补充介绍:要对漏洞成因,验证过程和带来危害进行分析

修补建议:当然要对所有产生的问题提出合理高效安全的解决办法

2、渗透测试标准

渗透测试执行标准http://www.pentest-standard.org/

1.前期交互阶段

在前期交互(Pre-Engagement Interaction)阶段,渗透测试团队与客户组织进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。

该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。

2.情报收集阶段

在目标范围确定之后,将进入情报搜集(Information Gathering)阶段,渗透测试团队可以利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。

渗透测试者可以使用的情报搜集方法包括公开来源信息查询、Google Hacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。而对目标系统的情报探查能力是渗透测试者一项非常重要的技能,情报搜集是否充分在很大程度上决定了渗透测试的成败,因为如果你遗漏关键的情报信息,你将可能在后面的阶段里一无所获。

3.威胁建模阶段

在搜集到充分的情报信息之后,渗透测试团队的成员聚到一起针对获取的信息进行威胁建模(Threat Modeling)与攻击规划。这是渗透测试过程中非常重要的一个关键点。

通过团队共同的缜密情报分析与攻击思路头脑风暴,可以从大量的信息情报中理清头绪,确定出最可行的攻击通道。

4.漏洞分析阶段

在确定出最可行的攻击通道之后,接下来需要考虑该如何取得目标系统的访问控制权,即漏洞分析(Vulnerability Analysis)阶段。

在该阶段,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特别是安全漏洞扫描结果、服务查点信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。

5.渗透攻击阶段

渗透攻击(Exploitation)是渗透测试过程中最具有魅力的环节。在此环节中,渗透测试团队需要利用他们所找出的目标系统安全漏洞,来真正入侵系统当中,获得访问控制权。

渗透攻击可以利用公开渠道可获取的渗透代码,但一般在实际应用场景中,渗透测试者还需要充分地考虑目标系统特性来定制渗透攻击,并需要挫败目标网络与系统中实施的安全防御措施,才能成功达成渗透目的。在黑盒测试中,渗透测试者还需要考虑对目标系统检测机制的逃避,从而避免造成目标组织安全响应团队的警觉和发现

6.后渗透攻击阶段

后渗透攻击(Post Exploitation)是整个渗透测试过程中最能够体现渗透测试团队创造力与技术能力的环节。前面的环节可以说都是在按部就班地完成非常普遍的目标,而在这个环节中,需要渗透测试团队根据目标组织的业务经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终达成能够对客户组织造成最重要业务影响的攻击途径。

在不同的渗透测试场景中,这些攻击目标与途径可能是千变万化的,而设置是否准确并且可行,也取决于团队自身的创新意识、知识范畴、实际经验和技术能力。

7.报告阶段

渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一份渗透测试报告(Reporting)。这份报告凝聚了之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。

3、渗透测试方法分类

1.根据方式分类:

(1)黑盒测试

即完全不了解测试目标的内部机构和特性,客户不提供目标相关信息。

(2)白盒测试

即完全开放测试目标内部逻辑结构相关信息,可根据目标信息选择测试方案。

(3)灰盒测试

介于白盒和黑盒之间,部分开放测试目标信息相关信息,基于测试目标内部细节有限认知的软件测试方法。

2.根据目标分类

(1)主机操作系统测试

对Windows,Solaris,AIX,Linux,SCO,SGI等操作系统本身进行渗透测试。

(2)数据库系统渗透

对MS-SQL,Oracle,MySQL,informix,Sybase,DB2,access等数据库应用系统进行渗透测试。

(3)应用系统测试

对渗透目标提供的各种应用,如ASP,CGI,JSP,PHP等组成的WWW应用进行渗透测试。

(4)网络设备渗透

各种防火墙,入侵检测系统,路由器,交换机等网络设备进行渗透测试。

3.根据位置分类

(1)内网渗透

模拟客户内部违规操作者的行为,在内网对目标进行渗透测试

(2)外网渗透

模拟对内部状态一无所知的攻击者的行为(包括对网络设备的远程攻击,口令管理安全测试,防火墙规则试探和规避,web及其他开放应用服务的安全测试等),从外网对目标进行渗透测试。

4.针对Web服务体系架构的渗透测试

(1)服务器渗透测试

对服务器自身的安全性(如操作系统、数据库是否存在弱口令等)进行检测。

(2)中间件渗透测试

对Apache. lI、Tomcat. Nginx等Web中间件的漏洞(如配置缺陷、文件解析、反序列化漏洞等)进行检测。

(3)Web应用渗透测试

对CMS、Blog等Web应用程序的漏洞(如SQL注入、XSS、CSRF、文件上传与解析、文件包含、命令执行等)进行检测。

(4)业务逻辑渗透测试

对业务逻辑安全性(如验证逻辑问题、会话管理问题、权限控制问题等)进行检测。