渗透测试简介:
渗透测试(penetration test)是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析师从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。渗透测试还具有的两个显著特点是:渗透测试是一个渐进的并且逐步深入的过程。渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。
渗透测试目的:
入侵者可能利用的途径:
渗透测试流程:
PTES标准中定义的渗透测试过程环节基本上反映了安全业界的普遍认同,具体包括以下7个阶段。
1.前期交互阶段
在前期交互(Pre-Engagement Interaction)阶段,渗透测试团队与客户组织进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。
该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。
2.情报搜集阶段
在目标范围确定之后,将进入情报搜集(Information Gathering)阶段,渗透测试团队可以利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。
渗透测试者可以使用的情报搜集方法包括公开来源信息查询、Google Hacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。而对目标系统的情报探查能力是渗透测试者一项非常重要的技能,情报搜集是否充分在很大程度上决定了渗透测试的成败,因为如果你遗漏关键的情报信息,你将可能在后面的阶段里一无所获。
3.威胁建模阶段
在搜集到充分的情报信息之后,渗透测试团队的成员们停下敲击键盘,大家聚到一起针对获取的信息进行威胁建模(Threat Modeling)与攻击规划。这是渗透测试过程中非常重要,但很容易被忽视的一个关键点。
通过团队共同的缜密情报分析与攻击思路头脑风暴,可以从大量的信息情报中理清头绪,确定出最可行的攻击通道。
4.漏洞分析阶段
在确定出最可行的攻击通道之后,接下来需要考虑该如何取得目标系统的访问控制权,即漏洞分析(Vulnerability Analysis)阶段。
在该阶段,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特别是安全漏洞扫描结果、服务查点信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。
5.渗透攻击阶段
渗透攻击(Exploitation)是渗透测试过程中最具有魅力的环节。在此环节中,渗透测试团队需要利用他们所找出的目标系统安全漏洞,来真正入侵系统当中,获得访问控制权。
渗透攻击可以利用公开渠道可获取的渗透代码,但一般在实际应用场景中,渗透测试者还需要充分地考虑目标系统特性来定制渗透攻击,并需要挫败目标网络与系统中实施的安全防御措施,才能成功达成渗透目的。在黑盒测试中,渗透测试者还需要考虑对目标系统检测机制的逃逸,从而避免造成目标组织安全响应团队的警觉和发现。
6.后渗透攻击阶段
后渗透攻击(PostExploitation)是整个渗透测试过程中最能够体现渗透测试团队创造力与技术能力的环节。前面的环节可以说都是在按部就班地完成非常普遍的目标,而在这个环节中,需要渗透测试团队根据目标组织的业务经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终达成能够对客户组织造成最重要业务影响的攻击途径。
在不同的渗透测试场景中,这些攻击目标与途径可能是千变万化的,而设置是否准确并且可行,也取决于团队自身的创新意识、知识范畴、实际经验和技术能力。
7.撰写报告阶段
渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一份渗透测试报告(Reporting)。这份报告凝聚了之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。
如何信息收集?
信息收集的方式可以分为两种:主动和被动。
主动的信息收集方式:通过直接访问、扫描网站,这种将流量流经网站的行为。
被动的信息收集方式:利用第三方的服务对目标进行访问了解,比如:Google搜索。
通过搜索引擎,有时会给我们带来意想不到的效果。
下面是一些基本的搜索语法:
查找后台
site:xx.com intext:管理
site:xx.com inurl:login
site:xx.com intitle:后台
查看服务器使用的程序
site:xx.com filetype:asp
site:xx.com filetype:php
site:xx.com filetype:jsp
site:xx.com filetype:aspx
查看上传漏洞
site:xx.com inurl:file
site:xx.com inurl:load
查找注射点
site:xx.com filetype:asp
这只是一些很基本的语法,更多更全的请参考这里。
https://www.exploit-db.com/google-hacking-database/
也可以通过google,采集与目标相关的邮箱信息,这里推荐一个工具。
TheHarvester:
TheHarvester -d 163.com -l 1000 -b google
-d 后跟服务器域名 163.com hotmail.com gmail.com 126.com qq.com
-l 限制显示数目
-b 调用搜索引擎(google,bing,bingapi,pgp,linkedin,google-profiles,people123,jigsaw,all)
使用方法很简单。通过采集到的邮箱,可以为后续的渗透提供重要的辅助条件,也可以查询邮箱是否有密码泄漏,对目标进行暴力破解,甚至是钓鱼攻击等等。
Whois信息收集:
Whois数据库是提供域名的注册人信息,包括联系方式,管理员名字,管理员邮箱等等,其中也包括DNS服务器的信息。
以北京大学为例:
whois信息查询,国外我常使用的一个是whois.sc的网站,国内的话通过站长之家就可以了。也可以通过whois信息中的邮箱,电话,联系人的信息进行反查,看看是否有其他的网站,查询密码是否有泄漏等。
子域名信息收集:
如图是一个子域名收集信息的结果报告,其中包括目标子域名,ip以及ip段分布,dns,mx和SOA信息。
推荐工具:
https://github.com/ring04h/wydomain
此类工具非常多,大家搜索一下就会找到很多。
端口信息收集:
Nmap是一款网络扫描和主机检测的非常有用的工具。 Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用于winodws,linux,mac等操作系统。Nmap是一款非常强大的实用工具,可用于:
检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)
Nmap是一个非常普遍的工具,它有命令行界面和图形用户界面。
除了对目标子域名,whois和端口信息的收集以外,还可以通过浏览目标网站,新闻信息以获取目标最新动态,有时候可以通过这种方式,获取到管理员的帐号信息,或者是目标的后台地址。
通过以上的操作,我们已经获取到了目标的很多信息,对这些信息进行整理。
使用BBscan(下载地址:https://github.com/lijiejie/BBScan)这个工具,可以对我们收集到的子域名信息和IP信息进行一边快速的信息泄漏扫描,从中挑选目标中的短板,对弱点发起漏洞扫描,通过扫描中的漏洞,获取目标权限。
至于后续渗透攻击,则是要根据当前的具体情况,渗透测试人员的技术水平,制定不同的方案。之后会放一些不同场景下的后续渗透测试的文章给大家分享。