千锋学习’

渗透测试(pentest)方法论是实施安全评估(即审计)的具体手段。

方法论是在制定,实施信息安全审计方案时,需要遵循的规则,惯例和过程。人们在评估网络,应用,系统或三者组合的安全状态时,不断摸索各种务实的理念和成熟的做法,并总结了一套理论——渗透测试方法论。

渗透测试种类
*黑盒测试

在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。

渗透测试人员应能理解安全弱点,将之分类并按照风险等级(高,中,低)对其排序。通常来说,风险级别取决于相关弱点可能形成危害的大小。老练的渗透测试专家应能够确定可引发安全事故的所有攻击模式。当测试人员完成黑盒测试的所有测试工作之后,他们会把与测试对象安全状况有关的必要信息进行整理,并使用业务的语言描述这些被识别出来的风险,继而将之汇总为书面报告。黑盒测试的市场报价通常会高于白盒测试。

*白盒测试
白盒测试的审计员可以获取被测单位的各种内部资料甚至不公开资料,所以渗透测试人员的视野更开阔。若以白盒测试的方法评估安全漏洞,测试人员可以以最小的工作量达到最高的评估精准度。白盒测试所需要的步骤数目与黑盒测试不相上下。另外,若能将白盒测试与常规的研发声明周期相结合,就可以在入侵者发现甚至利用安全弱点之前,尽可能最早地消除全部安全隐患。这使得白盒测试的时间,成本,以及发现,解决安全弱点的技术门槛都全面低于黑盒测试。       

脆弱性评估与渗透测试
脆弱性评估通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。这种技术上的信息系统评估,不仅揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。内部的脆弱性评估可保证内部系统的安全性,而外部的脆弱性评估则是验证边界防护的有效性。无论进行内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式来严格测试网络资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对举措的有效性。不同类型的脆弱性评估需要的测试流程,测试工具和自动化测试技术也不相同。这可以通过一体化的安全弱点管控平台来实现。现有的安全弱点管理平台带有可自动更新的漏洞数据库,能够测试不同类型的网络设备,而且不会影响配置管理的变更管理的完整性。

脆弱性评估和渗透测试两者最大的区别就是:渗透测试不仅要识别目标的弱点,它还设计在目标系统上进行漏洞利用、权限提升和访问维护。换句话说,脆弱性评估虽然可以充分发现系统里的缺陷,但是不会考虑去衡量这些缺陷对系统造成的危害。另外,相比脆弱性评估,渗透测试更倾向于入侵,会刻意使用各种技术手段利用安全漏洞;所以渗透测试可能对生产环境带来实际的破坏性影响。而脆弱性评估以非入侵的方式,定性、定量得识别已知安全弱点。

安全测试方法论

开放式Web应用程序安全项目(Open Web Application Security Project)

1.测试指南

2.开发人员指南

3.代码审查指南

通用缺陷列表(Common Weakness Enumeration ,CWE)一类漏洞编号

CWE-79:xss漏洞

CWE-89:sql注入

通用漏洞与披露(Common Vulunerabilities and Exposures,CVE)一个漏洞编号

cve.scap.org.cn网站

其他方法论

开源安全测试方法论

信息系统安全评估框架

Web应用安全联合威胁分类

OpenVAS的安装

OpenVAS是开源的网络漏洞扫描器。自从Nessus收费之后,分支出来的项目

//www.openvas.org

Web端管理接口

4.9之后支持中文

新建虚拟机,推荐virtualbox安装

系统:linux

版本:其他linux 64 位

内存:4G

硬盘:9G

CUPS:2

渗透测试流程

渗透测试执行标准(PTES)

7个阶段

1.事前互动

2.情报搜集

3.威胁建模

4.漏洞分析

5.漏洞利用

6.深度利用

7.书面报告

主要特点优势
PTES的主要特征和优势

1.它是非常全面的渗透测试框架,涵盖了渗透测试的技术方面和其他重要方面,如范围蔓延,报告,以及渗透测试人员保护自身的方法。

2.它介绍了多数测试任务的具体方法,可指导您准确测试目标的安全状态。

3.它汇聚了多名日行一“渗”的渗透测试专家的丰富经验。

4.它包含了最常用的以及很罕见的相关技术。

5.它浅显易懂,您可根据测试工作的需要对相应测试步骤进行调试。

通用渗透测试框架

从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。通用渗透测试框架涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。

相关阶段如下:

1.范围界定

2.信息搜集

3.目标识别

4.服务枚举

5.漏洞映射

6.社会工程学

7.漏洞利用

8.权限提升

9.访问维护

10.文档报告

无论是进行黑盒测试还是白盒测试,选择和使用测试步骤都是测试人员的责任。在测试开始前,测试人员需要根据目标系统的实际环境和已掌握的相关目标系统的情况,在指定最佳的测试策略。

范围界定
在开始技术安全评估之前,务必要观察,研究目标环境的被测范围,同时还要了解这个范围牵扯多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来,在范围界定阶段,需要考虑的典型因素如下:

