说在前面
博客里所有渗透测试有关文章都是博主参考各种书籍(《渗透测试实践指南:必知必会的工具与方法》、《Metasploit渗透测试与开发实践指南》、《Kali linux 2网络渗透测试实践指南》)并结合博主实践总结来进行书写的。渗透测试所有相关文章都是在kali linux上进行实践的。
简介
基本概念
- 渗透测试:渗透测试是一种定位计算机系统并可对其成功实施漏洞攻击的方法,是合法且得到授权的行为,其目的是为了使这些受测系统更加安全。
- 测试过程包括漏洞探测和提供概念证明(Proof of Concept,POC)攻击,以证明系统漏洞确实存在。
- 渗透测试又被称为:
- Pen Testing
- PT
- 黑客活动(Hacking)
- 道德黑客(Ethical Hacking)
- 白帽黑客(White Hat Hacking)
- 威慑安全(Offensive security)
- 红队(Red Teaming)
渗透测试和漏洞评估
- 渗透测试(Penetration Testing):通过执行漏洞利用和概念证明(POC)攻击来证实系统确实存在安全隐患
- 漏洞评估(Vulnerability Assessment):检查系统和服务是否存在潜在的安全问题。
渗透测试能够模拟黑客行为并提供攻击有效载荷(payload),它比漏洞评估更进了一步。
白盒渗透测试
- 白盒渗透测试也称显性测试,这种测试非常全面彻底,其目标是检查目标系统或者网络的每个角落和裂缝,同时不需要关注隐身性,
- 这类测试的缺点是不能准确模拟大部分现代熟练攻击者的网络入侵行为,也不能为组织提供测试其故障响应或早期预警系统的机会。
- 测试者不尝试隐身攻击,他所考虑的是全面性。
黑盒渗透测试
- 黑盒渗透测试也称隐性测试。这种测试更加逼真地模拟训练有素的攻击者试图获得目标系统和网络的方式。这种测试牺牲全面性和发现多个漏洞的能力,来换取隐身性和准确的描述。黑盒测试通常只需要测试者定位和攻击一个漏洞。
- 这类测试的优点是更接近于真实的攻击类型。现在没有多少攻击者会扫描目标的全部65536个端口,这样做会被防火墙或入侵检测者发现。熟练的恶意黑客更加谨慎,他们可能只扫描一个端口,或者请求一个服务,找到入侵和占有目标的途径。
- 黑盒测试还有一个优点是公司可以测试它的事故响应规程,确定防御措施是否能够检测和阻止攻击。
工具介绍
APT
APT(Advanced Package Tool)是一个打包管理系统。APT运行你使用命令行的方式,快速便捷地安装、更新、删除软件。除了简单以外,APT最大的优势是可以自动为你解析软件之间的依赖关系。也就是说,如果你安装的软件包还需要其他软件,APT会自动为你定位并安装这个软件。这种自动解析软件依赖性的方法是对过去“依赖地狱”(Dependency Hell)的重大改进。
如果我们想在Linux上安装工具,只要知道安装的软件包的名字A,在命令行输入:
apt-get upgrade //在软件安装前最好运行此命令,这样可以确保获得安装软件的最新版本
apt-get install A
APT要求在运行安装命令之前知所要安装软件的确切名称。如果不确定软件名称的拼写,可以使用apt-cache search A命令,它将显示任何匹配搜索的软件包或者工具名称。
注:如果你对渗透测试或黑客感兴趣,就必须掌握linux。黑客常用的Linux操作系统一般有Kali linux。同时可以使用虚拟机安装上述系统。
配置网络
查看端口
打开终端,输入以下命令:
ifconfig -a //ifconfig可以理解为“我想要配置一个端口”
这条命令会把计算机上所有可用的接口以列表的形式罗列出来。大多数计算机至少多会有一个eth0网卡和一个lo接口。“eth0”口是计算机上的第一个以太网卡,“lo”接口是计算机的环回口。根据计算机的硬件配置,可能会有其他的接口或接口设备清单,如果你使用VM来运行kali,你的主接口一般就是eth0。
配置IP地址
手动配置
如果我们想给网卡分配一个IP地址192.168.1.23,在命令行中输入:
ifconfig eth0 1 192.168.1.23
通过DHCP分配地址
在命令行执行以下命令:
dhclient
dhclient会试图自动为你的NIC分配IP地址,并配置必要设置,包括DNS和网关信息。如果是在虚拟机中运行操作系统,那么虚拟机将充当DHCP服务器。
关闭/重启Kali
在命令行输入以下命令:
poweroff //关闭
reboot //重启
在完成渗透测试时,关闭或重启攻击机器都是很好的主意,这种好习惯可以避免在离开机器时无意中保持工具的运行,或者不恰当地发送流量。
黑客实验环境的搭建与使用
黑客实验环境就是一个沙箱环境,在这里流量和攻击被隔离,或者不会触及到未授权和未经同意的目标。搭建实验环境至少需要两台计算机:一台模拟攻击机器,一台模拟受攻击机器。还可以有其他配置方法。对黑客环境而言,最至关重要的一点是要保证网络隔离,你必须通过配置其网络环境来确保通信流量不会逃逸或流出本网络之外。
搭建沙箱环境,最简单最有效的方法是将你的网络与互联网断开:
- 如果你使用的是物理机,那么通过调整以太网线缆和交换机来改变路由流量是最好的方法。另外要再三检查无线网卡是否关闭。继续下一步工作之前要经常检查你的网络是否存在潜在的流量泄露。
- 如果你使用的是虚拟机,只需关闭无线网卡并拔出网线,为网卡分配地址,物理机和虚拟机仍可互相通信,并确保没有攻击流量能流出你的物理机器。
博主渗透测试采用的操作系统有3个:
- Kali:此VM作为攻击机器
- Metasploitable:是一个Linux VM,本身以极不安全的方式创建。(下载网址: http://sourceforge.net/projects/metasploitable )
- Windows XP
上述所列的各个系统都部署为一台笔记本上的VM,网络配置为所有机器属于同一子网,可以互相进行通信。
渗透测试步骤
渗透测试的整个过程可以划分为一系列的步骤或阶段,各个步骤放在一起,就形成了一个全面的完成渗透测试的方法论。不同的方法论其步骤不尽相同。可以从众多方法论中选择最适合自己的那一个。为了简单起见,我们用以下四步来进行学习和摸索渗透测试:
1.侦察
侦察:负责收集目标的信息
2. 扫描
- 端口扫描:拥有目标的开放端口和可能已开启服务的列表
- 漏洞扫描:用于定位和识别在目标计算机上运行的软件和服务所存在的弱点
3. 漏洞利用:
- 本地漏洞利用:要求攻击者对计算机有物理访问权
- 远程漏洞利用:利用网络和系统进行,攻击者无法物理接触目标
以上两种攻击的最终目的通常都是完全管理权限,完全管理权限使黑客可以完全控制目标机器,可以安装新程序、禁用安全工具、复制、编辑或删除机密文档,还可以更改安全设置
4. 维持访问
通常,在漏洞利用阶段提供的攻击有效载荷只能为我们开启系统的临时访问权限。因为大多数有效载荷都是临时的,所以我们需要快速转向漏洞利用后措施,创建一个可以永久控制目标系统的后门进程。这个后门进程可以让我们的管理权限不会因为程序关闭或重新启动而消失。
5. 隐藏
此步用于隐藏痕迹,销毁证据(许多方法论并不包含这一步,白盒测试也不包含这一步)
渗透测试报告
以上步骤执行的先后顺序十分重要,因为每一步的输出或结果就是后续步骤的输入,以正确的顺序运行工具对执行一个全面且真实的渗透测试来说至关重要。
每一个渗透测试最后的工作就是编写报告。但是它并不作为渗透测试方法论中的一个正式步骤。
- 渗透测试报告应该包含测试过程中发现的所有相关信息,还要说明测试实施的细节和测试内容。
- 报告应该尽可能地针对发现的安全问题给出缓解和解决方案。
- 每一个渗透测试都要包含一个总结。总结的目的就是对你的成果进行一个简短的、非技术性的概述
- 一定要注意报告对技术人员和非技术人员都要通俗易懂,千万别在报告中涉及太多技术细节。
注:入门渗透测试时使用漏洞扫描器可以帮助我们举一反三,但是随着技术提升,一名好的渗透测试者应放弃使用漏洞扫描器,因为它会成为你磨练“黑客心态”的阻碍。