Metasploit - 信息收集
我们需要对一台机器进行渗透测试,,对它进行渗透测试就需要对它进行信息收集,而信息收集的一个关键点就是端口的收集,我们常说的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。
IP地址大家都知道,是计算机在互联网上面的唯一标识。那么端口到底是什么意思,你可以理解为是软件的一个标识,或服务的一个标识。这里我给大家简单举个例子:就比如说我们两个人聊QQ,那聊QQ是怎么办,其实是从我机器的IP发送到你机器的IP,但是这个时候电脑又有疑问了,我发送到你的机器上给谁呢,是不是它要给QQ啊,如果QQ这时候它指定了一个端口1234,这时候通过端口1234就找到了QQ这个程序,然后你就收到我发的信息了。当然在实际情况中要比这复杂的多。
那我们要如何发现目标的机器上面打开了那些程序,或者是启动了那些服务呢,我们可以使用nmap,而nmap也以及集成到了msf里面叫做db_nmap,db_nmap和nmap使用方法是完全一样的,但是在msf中使用db_nmap有一点好处,就是它在扫描之后会保存在PostgreSQL数据库里面。
nmap相关参数:
-sL:简单列表扫描
-sn:扫描主机,但是不进行端口扫描
-sS:TCP SYN扫描【半开放扫描,扫描速度高且隐蔽性好】
-p |-F:扫描端口列表与扫描次序,常用的扫描方式【-p指定端口|-F执行快速扫描】
-sV:服务,版本扫描
-O:启用操作系统探测
-PU:扫描开放的UDP端口:通过对开放的UDP端口进行探测以确定存活的主机
-sT TCP connect()扫描,这种方式会在目标主机的日志中记录大批连接请求和错误信息。
-sS 半开扫描,很少有系统能把它记入系统日志。不过,需要Root权限。
-sF -sN 秘密FIN数据包扫描、Xmas Tree、Null扫描模式
-sP ping扫描,Nmap在扫描端口时,默认都会使用ping扫描,只有主机存活,Nmap才会继续扫描。
-sU UDP扫描,但UDP扫描是不可靠的
-sA 这项高级的扫描方法通常用来穿过防火墙的规则集
-sV 探测端口服务版本
-Pn 扫描之前不需要用ping命令,有些防火墙禁止ping命令。可以使用此选项进行扫描
-sn ping探测扫描主机, 不进行端口扫描 (测试过对方主机把icmp包都丢弃掉,依然能检测到对方开机状态)
-v 显示扫描过程,推荐使用
-h 帮助选项,是最清楚的帮助文档
-p 指定端口,如“1-65535、1433、135、22、80”等
-O 启用远程操作系统检测,存在误报
-A 全面系统检测、启用脚本检测、扫描等
-oN/-oX/-oG 将报告写入文件,分别是正常、XML、grepable 三种格式
-T4 针对TCP端口禁止动态扫描延迟超过10ms
-iL 读取主机列表,例如,“-iL C:ip.txt”
-n:不做DNS解析
db_nmap: nmap扫描
-h:开启帮助文档
-T[0-5]:默认为T3。T4表示最大TCP扫描延迟为10ms.,数值代表扫描速度
-sS: TCP SYN扫描(半开)
-sA: TCP ACK扫描(半开)
-sT: TCP扫描(全开)
-A:打开操作系统探测和版本探测 (扫描所有,扫描比较慢)SYN,ACK,TCP是TCP发出去的三次握手包,TCP发出去第一个握手包叫做SYN,服务器去回响给的我们的另一个握手包是ACK包,这两个叫做半开扫描,SYN是碰一下就收回来了,没有一个完整的TCP链接被打开
这里我开启了一个win7的靶机,来进行一个nmap扫描测试,首先是进入我们的msf,然后输入命令:
看以看到我们目标的机器是开放了135,139,445这些端口,这些扫描信息就是我们靶机上所开启的端口以及端口所对应的服务情况。利用hosts和services还可以查看工作区内所有主机以及所有服务。
上面所说的操做还没有使用到我们的msf,下面我们就来看一下msf如何使用。
Metasploit - auxiliary
1.端口扫描
端口扫描
search:搜索msf中相关模块
#端口扫描 search portscan
#主机发现 search discovery
#使用模块 msf6 >use auxiliary/scanner/portscan/tcp
#运行模块:run/exploit
如何使用msf去扫描目标的机器:
1. 端口扫描 search portscan
我们可以看到,辅助模块/扫描器/端口扫描/扫描类型,把db_nmap的功能显示出来了,接下来就是使用模块,只需要把所需功能复制下来在前面加上use就可以使用辅助模块的功能了:use auxiliary/scanner/portscan/tcp
使用模块之后,我们需要对模块进行设置,如何去查看它的设置呢,有两种方法,一种是输入命令options,就是设置的英语,另一种是输入show options,查看设置的意思:
options选项:
CONCURRENCY:并发端口数
DELAY:连接之间的延迟
JITTER:以毫秒为单位的延迟抖动因子(使之变成+/- delay的最大值)。
PORTS:要扫描的端口
RHOSTS :目标主机
THREADS:并发线程数
TIMEOUT:套接字连接超时,以毫秒为单位
之后我们需要知道要配置那些东西,在options界面,可以看到有Required这么一个选项,这就是必选项的意思,它标明为yes的就表明这一项必须要给它一个值,如果不给他赋值,那么就跑不起来,但是有些选项msf已经帮我们配置了一个默认值,我们在这里就不多费事了,就照所给的默认值来使用,把PORST修改成1000,要不然扫描时间会有点长,然后设置一下目标主机的IP就可以了。设置选项使用set来设置:
设置完成后我们使用命令run或者exploit运行这个模块:等待片刻后扫描完成。
2.主机发现
主机发现就是我们去发现在这样一个网段中有多少台主机是开机的,如果一个机器是关机的,我们就无法对其进行渗透,所以需要我们去发现有那些主机是存活的,是可以进行攻击的。
主机发现
search:搜索msf中相关模块
#arp扫描存活探测:use auxiliary/scanner/discovery/arp_sweep
#查看模块设置:options/show options
#设置模块必选项:set rhosts 192.168.164.132
#运行模块:run/exploit
和端口扫描相同,首先是搜索msf中相关模块,然后使用模块,设置模块必选项,最后运行,下面我们来看一下操作流程:
搜索msf模块后会列出来许多与主机发现相关的模块,我们要使用的是序号为0的第一个模块,为什么要使用这个模块,可不是我想使用这个模块就是用这个模块,而是它后面有描述信息,ARP扫描局域网发现 ,这正是我们所需要的。复制它使用use auxiliary/scanner/discovery/arp_sweep
我们发现这个模块的必选项只有一个那就是RHOSTS,但是这里的设置和前面端口扫描有些区别,端口扫描时我们只针对某一主机,但是在主机发现时候,我们不可能一个主机一个主机的去扫描,我们一般都会扫描一个网段中的主机存活情况,扫描网段也很简单,只需要在IP地址后面加上子网掩码就可以了,例如255.255.255.0,但是我们不这样写,我们一般直接写24。然后我们设置好之后就可以把它跑起来:可以看到164.1,164.2,164.132,164.254这四个是开启的。
Metasploit - exploit
相关介绍
在上面我们体验了辅助模块的功能,我们再来看看msf中的攻击模块。不论谁学,在msf中第一个学习的漏洞就是17-010,就像是不论学python还是c,c++第一个程序都是hello world,而单片机就是点亮led小灯,这都是学习过程中的第一步。
17-010是针对于windows操作系统上面一个默认开启的服务,叫做SMB,这个服务是运行在445端口上的,445端口是运行的一个文件共享服务,这个服务在17年曝出了一个非常严重的漏洞,叫永恒之蓝漏洞,这样的一个漏洞在msf中有相应的模块进行攻击。
攻击17-010
search:搜索msf中相关模块
#arp扫描存活探测:use auxiliary/scanner/discovery/arp_sweep
#使用ms17_010_eternalblue:use exploit/windows/smb/ms17_010_eternalblue
#查看模块设置:options/show options
#设置模块必选项:set rhosts 192.168.164.132
#运行模块:run/exploit
1.search
首先是搜索msf中相关模块,具体到这里就是search ms17-010
这里我们可以搜索到5个模块,分别是两个辅助和三个攻击,两个辅助中第一个是SMB远程Windows命令执行我们暂时用不到,第二个是SMB远端控制设备检测这个我们一会就要用到,再看三个攻击模块,有三种攻击方式,我们只看eternalblue(永恒之蓝)就可以了。
2.use
然后就是使用模块了,其实和前面的操作都是一样的。这次使用分为两步,第一步是对目标进行检测查看受否有漏洞use auxiliary/scanner/smb/smb_ms17_010
可以看到端口号就是445,是SMB默认的端口,我们不需要改它,我们需要设置是RHOSTS,然后直接运行:这时候完成以后它会告诉我们,目标的地址好像有这么一个漏洞,并且目标是一个win7,64位系统。
OK,现在我们已经知道目标的机器有这个漏洞了,我们就可以开始对机器进行攻击,我们使用msf中的永恒之蓝的攻击模块:use exploit/windows/smb/ms17_010_eternalblue
3.options&run
现在我们已经成功的使用了ms17_010_eternalblue攻击模块,要想成功运行还需要进行配置,这里我们看到与前两次配置不同,这一次多了许多东西,不仅有模块配置,还有攻击载荷配置和攻击目标。但是msf很人性化啊,已经帮我们配置好了大部分内容,我们只需要指定一下攻击目标的IP地址,设置RHOSTS即可。Payload指的是在目标机器上执行的文件内容。
执行set rhosts 192.168.164.132设置RHOSTS,然后run运行模块:
运行成功以后我们可以看到有一个win会在最下面出现,当然有时候没有出现win也属于正常情况,只要我们的msf6 >变成了meterpreter >就代表我们攻击成功了,已经把目标机器上的永恒之蓝给打穿了。
进入meterpreter有什么用呢,输入help就可以查看我们所能使用的指令,我们就可以利用这些指令来进一步的对目标机器进行操作。