Metaspolit介绍
Metasploit是一款开源的安全漏洞检测工具,安全工作人员常用 Metasploit工具来检测系统的安全性。Metasploit Framework (MSF) 在2003年以开放源码方式发布,是可以自由获取的开发框架。它为渗透测试、shellcode 编写和漏洞研究提供了一个可靠平台。
Metaspolit安装
从官方网站http://www.metasploit.cn下载windows版本的安装版,直接安装即可。 温馨提示:请关闭防火墙和杀毒软件。
Metaspolit的使用
Metasploit目前提供了三种用户使用接口:
- Console模式:功能最全面,建议使用;
- GUI模式:用户友好度最高,但功能不是最完整的;
- CLI模式:命令行模式,用于批量处理。
Metaspolit的Console模式介绍
Console模式启动
通常启动较慢,需等待10分钟左右,开始界面如下:
加载完毕后如图所示:
常用指令介绍
A 帮助指令--- ?/help
B 查看所有的漏洞脚本---show exploits
C 查看某个脚本的信息---info exploit/windows/wins/ms04_045_wins
渗透过程演示
如果确定使用什么脚本进行攻击的时候,则用以下指令按步骤进行操作
1 使用某个脚本 use exploit/windows/wins/ms04_045_wins
2 查看脚本的具体操作选项 show options
3 配置参数
set RHOST 192.168.1.200 设置目标
set RPORT 7777 设置端口
set PAYLOAD generic/shell_bind_tcp 设置使用的shellcode
4 exploit 执行攻击
5 当打开了session时表示攻击成功
辅助扫描漏洞
比如NMAP,OPENVAS,SQLMAP和自带的扫描器等,更方便收集系统的情报。通常来说,我们从几个方面来扫描比较合适:
1 网站的目录dir_scanner扫描器可以扫到页面,通过返回的404,403等code判断页面是否存在是否需要权限进入;
2 使用NMAP扫描目标服务器的端口,得到服务器的详细版本信息有利于选择渗透的方法;
3 使用SSH,TELNET,数据库端口扫描,扫描服务是否存在;
4 口令密码的探测,主要是对弱密码的破解;
5 网站的扫描,W3AF,SQLMAP等开源工具扫描出是否存在XSS和SQL注入。
Metasploit攻击方法分类
exploits 总的来说共分为两类溢出(exploit)攻击方法,即主动溢出和被动溢出。主动溢出是针对目标主机的漏洞主动的进行攻击以获得控制权限,被动溢出是针对 目标主机被动的监听然后获得相应的操作。在所有的exploit中,针对windows平台的最多,比其它所有平台的总和还要多。 缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲 区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。 缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用程序中广泛存在。利用缓冲区溢出可民导致程序运行失败、系统死机、重新启动等后,也可以 利用其获得非授权指令,甚至系统特权,进而进行各种非法的操作。
Metasploit的架构
Metasploit Framework并不止具有exploit(溢出)收集功能,它使你专注于创建自己的溢出模块或者二次开发。很少的一部分用汇编和C语言实现,其余均由ruby实现。总体架构如图所示:
TOOLS 集成了各种实用工具,多数为收集的其它软件 PLUGINS 各种插件,多数为收集的其它软件。直接调用其API,但只能在console模式下工作。 MODULES 目前的Metasploit Framework 的各个模块 MSF core 表示Metasploit Framework core 提供基本的API,并且定义了MSF的框架。并将各个子系统集成在一起。组织比较散乱,不建议更改。 MSF Base 提供了一些扩展的、易用的API以供调用,允许更改Rex LIBRARIES Metasploit Framework中所包含的各种库,是类、方法和模块的集合 CLI 表示命令行界面 GUI 图形用户界面 Console 控制台用户界面 Web 网页界面,目前已不再支持 Exploits 定义实现了一些溢出模块,不含payload的话是一个Aux Payload 由一些可动态运行在远程主机上的代码组成 Nops 用以产生缓冲区填充的非操作性指令 Aux 一些辅助模块,用以实现辅助攻击,如端口扫描工具 Encoders 重新进行编码,用以实现反检测功能等
/postgresql/lib/plugins主要是postgresql的调试插件和分析插件。还有一些其它的插件,比如ruby插件等。
/tools 主要是一些辅助工具,如vncviewer、7za等。 /msf3/tools主要是一些转化工具,如memdump、ruby工具等。 MSF core定义了整个软件的架构方式,提供了一些基本的API,主要由汇编和C语言来实现,一般情况下不允许直接调用。共有136个汇编文件,7个.h文 件,681个.C文件。MSF core组织的比较散乱,不建议更改。 汇编部分主要完成的是与相应的操作系统(如windows、linux等)有关的功能,主要是shellcode的实现等。 C语言完成的功能比较多,主要是meterpreter的实现和一些工具性的应用,包括ruby相关、内存相关(如memdump.c,属于 memdump软件包,用于在DOS和Windows 9x 中dump或copy 4GB以内的地址空间)、网络相关(pcaprub.c,属于libpcap软件包的一部分,是ruby中网络的一部分)、反检测相关 (timestomp.c,属于timestomp软件,用于修改文件的时间戳)等。其工具性的应用多是直接来自于其它工具软件。 Meterpreter是MSF core中最重要的一部分,其本身是一个具有多种功能的动态payload,并且可以在运行时动态扩展。它提供了交互式shell的基础。整个运行在内存 当中,但它并不创建新的进程,并且使用了加密的通信方法,能有效避免检测。 MSF base分布在很多文件夹当中,定义了大量的实用API,例如svn API、scan API、encode API、更新API、操作API、数据库API、exploit API、GUI API、java API、meterpreter API、php API、snmp API、模块API、ruby API、网络API等。主要供modules下的相关程序进行调用,开发人员也可直接调用其API。
/msf3/plugins主要包括一些数据库插件、会话插件、线程插件、socket插件等;
Metasploit的二次开发
Metasploit 中的类和方法具有很好的可读性,并且采用了元编程的思想,使得进行二次开发更加方便快捷。简单的说一个程序能够产生另一个程序,就是元编程。ruby、 python等均可方便的采用元编程思想。metasploit中前四个字母正好是meta,猜测其是Metaprogramming的含义。 Metasploit中所有的模块都从Msf::Module中继承,并且所有的模块有一个共享的API库。 在Metasploit中修改的exploit、payload等模块时,直接找到相应的文件修改并保存,重新启动console即可看到自己修改后的模 块的效果。 在metasploit当中增加exploit、auxiliary等模块时,最快捷的方法是仿照现有的模块方式、使用metasploit中提供的协议 (比如使用metasploit中的socket方法,而不使用ruby中的socket方法,meterpreter对socket进行的封装和扩展功 能,使用起来更加方便,增加了代理、ssh等特征)。模块写好后放在相应的目录,重新启动console即可看到自己所增加的模块部分。 下面是一些攻击经常使用的模块的位置。 auxiliary模块位于/msf3/modules/auxiliary/下。 Exploits模块位于/msf3/modules/exploits/下。 Payloads模块位于/msf3/modules/payloads/下。 Nops模块位于/msf3/modules/nops下。 Encoders模块位于/msf3/modules/encoders/下。 另外在core部分也有一些exploit、aux等,其作用是为上述的攻击部分提供基础,被上述模块调用。在windows或是在linux中都使用上 述方法进行二次开发。后面会详细的介绍新增一个exploit的方法和过程。