Metasploit
Framework 是非常优秀的开源渗透测试框架,像我这样的菜鸟刚刚听说,于是花时间好好研究了一下,整理了一下学习笔记,贴出来和大家一起交流。第一次写文章又不足的地方大家多多指点。
Metasploit 渗透测试框架(MSF3.4)包含3功能模块:msfconsole、msfweb、msfupdate。msfupdate用于软件更新,建议使用前先进行更新,可以更新最新的漏洞库和利用代码。msfconsole 是整个框架中最受欢迎的模块,个人感觉也是功能强大的模块,所有的功能都可以该模块下运行。msfweb 是Metasploit framework的web组件支持多用户,是Metasploit图形化接口。
msfconsole
msfconsole是MSF中最主要最常用的功能组件,使用集成化的使用方法,可以使用MSF中的所有命令和模块,支持很多其它接口方式不支持的功能,启动msfconsole如下图所示:
| | _) __ `__ \ _ \ __| _` | | | __/ _| _| _|\___|\__|\__,_|____/ .__/ =[ metasploit msf> |
msfconsole主要有以下特点:
支持命令完成功能(tab键)
支持外部命令执行(可以执行系统命令)
如下为使用ping命令:
| | _) __ | | | __/ _| _| _|\___|\__|\__,_|____/ .__/ =[ msf>ping ping [*] Pinging [119.75.217.56] Reply …… Ping Packets: Approximate Minimum msf |
使用流程
help命令
和其它基于命令行的程序一样,使用?或者help可以显示MSF所支持的命令,如下为MSF内置的全部命令。
msf Core ============= Command Description ------- ----------- ? 显示帮助菜单 back 从当前环境返回到主路径 banner 显示软件旗标信息 cd 改变当前工作路径 color 切换颜色 connect 连接主机,类似于telnet和nc exit 退出 help 显示帮助菜单,即该页面 info 显示模块的详细信息 irb 进入irb脚本模式 jobs 显示和管理作业 kill 结束一个作业 load 加载framework插件 loadpath 从指定路径加载模块 quit 退出 resource 运行文件中的命令 route Route save 保持数据 search 搜索模块及名称 sessions 显示及转存会话列表 set 设置变量值 setg 设置全局变量值 show 显示给定类型的模块或全部模块 sleep 休眠 unload 卸载 framework 插件 unset 取消变量设置 unsetg 取消全局变量设置 use 根据名字选择一个模块 version 显示版本 Database ========================= Command Description ------- ----------- db_services List db_status Show db_sync Synchronize db_vulns List db_workspace Switch |
show命令
在msfconsole中键入show,系统会显示Metasploit的所有模块,若想显示某一类型的模块可以加入模块名称,最常用的主要有一下三个:show payloads、show exploits、show
auxiliary。
msf>show Auxiliary ========= Name Rank Description ---- ---- ----------- admin/backupexec/dump normal Veritas admin/backupexec/registry normal Veritas |
…… |
show auxiliary显示Metasploit中的可用辅助模块列表,这些辅助模块包括scanner、dos、fuzzer等
show
exploits 显示Metasploit中包含的所有可以利用的攻击类型列表。
show
payloads 显示Metasploit中可以在不同平台中可以在远程主机执行的代码,即shellcode。注:在使用具体的exploit时,只显示该平台支持的payload,例如:在使用ms08-067时,只显示windows平台可以使用的payload。
show options 显示可利用模块exploit的设置、条件、描述等。在具体的模块中使用,后面use命令中会有实例。
show targets 显示可利用模块exploit支持的目标类型(操作系统、软件版本等)。在具体的模块中使用,后面use命令中会有实例。
show
advanced 显示可利用模块exploit高级信息,自定义利用程序时使用。在具体的模块中使用,后面use命令中会有实例。
show
encoders 显示可利用模块exploit的编码方式,在具体的模块中使用,后面set命令中会有实例。
search命令
search 命令是最常用的命令之一,用于查找各种exploit、payload、auxiliary等,命令支持基于正则表达式的模糊查询。如下为查找ms08-067实例:
msf [*] Exploits ======== Name Rank Description ---- ---- -----------nption |
info命令
info用于显示特殊模块的详细信息,显示内容包括该模块的选项、目标及其它信息。以下是使用info命令显示ms08-067实例:
msf > Name: Microsoft Version: Platform: Privileged: License: Rank: Provided hdm Brett Available targets: Id Name -- ---- 0 Automatic 1 Windows ……… 60 Windows Basic Name Current ---- --------------- -------- ----------- RHOST yes The RPORT 445 yes Set SMBPIPE BROWSER yes The Payload Space: Avoid: Description: This code …… on 2003, along with other platforms, is still http://cve.mitre.org/cgi-bin/cvename.cgi?name=2008-4250 |
use命令
use命令用于使用特殊的模块,如利用程序、shellcode或辅助模块等。以ms08-067为例,模块名称必须包含完整的路径,可以通过search命令搜索,以下还演示了show options、show
targets命令的使用。
msf msf Module Name Current ---- --------------- -------- ----------- RHOST yes The RPORT 445 yes Set SMBPIPE BROWSER yes The Exploit Id Name -- ---- 0 Automatic msf Exploit Id Name -- ---- 0 Automatic ……… 60 Windows |
conect 命令
connect命令可以连接到远程主机,连接方式和nc、telnet相同,可以指定端口,如下为connect命令演示:
msf [*] Microsoft Copyright E:\技术工具\cmd>msf > |
set命令
set命令用于当前使用模块的选项和设置参数。
set
payload xxx/xxx z设置溢出代码
set
encoder xxx/xxx 设置利用程序编码方式
set
target xxx 设置目标类型
set
xxx xxx 设置参数
下面以ms08-067为例:
msf msf Module Name Current ---- --------------- -------- ----------- RHOST yes The RPORT 445 yes Set SMBPIPE BROWSER yes The Exploit Id Name -- ---- 0 Automatic msf RHOST msf payload msf Module Name Current ---- --------------- -------- ----------- RHOST 192.168.10.10 yes The RPORT 445 yes Set SMBPIPE BROWSER yes The Payload Name Current ---- --------------- -------- ----------- EXITFUNC thread yes Exit LPORT 4444 yes The RHOST 192.168.10.10 no The Exploit Id Name -- ---- 0 Automatic msf |
check命令
部分exploit支持check命令,该命令用于检测目标系统是否存在漏洞,而不是进行溢出操作。如下:说明目标系统不存在漏洞
msf [-] |
设置全局变量
Metasploit 支持设置全局变量并可以进行存储,下次登录时直接使用。设置全局变量使用setg命令,unsetg撤销全局变量,save用于保存全局变量。如下所示:
msf LHOST msf RHOSTS msf RHOST msf Saved |
exploit/run命令
设置好各个参数后,可以使用exploit命令执行溢出操作,当使用了自定义auxiliary参数时,需要用run命令执行操作。
msf auxiliary(ms09_001_write) > run |
resource命令
resource命令可以加载资源文件,并按顺序执行文件中的命令。
msf resource> [-] [-] [-] [-] [-] [-] [-] resource> [*] [*] [*] resource> resource> AUTOPWN_HOST |
irb命令
运行irb命令,进入irb脚本模式,可以执行命令创建脚本。
msf [*] >> BlackAngle! |