渗透测试(Penetration Testing)

来源:互联网 发布:星光直播软件 编辑:程序博客网 时间:2024/04/29 17:19

Author : ZwelL
来源:www.nosec.org

零、前言
一、简介
二、制定实施方案
三、具体操作过程
四、生成报告
五、测试过程中的风险及规避
参考资料

FAQ集

 


 

零、前言

渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为。 这里我们提供的所有渗透测试方法均为(假设为)合法的评估服务,也就是通常所说的道德黑客行为(Ethical hacking),因此我们这里的所有读者应当都是Ethical Hackers,如果您还不是,那么我希望您到过这里后会成为他们中的一员 ;)
这里,我还想对大家说一些话:渗透测试重在实践,您需要一颗永不言败的心和一个有着活跃思维的大脑。不是说您将这一份文档COPY到您网站上或者保存到本 地电脑您就会了,即使您将它打印出来沾点辣椒酱吃了也不行,您一定要根据文档一步一步练习才行。而且测试重在用脑,千万别拿上一两个本文中提到的工具一阵 乱搞,我敢保证:互联网的安全不为因为这样而更安全。祝您好运。。。

一、简介

  • 什么叫渗透测试?
    渗透测试最简单直接的解释就是:完全站在攻击者角度对目标系统进行的安全性测试过程。
  • 进行渗透测试的目的?
    了解当前系统的安全性、了解攻击者可能利用的途径。它能够让管理人员非常直观的了解当前系统所面临的问题。为什么说叫直观呢?就像Mitnick书里面提 到的那样,安全管理(在这里我们改一下,改成安全评估工作)需要做到面面俱到才算成功,而一位黑客(渗透测试)只要能通过一点进入系统进行破坏,他就算是 很成功的了。
  • 渗透测试是否等同于风险评估?
    不是,你可以暂时理解成渗透测试属于风险评估的一部分。事实上,风险评估远比渗透测试复杂的多,它除渗透测试外还要加上资产识别,风险分析,除此之外,也还包括了人工审查以及后期的优化部分(可选)。
  • 已经进行了安全审查,还需要渗透测试吗?
    如果我对您说:嘿,中国的现有太空理论技术通过计算机演算已经能够证明中国完全有能力实现宇航员太空漫步了,没必要再发射神8了。您能接受吗?
  • 渗透测试是否就是黑盒测试?
    否,很多技术人员对这个问题都存在这个错误的理解。渗透测试不只是要模拟外部黑客的入侵,同时,防止内部人员的有意识(无意识)攻击也是很有必要的。这时,安全测试人员可以被告之包括代码片段来内的有关于系统的一些信息。这时,它就满足灰盒甚至白盒测试。
  • 渗透测试涉及哪些内容?
    技术层面主要包括网络设备,主机,数据库,应用系统。另外可以考虑加入社会工程学(入侵的艺术/THE ART OF INTRUSION)。
  • 渗透测试有哪些不足之处?
    主要是投入高,风险高。而且必须是专业的Ethical Hackers才能相信输出的最终结果。
  • 你说的那么好,为什么渗透测试工作在中国开展的不是很火热呢?
    我只能说:会的,一定会的。渗透测试的关键在于没法证明你的测试结果就是完善的。用户不知道花了钱证明了系统有问题以后,自己的安全等级到了一个什么程 序。但是很显然,用户是相信一个专业且经验丰富的安全团队的,这个在中国问题比较严重。在我接触了一些大型的安全公司进行的一些渗透测试过程来看,测试人 员的水平是对不住开的那些价格的,而且从测试过程到结果报表上来看也是不负责的。我估计在三年以后,这种情况会有所改观,到时一方面安全人员的技术力量有 很大程度的改观,另一方面各企业对渗透测试会有一个比较深刻的理解,也会将其做为一种IT审计的方式加入到开发流程中去。渗透测试的专业化、商业化会越来 越成熟。

二、制定实施方案

实施方案应当由测试方与客户之间进行沟通协商。一开始测试方提供一份简单的问卷调查了解客户对测试的基本接收情况。内容包括但不限于如下:

  • 目标系统介绍、重点保护对象及特性。
  • 是否允许数据破坏?
  • 是否允许阻断业务正常运行?
  • 测试之前是否应当知会相关部门接口人?
  • 接入方式?外网和内网?
  • 测试是发现问题就算成功,还是尽可能的发现多的问题?
  • 渗透过程是否需要考虑社会工程?
  • 。。。

在得到客户反馈后,由测试方书写实施方案初稿并提交给客户,由客户进行审核。在审核完成后,客户应当对测试方进行书面委托授权。这里,两部分文档分别应当包含如下内容:

  • 实施方案部分:
    ...
  • 书面委托授权部分:
    ...

三、具体操作过程