1.测试对象是什么?

2.应当采取何种测试方法?

3.有哪些在测试过程中需要满足的条件?

4.哪些因素可能会限制测试执行的过程?

5.需要多久才能完成测试?

6.此次测试应当达成什么样的任务目标?

信息搜集
在划定了测试范围之后,就需要进入信息搜集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能的获取测试目标的相关信息,他们从互联网上搜集信息的主要渠道有:

论坛|公告板|新闻组|媒体文章|博客|社交网络|其他商业或非商业性的网站

此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌(谷歌语法),雅虎,MSN必应,百度等。收集的信息主要包括DNS服务器,路由关系,whois数据库,电子邮件地址,电话号码,个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。

目标识别

这个阶段的主要任务是识别目标的网络状态,操作系统和网络架构,该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以及帮助测试人员在接下来的工作里枚举目标网络的各种服务。

服务枚举

这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。

漏洞映射

可以根据已经发现的开放端口和服务程序,查找,分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰,透彻,并能够仔细检查如何已知和未知的漏洞。

社会工程学

如果目标网络设置没有直接的入口,欺骗的艺术将起到抛砖引玉的重要作用,对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的人口。例如,诱使用户运行安装后门的恶意程序,就可能为审计人员的测试工作形成突破。社会工程学测试分为多种不同实现形式。伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件劫持用户的银行账户;甚至诱使某人出现在某个地点——这些都属于社会工程学攻击。在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,您需要实现研究当地的法律是否有关社会工程学的相关条款。

漏洞利用

在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。这个流程可以分为三步,涉及攻击前,攻击,攻击后的相关行动。

权限提升
获取目标系统的控制权限是渗透成功的标志。接下来,审计人员就可以根据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用与目标系统的本地漏洞来提升自己的权限。只要他们能够在目标系统上运行提权漏洞利用程序,就可以获得主机的超级用户权限或者系统权限。审计人员还可以以该主机为跳板,进一步攻击局域网络。根据之前的渗透范围的界定,审计人员接下来会开展的攻击可能是受限制的,也可能是不受限制的。然后,他们很有可能以各种方式获得与控制系统有关的更多信息。具体来说,他们可能是用嗅探手段截取网络数据包,破解各种服务的密码,在局域网络中使用网络诈骗手段。所以说,提升权限的最终目的是获取目标系统的最高访问权限。

访问维护

多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。这种情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。这些隧道往往基于特定协议、代理或者点对点方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐藏行踪的具体方法。

文档报告

在渗透测试的最后一个环节里, 审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。在被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。所以从道德角度来看,文档报告的工作十分重要。并为了帮助管理人员和技术人员共同理解、分析当前IT基础架构中的薄弱环节,可能需要给不同的部门撰写不同措辞的书面报告。此外,这些报告还可以用来获取和比渗透测试前后系统目标的完整性。

简化渗透测试流程
1.明确目标

范围|规则|需求

2.信息搜集

基础信息|系统信息|应用信息|人员信息|防护信息

3.漏洞探测 

系统漏洞|Web服务漏洞|Web应用漏洞|其他端口|通信安全

4.漏洞验证

手工验证|工具验证|实验验证

5.漏洞利用

定制EXP|防御绕过|进一步渗透|清理渗透

6.形成报告

整理结果|补充介绍|修复建议

web架构安全分析 

 Web工作机制
网站

*        本地缓存
*        host文件
*        IP / ARP
*        DNS
*        IP
*        网关
*        路由
*        到达对方主机
*        访问80 443
*        3次握手
*        建立连接
*        HTTP数据包

*        HTTP响应

网页,网站
我们可以通过浏览器上网看到的精美页面,一般都是经过浏览器渲染过的。

html页面,其中包含了css等前端技术,多个网页的集合就是网站

Web容器
Web容器,也叫Web服务器,主要提供Web服务,也就是常说的HTTP服务

常见的Web容器有:Apache / IIS / Nginx 等。

静态的网页

静态的网页,都是一些.html文件,是纯文本文件。这些文件中包含html代码。

HTML(超文本标记语言)在浏览器中解释运行。

中间件服务器

以上这种,只能单向地给用户展示信息。随着Web的发展,信息要双向流动,产生了交互的需求,也就是动态网页的概念;所谓动态就是利用flash、Php、asp、Java等技术在网页中嵌入一些可运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。

脚本的使用让Web服务模式有了“双向交流”的能力,Web服务模式也可以象传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表单等,Web架构的适用面大大扩展。

这些脚本可以嵌入在页面中,如JS等。也可以以文件的形式单独存放在Web服务器的目录里,如.asp、. php、jsp文件等。这样功能性的脚本越来越多,形成常用的工具包,单独管理,Web业务开发时,直接使用就可以了,这就是中间件服务器,它实际上是Web服务器处理能力的扩展。

数据库的出现

