[目录]
目录 ..................................................................................................................................................2
0.前言 ............................................................................................................................................3
1.概述 ............................................................................................................................................3
2.界面环境 ....................................................................................................................................3
2.1 接口介绍: ........................................................................................................................4
2.2 环境介绍 ............................................................................................................................4
3.msfconsole 使用说明 .................................................................................................................5
4.模块介绍 ....................................................................................................................................8
4.1 辅助模块 ............................................................................................................................8
4.2 载荷模块 ............................................................................................................................9
4.3 空字段模块 ......................................................................................................................10
4.4 编码模块 ..........................................................................................................................12
5.Exploit 开发..............................................................................................................................12
5.1 确定目标漏洞信息 ..........................................................................................................12
5.2 确定注射器 injector.........................................................................................................12
5.2.1 确定返回地址位置……………………………………………………………….13
5.2.2 确定返回地址值………………………………………………………………….13
5.2.3 确定可用空间…………………………………………………………………….16
5.3 确定 shellcode..................................................................................................................16
5.4 完成 exploit......................................................................................................................16
6.Exploit 集成..............................................................................................................................17
6.1 MSF2.x 集成 ....................................................................................................................17
6.1.1 交互工作方式…………………………………………………………………….13
6.1.2 现有模块分析…………………………………………………………………….13
6.1.3 补充说明………………………………………………………………………….16
6.2 MSF3.0 集成 ....................................................................................................................21
7.鸣谢 ..........................................................................................................................................24
8.参考书目 ..................................................................................................................................24
9.后续 ..........................................................................................................................................24
10.附录 ........................................................................................................................................25
附录 A 环境变量列表.................................................................................................25
附录 B 缓冲区溢出基础.............................................................................................27
[前言]
由于 Metasploit Framework 已经发布了最新的 3.0 版本,而且开发语言进行了变更,以
前的 perl 语言依然是值得探索的,但是由于开发组采用了 Ruby 语言,所以下文中的说
明都以 3.0 版本为主,但是 2.x 版本的相关信息也会附带讲述。
[版本指代问题]
[2.x]指代 Metasploit Framework 2.x 版本。
[3.0]指代 Metasploit Framework 3.0 版本。
[路径问题]
由于个人喜好,MSF 的安装路径各不相同,所以本手册中省略了 Metasploit Framework
完全安装路径,采用了标记:
假设安装目录是 E:\Program Files\Metasploit Framework,此 目录下有 bin,home,lib 等目录,
如果访问的是 home 目录,则本手册只采用..\home 的标记形式。
[一些名词的解释]
Exploit : 能够进行攻击并得到目标系统控制权的恶意代码,经典的 exploit 由 payload 和
injector(注入程序)组成,payload 负责取得系统的控制权,而注入程序负责
将 payload 注射到相应的有漏洞的系统中;
Payload : 其实就是广义上的 shellcode,被翻译成“有效载荷”;
Shellcode : 攻击程序的核心代码,能够取得系统的控制权,一般是取得一个 shell,是一
些汇编代码抽取成的 16 进制码;
Injector : 相对 shellcode 来说,它实现加载和发送 shellcode,提供返回地址等功能;
B-Attacker : Buffer Attack Strings,指“无用字符段+返回地址+shellcode”的组合体,通
常用来填充有漏洞的缓冲区,然后等待获取控制权并执行 shellcode;
Encoder : 编码器,防止 shellcode 因为意外发生中断而附加在 exploit 里的一段代码,主
要功能是实现 shellcode 的保护;
Decoder : 解码器,由于 shellcode 经过 encode 后已经无法被正确解释执行,故需要进行
解码还原成原来的 shellcode,一般集成在 shellcode 里;
[需要的环境]
给出的都是官方地址,你也可以在国内各大下载网站找到它们。
1. Metasploit Framework 下载地址:http://www.metasploit.com/
2. ActivePerl 下载地址:http://www.ActiveState.com
3. Ruby 下载地址:http://www.ruby-lang.org
一、概述(Introduction)
Metasploit Framework (MSF)是 2003 年以开放源代码方式发布、可自由获取的开发
框架,这个环境为渗透测试、shellcode 编写和漏洞研究提供了一个可靠的平台。2.x 框
架主要是由面向对象的 Perl 编程语言编写的,最新版本 3.0 采用了 Ruby 开发。它集成
了各平台上常见的溢出漏洞和流行的 shellcode,并且不断更新,最新版本的 MSF 包含
了 176 种针对当前流行的操作系统和应用软件的 exploit,以及 104 个 shellcode。
而做为安全工具,它在安全测试中起到的作用也不容忽视。合理的利用 MSF,将为
漏洞自动化探测以至及时修补系统漏洞提供有力的保障。同时作为开发,也大大降低了
Exploit 的开发周期和对开发者背景知识的要求。
二、界面环境(Environment)
[一]接口介绍
[2.x]MSF 提供三种交互方式,Console Interface、Command Line Interface 和 Web Interface。
1)msfconsole对应控制台接口,也是最常用的交互窗口,这个之后将详细介绍;
2)msfcli对应command line形式,是自动化测试的接口,从Cygshell打开.此模式将在
[模块介绍]里提及;
3)msfweb自然就是web窗口了,默认是打开http://127.0.0.1:55555/ ,这个界面很直观。
从快捷键启动msfweb后,会出现一个cmd窗口,这时你打开web浏览器(IE),输
入地址http://127.0.0.1:55555/就能看到界面了。
[3.0]MSF提供了Metasploit 3(web窗口),Ruby shell和cmd shell三种交互方式。与[2.x]
相对应,3.0的console模式集成在Metasploit3 web界面中。
注意:无论是在2.x或者3.0版里,打开web界面后都不能关闭启动的cmd窗口,否则web
服务器将停止运行。
[二]环境介绍
Framework有一个强大的数据存储系统,分为两类:全局变量和局部变量。
1)全局变量的设置可以在控制台下输入setg,将得到全局变量的设置情况。
[3.0]
MSF全局变量初始是没有设定的,如果想设定相关的参数,可以采用如下形式:
>> set logging 1
logging => 1
>> setg
Global
======
Name Value
---- -----
logging 1
其他的一些变量可以参考本手册的附页或者[2.x]..\home\framework\docs\Environment.txt
[2.x]
初次安装MSF将自动设置好全局变量,一般不需要特殊的改动,比如:
msf > setg
AlternateExit: 2 //perl解释器错误处理
DebugLevel: 0 //调试信息记录
Encoder: Msf::Encoder::PexFnstenvMov //编码模块定位
Logging: 0 //是否记录命令执行信息
Nop: Msf::Nop::Pex //空字符段模块
RandomNops: 1
值得注意的是DebugLevel,默认的DebugLevel值为0,表示不记录任何调试信息,在3.0
中不用担心调试信息会出现在控制台上。你把这个值可以设置到2,记录一些因为操作
失败而遗留的信息,如果设置到3就会进行详细的记录,一般用不着那么高。
确认了环境变量后,你可以用save命令将配置存储到目录:
[3.0]C:\Documents and Settings\Administrator\.msf3
[2.x] ..\home\.msf
你可以进行相关的修改,MSF每次启动都将读取config里的信息。
2)局部变量是一些临时变量,如 在 设置 exploit时MSF要求输入漏洞宿主的IP地址和端口
号,显然用来存储这些信息的就是临时变量了。局部变量通过命令set来设定。这个将在
之后再次提及。
值得一提的是setg命令处理局部变量的优越性,setg能将局部变量转为全局变量,比
如你要测试几个漏洞,但漏洞的一些参数是相同的,那么你就可以用setg命令代替set
命令,将那些参数存为全局变量,减少操作量。
三、msfconsole使用说明(Use msfconsole)
MSF在命令模式下的使用方法,以下我们就以console平台来进行演示。
[2.x]选择msfconsole即可。
[3.0]首先进入msfweb.cmd,也就是快捷键的[Metasploit 3],初始化完成后会自动跳出页
面:http://127.0.0.1:55555/ ,选择console模式。
1) 为了熟悉命令,你可以在msf下输入help查看相关的命令:
msf > help
Metasploit Framework Main Console Help
======================================
? Show the main console help
评论3