Metasploit基础
2003年H.D Moore创建了Metasploit,从那之后Metasploit便快速发展起来,如今被公认为最为流行的渗透测试工具之一。Metasploit是一个完全的Ruby驱动项目,提供了大量的漏洞渗透、攻击载荷(payload)、编码技术以及后渗透模块。
Metasploit提供了以下多版本:
Metasploit Pro版 | 这是Metasploit的一个商业化版本,提供了大量的功能,例如Web应用程序扫描工具、渗透模块、自动化渗透工具,十分适合专业渗透测试工程师和IT安全团队使用。Pro版主要用来实现专业的、高级的、大型渗透测试和企业安全项目 |
---|---|
Metasploit Express版 | 这是一个为初级渗透测试工程师设计的版本。这个版本的Metasploit包含了智能化渗透、密码的自动化暴力破解等功能,十分适合小型企业的IT安全团队使用 |
Metasploit Community版 | 这是Metasploit Express精简后的免费版本。对于小企业和学生来说,这是一个不错的选择 |
Metasploit Framework版 | 这是一个完全在命令行下运行的版本。这个版本的所有任务都在命令行下完成 ,比如说手动渗透、第三方模块导入等。该版本适合开发人员和安全研究人员 |
Metasploit提供了以下几类用户界面:
GUI(图形用户界面) | 在图形化工作模式下,往往轻点一下鼠标就能完成所有的任务。此工作方式提供了友好的操作模式和简单快捷的漏洞管理方式 |
---|---|
控制台界面 | 最为普遍也最为流行的工作方式。此界面提供了统一的工作方式来管理Metasploit的所有功能。此管理方法通常也被认为是最稳定的控制方法之一。此管理方法是最常用的 |
命令行界面 | 命令行界面是功能最为强大的界面,它支持对渗透模块的所有操作(例如,攻击载荷的生成)。然而在采用命令行界面时,记住每一条命令是十分困难的 |
Armitage | ArmITage是Raphael Mudge 编写的一个充满了黑客风格的GUI。ArmITage提供轻松的漏洞管理、内置的Nmap扫描、渗透攻击推荐,并通过用Cortana脚本实现自动化功能 |
有关Metasploit Community版的更多信息,请访问:https://community.rapid7.com/community/Metasploit/blog/2011/12/21/Metasploit-tutorial-an-introduction-to-Metasploit-community
Metasploit基础知识
渗透模块(exploit) | 这是一段程序,运行时会利用目标的安全漏洞进行攻击。 |
---|---|
攻击载荷模块(payload) | 在成功对目标完成一次渗透之后,这段程序开始在目标计算机上运行。它能帮助我们在目标系统上获得需要的访问和行动权限 |
辅助模块(auxiliary) | 包含了一系列的辅助支持模块,包括扫描模块、fuzz测试漏洞发掘模块、网络协议欺骗以及其他一些模块 |
编码器模块(encoder) | 编码器模块通常用来对攻击模块进行代码混淆,来逃过目标安全保护机制的检测。目标安全保护机制包括杀毒软件和防火墙等 |
Meterpreter | Meterpreter是一类使用内存技术的攻击载荷,可以注入到进程里。它提供了各类可以在目标上执行的功能,从而成为了最受欢迎的的攻击载荷 |
Metasploit的基本命令:
命令 | 用途 | 示例 |
---|---|---|
use [Auxiliary/Exploit/Payload/Encoder] | 选择一个指定的模块并启动工作 | msf>use exploit/unix/ftp/vsftpd_234_backdoor |
show [exploits/payloads/encoder/auxiliary/options] | 显示可用的特定功能的模块 | msf> show payloads |
set [options/payload] | 给某个特定对象赋值 | msf>set LHOST 192.168.126.129 |
setg [options/payload] | 给某个对象赋值的同时设定作用域为全局,在模块进行切换的时候,该对象的值不改变 | msf>setg RHOST 192.168.126.129 |
run | 在设置一个辅助模块需要的所有选项之后,启动该辅助模块 | msf>run |
exploit | 启动一个渗透模块 | msf>exploit |
back | 取消当前选择的模块并且退回到上一级命令窗口 | msf>back |
Info | 列出相关模块的信息 | msf>Info |
Search | 搜索符合条件的特定模块 | msf> search hfs |
check | 检查某个特定目标是否易受攻击 | msf>check |
Sessions | 列出当前可用的会话 | msf>Sessions [session number] |
Meterpreter的基本命令:
Meterpreter命令 | 用途 | 示例 |
---|---|---|
sysinfo | 列出被渗透主机的系统信息 | Meterpreter>sysinfo |
ifconfig | 列出被渗透主机的网络接口 | Meterpreter>iifconfig |
arp | 列出目标主机ARP缓存地址的IP地址和MAC地址 | Meterpreter>arp |
background | 将一个处于激活状态的会话发送到后台 | Meterpreter>background |
shell | 获取目标主机的一个cmdshell | Meterpreter>shell |
getuid | 获取当前用户细节 | Meterpreter>getuid |
getsystem | 提升权限,获取系统级权限 | Meterpreter>getsystem |
ps | 列出目标主机上运行的所有进程 | Meterpreter>ps |
若第一次接触Metasploit,可访问:http://www.offensive-security.com/metasploit-unleashed/Msfconsole_Commands获取关于基本命令的更多信息。
在Metasploit使用数据库
命令 | 用途 |
---|---|
db_connect | 用来与默认数据库之外的数据交互 |
db_export | 用来将数据库里保存的数据导出,用来生成测试报告或者用来导入到其他安全工具内 |
db_nmap | 用来使用Nmap软件对目标进行扫描,并将结果保存到Metasploit数据里内 |
db_status | 用来检查是否建立了与数据库的连接 |
db_discocnnect | 用来从指定的数据库断开 |
db_import | 用来向数据内导入其他扫描工具(例如Nessus,Nmap等)的扫描结果 |
db_rebuild_cache | 用来重新建立缓存,主要目的是使用新的配置替代之前缓存文件里错误或者过时的配置 |