渗透测试
27 Jun 2016
Reading time ~1 minute
渗透测试
渗透测试(Penetration Testing
或者 Pen Testing
, PT
)没有一个标准的定义。国外一些安全组织达成共识的通用说法是,渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞,达到一定的控制权限。
渗透测试是一种合法且授权定位计算机系统,并对其成功实施漏洞攻击的方法,其目的是为了使这些受测系统更加安全。
渗透测试是对用户信息安全措施积极评估的过程。通过系统化的操作和分析,积极发现系统和网络中存在的各种缺陷和弱点,如设计缺陷和技术缺陷。
渗透测试与其他评估方法不同。通常的评估方法是根据已知信息资源或其他被评估对象,去发现所有相关的安全问题。渗透测试是根据已知可利用的安全漏洞,去发现是否存在相应的信息资源。相比较而言,通常评估方法对评估结果更具有全面性,而渗透测试更注重安全漏洞的严重性。
渗透测试有黑盒和白盒两种测试方法。黑盒测试是指在对基础设施不知情的情况下进行测试。白盒测试是指在完全了解结构的情况下进行测试。不论测试方法是否相同,渗透测试通常具有两个显著特点:
- 渗透测试是一个渐进的且逐步深入的过程。
- 渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。
信息收集
收集渗透目标的情报是最重要的阶段。如果收集到有用的情报资料的话,可以大大提高对渗透测试的成功性。收集渗透目标的情报一般是对目标系统的分析,扫描探测,服务查点,扫描对方漏洞,查找对方系统IP等,有时候渗透测试者也会用上“社会工程学”。渗透测试者会尽力搜集目标系统的配置与安全防御以及防火墙等等。
枚举服务
枚举是一类程序,它允许用户从一个网络中收集某一类的所有相关信息。
DNS枚举可以收集本地所有DNS服务和相关条目。DNS枚举可以帮助用户收集目标组织的关键信息,如用户名、计算机名和IP地址等。
- DNS枚举工具DNSenum
dnsenum –enum baidu.com
- DNS枚举工具fierce
fierce -dns baidu.com
测试网络范围
测试网络范围内的IP地址或域名也是渗透测试的一个重要部分。通过测试网络范围内的IP地址或域名,确定是否有人入侵自己的网络中并损害系统。
- 域名查询工具DMitry 查询IP或域名WHOIS信息
- 跟踪路由工具Scapy
$ scapy
res,unans=traceroute([“www.baidu.com”],dport=[80,443]) res.graph()
识别活跃的主机
尝试渗透测试之前,必须先识别在这个目标网络内活跃的主机。
- 网络映射器工具Nmap 免费开放的网络扫描和嗅探工具包
nmap -sP 192.168.64.60
查看打开的端口
对一个大范围的网络或活跃的主机进行渗透测试,必须要了解这些主机上所打开的端口号。
- TCP端口扫描工具Nmap
- 图形化TCP端口扫描工具Zenmap
系统指纹识别
系统指纹信息包括目标主机打开的端口、MAC地址、操作系统类型和内核版本等。
- 使用Nmap工具识别系统指纹信息
nmap -O 192.168.64.60
- 指纹识别工具p0f
服务的指纹识别
服务指纹信息包括服务端口、服务名和版本等。
- 使用Nmap工具识别服务指纹信息
nmap -sV 192.168.64.60
- 服务枚举工具Amap
其他信息收集手段
- Recon-NG框架 - 由Python编写的一个开源的Web侦查(信息收集)框架
- 搜索引擎工具Shodan - Shodan可以说是一款”黑暗”谷歌,一直不停的在寻找着所有和互联网连接的服务器、摄像头、打印机和路由器等
使用Maltego收集信息
Maltego是一个开源的漏洞评估工具,它主要用于论证一个网络内单点故障的复杂性和严重性。该工具能够聚集来自内部和外部资源的信息,并且提供一个清晰的漏洞分析界面。
绘制网络结构图
CaseFile工具用来绘制网络结构图。使用该工具能快速添加和连接,并能以图形界面形式灵活的构建网络结构图。
漏洞扫描
漏洞扫描器是一种能够自动在计算机、信息系统、网络及应用软件中寻找和发现安全弱点的程序。它通过网络对目标系统进行探测,向目标系统发生数据,并将反馈数据与自带的漏洞特征库进行匹配,进而列举目标系统上存在的安全漏洞。漏洞扫描是保证系统和网络安全必不可少的手段,面对互联网入侵,如果用户能够根据具体的应用环境,尽可能早的通过网络扫描来发现安全漏洞,并及时采取适当的处理措施进行修补,就可以有效地阻止入侵事件的发生。由于该工作相对枯燥,所以我们可以借助一些便捷的工具来实施,如Nessus和OpenVAS。
Nessus
Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。
OpenVAS
OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全地免费。
漏洞利用
漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透。网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的。顾名思义,利用漏洞,达到攻击的目的。
漏洞利用是获得系统控制权限的重要途径。用户从目标系统中找到容易攻击的漏洞,然后利用该漏洞获取权限,从而实现对目标系统的控制。
Metasploit
Metasploit是一款开源的安全漏洞检测工具。它可以帮助用户识别安全问题,验证漏洞的缓解措施,并对某些软件进行安全性评估,提供真正的安全风险情报。当用户第一次接触Metasploit渗透测试框架软件(MSF)时,可能会被它提供如此多的接口、选项、变量和模块所震撼,而感觉无所适从。Metasploit软件为它的基础功能提供了多个用户接口,包括终端、命令行和图形化界面等。
Armitage
Armitage组件是Metasploit框架中一个完全交互式的图形化用户接口。 Armitage工具包含Metasploit控制台,通过使用其标签特性,用户可以看到多个Metasploit控制台或多个Meterpreter会话。
MSFCONSOLE
MSF终端(MSFCONSOLE)是目前Metasploit框架最为流行的用户接口,而且也是非常灵活的。因为MSF终端是Metasploit框架中最灵活、功能最丰富及支持最好的工具之一。MSFCONSOLE主要用于管理Metasploit数据库,管理会话、配置并启动Metasploit模块。本质上来说,就是为了利用漏洞,MSFCONSOLE将获取用户连接到主机的信息,以至于用户能启动渗透攻击目标系统。
MSFCLI
为了完成Metasploit的攻击任务,需要使用一个接口。MSFCLI刚好实现这个功能。为了学习Metasploit或测试/写一个新的渗透攻击,MSFCLI是一个很好的接口。
MSF命令行和MSF终端为Metasploit框架访问提供了两种截然不同的途径,MSF终端以一种用户友好的模式来提供交互方式,用于访问软件所有的功能特性,而MSFCLI则主要考虑脚本处理和与其他命令行工具的互操作性。
Meterpreter
Meterpreter是Metasploit框架中的一个杀手锏,通常作为利用漏洞后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给用户一个控制通道。当使用Armitage、MSFCLI或MSFCONSOLE获取到目标系统上的一个Meterpreter连接时,用户必须使用Meterpreter传递攻击载荷。MSFCONSOLE用于管理用户的会话,而Meterpreter则是攻击载荷和渗透攻击交互。
Kali Linux
Kali Linux 是基于 Debian 的 Linux发行版,设计用于数字取证和渗透测试。
Kali Linux 预装了许多渗透测试软件,包括nmap (端口扫描器)、Wireshark (数据包分析器)、John the Ripper (密码破解器),以及 Aircrack-ng (一应用于对无线局域网进行渗透测试的软件)
渗透攻击Telnet服务
(1)启动MSFCONSOLE。执行命令如下所示:
msfconsole
(2) 搜索所有有效的 Telnet 模块
search telnet
(3) 使用telnet_version模块进行渗透攻击
use auxiliary/scanner/telnet/telnet_version
(4) 并查看可配置的选项参数
show options
(5) 使用RHOSTS选项设置目标系统
set RHOSTS 192.168.64.60
(6) 启动扫描
exploit
(7) 登录目标主机的Telnet服务
telnet -l msfadmin 192.168.64.60
Web 应用安全
OWASP Top Ten Project
alcat2008
Dreamer, Practitioner, Incomplete Front-ender