这是信息系统安全实验系列的第十篇~
学习渗透测试(penetration)的相关知识,包括渗透测试的方法及其过程。学习Metasploit的基本知识,了解其基本的架构,并且能使用其基本的功能对靶机的已知漏洞进行利用。
Kali Linux以及其他靶机环境
Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。
渗透攻击(Exploit),指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。攻击载荷(Payload),是我们期望目标系统在被渗透攻击之后去执行的代码。Shellcode,是在渗透攻击是作为攻击载荷运行的一组机器指令,通常用汇编语言编写。模块(Module),指Metasploit框架中所使用的一段软件代码组件,可用于发起渗透攻击或执行某些辅助攻击动作。监听器(Listener),是Metasploit中用来等待网络连接的组件。
本次实验利用kali自带的Metasploit,通过对其的二次开发,分别完成对Windows Server 2003 SP0和Ubuntu 8.04的攻击。
本次实验利用的是MS08-067漏洞。攻击者可以利用受害主机默认开放的SMB服务端口445,发送恶意资料到该端口,通过MSRPC接口调用Server服务的一个函数,并破坏程序的栈缓冲区,获得远程代码执行权限,从而完全控制主机。
具体原理如下:MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的,而NetPathCanonicalize函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,即将路径字符串中的/转换为\并去除相对路径,而在NetPathCanonicalize函数中发生了栈缓冲区内存错误,造成可被利用实施远程代码执行。攻击者精心设计的输入路径,可以在函数去除相对路径时,把路径字符串中的内容复制到路径串之前的地址空间中,达到覆盖函数返回地址,执行任意代码的目的。
启动kali终端,输入ifconfig命令,查询攻击机的ip,如下图所示:
图1(查询攻击机ip)
启动Windows Server 2003 SP0终端,输入ipconfig命令,查询靶机的ip,如下图所示:
图2(查询靶机ip)
攻击机和靶机的ip分别是192.168.80.139和192.168.80.140。
启动Metasploit终端,使用search命令,搜索MS08-067漏洞对应的模块,如下图所示:
图3(搜索漏洞对应模块)
由上图可知,渗透攻击模块路径为“exploit/windows/smb/ms08_067_netapi”,其中exploit代表模块类型,windows代表目标平台,smb代表目标服务,ms08_067_netapi代表模块名字。模块的源代码文件在Metasploit的安装路径加上这条路径的目录下存着。
启用攻击渗透模块查看攻击载荷基本信息,如下图所示:
图4(查看攻击载荷基本信息)
选择其中的generic/shell_reverse_tcp,即回连至控制端的后门,如下图所示:
图5(选择攻击载荷)
查看渗透攻击模块可以成功渗透攻击的目标平台,如下图所示:
图6(确认靶机可以被攻击)
由上图可知,Windows Server 2003 SP0是在攻击范围之内的,其id为3。
首先查看所需的配置选项,如下图所示:
图7(查看所需配置选项)
再对各个选项进行配置,把RHOST设置为靶机ip,即192.168.80.140;把LPORT,即后门回连的端口设置为5000;把LHOST设置为攻击机ip,即192.168.80.139;设置target,即目标系统类型为3。如下图所示:
图8(配置渗透攻击的各个选项)
再次查看配置选项,确保没有错误,如下图所示:
图9(确认配置正确)
经确认,配置是正确的。
使用exploit命令发起渗透攻击成功,如下图所示:
图10(渗透攻击成功)
Samba服务中存在的安全漏洞编号为CVE-2010-2063。Samba网络服务程序在处理链式响应数据包时,无法使用一个有效偏移来构造数据包的下一部分。攻击者通过构造这个偏移值来造成程序的内存错误,然后,通过覆盖一个函数指针达到劫持控制流执行shellcode的目的。
启动kali终端,输入ifconfig命令,查询攻击机的ip,如下图所示:
图11(查询攻击机ip)
启动Ubuntu 8.04终端,输入ifconfig命令,查询靶机的ip,如下图所示:
图12(查询靶机ip)
攻击机和靶机的ip分别是192.168.80.139和192.168.80.254。
启动Metasploit终端,使用search命令,搜索samba漏洞对应的模块,如下图所示:
图13(搜索漏洞对应模块)
选择针对usermap_script安全漏洞的渗透攻击模块,该渗透攻击模块路径为“exploit/multi/samba/usermap_script”,模块的源代码文件在Metasploit的安装路径加上这条路径的目录下存着。
启用攻击渗透模块查看攻击载荷基本信息,如下图所示:
图14(查看攻击载荷基本信息)
选择其中的cmd/unix/bind_netcat,即使用netcat工具在渗透攻击成功后执行shell,并通过netcat绑定在一个监听端口上,如下图所示:
图15(选择攻击载荷)
首先查看所需的配置选项,如下图所示:
图16(查看所需配置选项)
再对各个选项进行配置,把RHOST设置为靶机ip,即192.168.80.254;把LPORT,即后门回连的端口设置为5000;把LHOST设置为攻击机ip,即192.168.80.139。如下图所示:
图17(配置渗透攻击的各个选项)
再次查看配置选项,确保没有错误,如下图所示:
图18(确认配置正确)
经确认,配置是正确的。
使用exploit命令发起渗透攻击成功,如下图所示:
图19(渗透攻击成功)
即使目标平台在攻击范围内,metasploit渗透攻击仍然失败?
靶机的ip地址不在虚拟机同一网段内。
① 点击网上邻居图标,单击属性
图20(打开网络连接属性)
② 选择TCP/IP,单击属性
图21(打开TCP/IP属性)
③ 配置ip地址
图22(配置ip地址)
① 修改/etc/network/interfaces文件
图23(修改文件)
② 重启虚拟机
图24(重启虚拟机)