什么是渗透测试
渗透测试没有一个标准的定义, 在安全界普遍的说法是: 渗透测试是一种通过模拟攻击者的技术与方法, 挫败目标系统的安全机制并取得访问控制权限的安全测试方法.
成功的渗透一个系统可以获取系统的完全控制权, 所以渗透技术可谓一招致命.
如何渗透一个系统
既然渗透测试的威力这么强大, 那如何渗透一个系统呢?
首先, 我们需要了解一些渗透测试的基础:
PTES(Penetration Testing Execution Strandard), 即渗透测试标准; PTES将渗透测试划分为七个阶段:
1. 前期交互阶段: 与客户讨论并确定渗透测试的范围和目标
2. 情报搜集阶段: 采取各种手段搜集被攻击者的有用信息.
3. 威胁分析阶段: 通过搜集的情报信息, 标识目标系统可能存在的安全隐患.
4. 漏洞分析阶段: 分析漏洞的可行性以及最可行的攻击方法.
5. 渗透攻击阶段: 对目标进行渗透.
6. 后渗透攻击阶段: 根据目标的不同, 灵活的应用不同技术. 让目标系统发挥更大的价值.
7. 报告阶段: 撰写渗透报告
从上面我们可以看出真正使用渗透测试技术的只占一小部分, 所以一个好的渗透测试工作者, 不仅需要过硬的渗透技术, 而且更重要的是从多方面挖掘出被攻击者的价值信息.
渗透测试的分类:
白盒测试: 熟悉系统的架构和网络环境, 并可以获取内部的访问权.
黑盒测试: 对系统的架构和网络环境一无所知, 只知道被攻击的目标.
其次, 我们需要很多辅助工具. 这里我们使用最强大, 最流行和最具有发展前景的开源测试平台--Metasploit. 更多关于Metasploit介绍, 参见Wiki.
下面我们将使用Metasploit结合PTES来完成我们的Metasploit渗透测试之旅.
Step 1: 前期交互阶段
比如我现在开了一个S安全公司, 现在中国银行请我们公司给它们的系统进行安全测试. 这里仅讨论渗透测试.
银行和公司 前期交互结果:
银行不提供内部信息, S进行黑盒测试.
规定某年某月某日可以进行测试, 其他时间不可以, 并且不可以影响银行的正常业务.
规定测试范围为银行的Web服务主机.
Step2: 情报搜集阶段
S公司开始对银行系统的主机进行情报搜集. 情报搜集的技术有很多种, 包括社交媒体, Google Hacking, 系统踩点.
常用的情报搜集手段:
Whois查询
Netcraft
NSLookuup
Nmap端口扫描
漏洞扫描
社会工程学
搜集结果:
银行员工微博: 连续工作了8个小时, 终于完成Apache Tomcat的升级. --> 由此我们推出银行系统的Web服务器使用Apache Tomcat. 有次我们可以确认该银行Web服务器使用J2EE架构.
Nefcraft.com --> 获取系统运行的状况. 系统类型(CentOS), IP地址 DNS解析等.
Nmap --> 探测系统防御系统, 端口过滤等网络配置.
Step3: 威胁建模阶段
通过前面的搜集工作, 找到以下的安全隐患;
CentOS系统版本比较老, 已存在发现的漏洞
防火墙配置不当.
技术安全人员缺乏某些安全意识.
Step4: 漏洞分析阶段
我们发现目标系统开启了samba服务,并且可以由外部访问. 我们认为通过CentOS进行攻击可以快速并且获取最大的控制权限.
Step5: 渗透攻击阶段
这里就该Metasploit出手了. 打开Metasploit的MSF终端.
Search samba use exploit/linux/samba/lsa_trasnames_heap show payloads set payload linux/x86/shell_bind_tcp set LPORT 8080 set RHOST x.x.x.x exploit
这里假设此系统存在此漏洞, 可以成功渗透目标.
Step6: 后渗透攻击阶段
我们获取了银行的Web系统的控制权. 后渗透阶段就是充分发挥被攻击的有用价值.
我们发现一份银行和其合作伙伴的一份声明, 让你合作伙伴将款打入某个银行卡, 你有胆的话就可以将这个银行卡改成你的了.
再比如发现银行的工资单. 以及某些贪官的存款等等..
这就是一个金山, 就看你能挖掘出多少了, 适可而止
Step7: 报告阶段
当然我是一个公司, 我收取了人家银行的钱为人家工作. 所以咱还是别干任何坏事. 所以我就需要将我们的成功整理成文档, 提供给银行并协助 银行修补这些问题. 一面看了这篇文章的人一时糊涂犯下大错.
本文侧重渗透测试的一个规范化过程, 并不是着重讲Metasploit, 有关Metasploit的使用. 我会抽时间写一篇关于Metasploit的使用教程. 如果你希望在渗透测试方面有所建树, 那你就要付出比别人跟多的努力.