1、信息收集过程

  • 网络信息收集:
    在这一部还不会直接对被测目标进行扫描,应当先从网络上搜索一些相关信息,包括Google Hacking, Whois查询, DNS等信息(如果考虑进行社会工程学的话,这里还可以相应从邮件列表/新闻组中获取目标系统中一些边缘信息如内部员工帐号组成,身份识别方式,邮件联系 地址等)。

    1.使用whois查询目标域名的DNS服务器
    2.nslookup
    >set type=all
    ><domain>
    >server <ns server>
    >set q=all
    >ls -d <domain>

    涉及的工具包括:Google,Demon,webhosting.info,Apollo,Athena,GHDB.XML,netcraft,seologs 除此之外,我想特别提醒一下使用Googlebot/2.1绕过一些文件的获取限制。

    Google hacking 中常用的一些语法描述
    1.搜索指定站点关键字site。你可以搜索具体的站点如site:www.nosec.org。使用site:nosec.org可以搜索该域名下的所有子域名的页面。甚至可以使用site:org.cn来搜索中国政府部门的网站。
    2.搜索在URL网址中的关键字inurl。比如你想搜索带参数的站点,你可以尝试用inurl:asp?id=
    3.搜索在网页标题中的关键字intitle。如果你想搜索一些登陆后台,你可以尝试使用intitle:"admin login"

  • 目标系统信息收集:
    通过上面一步,我们应当可以简单的描绘出目标系统的网络结构,如公司网络所在区域,子公司IP地址分布,VPN接入地址等。这里特别要注意一些比较偏门的 HOST名称地址,如一些backup开头或者temp开关的域名很可能就是一台备份服务器,其安全性很可能做的不够。
    从获取的地址列表中进行系统判断,了解其组织架构及操作系统使用情况。最常用的方法的是目标所有IP网段扫描。
  • 端口/服务信息收集:
    这一部分已经可以开始直接的扫描操作,涉及的工具包括:nmap,thc-amap

    1.我最常使用的参数
    nmap -sS -p1-10000 -n -P0 -oX filename.xml --open -T5 <ip address>

  • 应用信息收集:httprint,SIPSCAN,smap
  • 这里有必要将SNMP拿出来单独说一下,因为目前许多运营商、大型企业内部网络的维护台通过SNMP进行数据传输,大部分情况是使用了默认口令的,撑死改了private口令。这样,攻击者可以通过它收集到很多有效信息。snmp-guiHiliSoft MIB Browsermibsearchnet-snmp都是一些很好的资源。
  • 2、漏洞扫描

    这一步主要针对具体系统目标进行。如通过第一步的信息收集,已经得到了目标系统的IP地址分布及对应的域名,并且我们已经通过一些分析过滤出少许的几个攻击目标,这时,我们就可以针对它们进行有针对性的漏洞扫描。这里有几个方面可以进行:

    针对系统层面的工具有:ISS, Nessus, SSS, Retina, 天镜, 极光

    针对WEB应用层面的工具有:AppScanAcunetix Web Vulnerability ScannerWebInspectNstalker

    针对数据库的工具有:ShadowDatabaseScannerNGSSQuirreL

    针对VOIP方面的工具有:PROTOS c07 sip(在测试中直接用这个工具轰等于找死)以及c07 h225Sivussipsak等。

    事实上,每个渗透测试团队或多或少都会有自己的测试工具包,在漏洞扫描这一块针对具体应用的工具也比较个性化。

    3、漏洞利用

    有时候,通过服务/应用扫描后,我们可以跳过漏洞扫描部分,直接到漏洞利用。因为很多情况下我们根据目标服务/应用的版本就可以到一些安全网站上获取针对该目标系统的漏洞利用代码,如milw0rm,securityfocus,packetstormsecurity等网站,上面都对应有搜索模块。实在没有,我们也可以尝试在GOOGLE上搜索“应用名称 exploit”、“应用名称 vulnerability”等关键字。

    当然,大部分情况下你都可以不这么麻烦,网络中有一些工具可供我们使用,最著名的当属metasploit了,它是一个开源免费的漏洞利用攻击平台。其他的多说无益,您就看它从榜上无名到冲进前五(top 100)这一点来说,也能大概了解到它的威力了。除此之外,如果您(您们公司)有足够的moeny用于购买商用软件的话,CORE IMPACT是相当值得考虑的,虽然说价格很高,但是它却是被业界公认在渗透测试方面的泰山北斗,基本上测试全自动。如果您觉得还是接受不了,那么您可以去购买CANVAS,据说有不少0DAY,不过它跟metasploit一样,是需要手动进行测试的。最后还有一个需要提及一下的Exploitation_Framework,它相当于一个漏洞利用代码管理工具,方便进行不同语言,不同平台的利用代码收集,把它也放在这里是因为它本身也维护了一个exploit库,大家参考着也能使用。

    上面提到的是针对系统进行的,在针对WEB方面,注入工具有NBSI, OWASP SQLiXSQL Power Injector,sqlDumpersqlninjasqlmapSqlbftoolspriamosISR-sqlget***等等。

原创粉丝点击