静态网页与脚本都是事前设计好的,- 般不经常改动,但网站上很多内容需要经常的更新,如新闻、博客文章、互动游戏等,这些变动的数据放在静态的程序中显然不适合,传统的办法是数据与程序分离,采用专业的数据库。Web开发者在Web服务器后边增加了一一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地方,利用SQL数据库语言,从数据中读取最新的数据,生成“完整"页面,最后送给用户。

HTTP协议概述

HTTP(Hypertext Transfer Protocol,超文本传输协议)是浏览器与web服务器之间的通信协议,是传递消息的规范和要求。

概述

        1990年提出,当前版本1.1        

        http是用来将html文档从web服务器传输到web浏览器

        是一个请求与相应的协议。客户端发出请求,服务器端对请求给出回应。

        http使用可靠的TCP连接,默认端口80。

特点

        支持浏览器/服务器模式

        简单快速:浏览器向服务器突出请求时,只需要传送请求方法和请求路径(资源的名字、路            径和方法)。

        灵活:http运行传输任意类型的数据对象

                                .html   纯文本

                                .jpg     图片

                                .mp3   音频

        http协议是无状态的协议。

     (以数据流的方式传递数据)(浏览器不能断点续传)

URL

统一资源定位器,用来告诉Web容器,浏览器所请求资源(文件)的路径

schema://login:password@address:port/path/to/resource/?query_string#fragment

port                   80

login               用户名

password        密码        匿名访问时,默认没有这两个内容

fragment          锚点       实现页面内定位

URL编码

URL中允许出现的字符有限

URL中path开始允许直接出现A-Z,a-z,0-9,半角减号(-),下划线句点(.),波浪号(~)

其他字符均会被百分号编码

#             %23

空格        %20

在进行编程时,会用+代替空格

HTTP报文

web应用的所有通信的消息都要遵守http协议的规范和要求。

http请求的组成部分:请求行、请求头、请求正文三个部分

请求方法

GET

GTE方法是最常用的方法,通常用于请求服务器发送的某个资源

POST

POST方法可以向服务器提交参数以及表单,包括文件流等。

HEAD

与GET方法类似,但在服务器响应中只返回首部。

PUT(危险)

与GET从服务器读取文档相反,PUT方法会向服务器写入文档。

TRACE(危险)

回显浏览器的请求。

OPTIONS

请求Web服务器告知其支持的各种功能。

DELETE(危险)

请求服务器删除请求URL所指定的资源。

主要字段

HOST                                  主要用于指定被请求资源的Internet主机和端口号
User-Agent                          浏览器指纹
Referer                                包含一个URL,代表当前URL的上一个URL
Cookie                                 记录请求者的身份认证信息
Accept-Charset                   用于指定客户端接收的字符集
Content-Type                      用于向接收方指示实体的介质类型(数据类型)
Constant-Length                 用于指明实体正文的长度,以字节方式存储的十进制数字来表示
Last-Modified                      用于指示资源的最后修改时间和日期

Respond响应报文

主要字段

Service                              服务器指纹
Set-Cookie                        向浏览器端设置Cookie
Last-Modified                    服务器通过这个头信息告诉浏览器,资源的最后修改时间
Content-Length                 正文的长度
Refresh                             服务器通过Refresh头告诉浏览器定时刷新浏览器
Location                            重定向目标页面

同源策略

同源策略的条件:

        URL的主机一致

        schema(即协议)一致

        端口号一致

信息收集

DNS信息

子域名查询 

searchdns.netcraft.com查大型网站有优势

域传送漏洞

 通过域传送漏洞可以得到子域名信息,子域名对应的IP地址

DNS2IP

通过DNS解析找到IP地址

ping     非权威应答

nslookup

工具:dnsenum

在解析域名时,会自动检测域传送漏洞

利用站长工具

CDN加速问题

CDN是内容分发网络

本意是进行节点缓存,使网站服务速加快,一般情况下是没办法得到目标网站的真实IP

IP查询

 同IP网站查询:同一个IP上的网站

1.1.1.1

A            B

旁站(同在一个服务器上)

1.1.1*        C段查询

IP2Location

查询IP地址经纬度

https://www.maxmind.com/zh/home

通过GPS查询物理位置

http://www.gpsspg.com/maps.htm

利用搜索引擎收集信息

Google hacking

搜索引擎语法,获取有关网站的信息

site        指定网站

""           包含关键字

inurl       在url中出现的关键字

filetype   指定文件类型

探索网站目录结构
"parent directory" site:testfire.net

搜索容易存在sql注入的页面
site:testfire.net inurl:login

搜索指定的文件类型
filetype pdf

搜索phpinfo()
搜索PHPstudy

钟馗之眼

www.zoomeye.org

支持公网设备指纹检索和Web指纹检索。网站指纹包括应用名,版本,前端框架,后端框架,服务端语言,服务器操作系统,网站容器,内容管理系统和数据等。

探索iis6.0组件

app:"Microsoft IIS httpd" ver:"6.0"

探索开启3389端口的windows主机

port:3389 OS:windows

网络信息收集

收集指纹信息

Web容器信息

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值