一. 简介
Metasploit 是一个开源的渗透测试开源软件,也是一个逐步发展成熟的漏洞研究与渗透测试代码开发平台,此外也将成为支持整个渗透测试过程的安全技术集成开发与应用环境,2009年10月,Metasploit项目被一家渗透测试技术领域的知名安全公司Rapid7所收购。Rapid7公司随后与2010年10月推出了Metasploit Express 和Pro商业版本。
优点 : 模块化,灵活框架,界面友好,简单易用,代码安全
二. MSF 数据库操作
msf init && msfconsole初始化数据库并且启动msf
1.启动数据库(PostgreSQL ,端口5432)
2.初始化数据库
3.启动msf
msfconsole -q快速启动(不显示banner)
msfdb init启动并初始化数据库
msfdb reinit重新初始数据库
msfdb delete删除数据库
msfdb start启动数据库
msfdb stop关闭数据库
msfdb status查看数据库状态
msfdb run启动数据库并启动msf
将PostgreSQL设置成开机自启
systemctl enable postgresql
开启开机自启动
systemctl list-units --type=service
查看开启开机自启动的程序列表

三. MSF常用命令
终端命令
| 命令 | 解释 | 
|---|---|
| show exploits | 列出所有渗透攻击模块 | 
| show payloads | 列出所有的攻击载荷 | 
| show auxiliary | 列出所有的辅助模块 | 
| search | 查询所有包含关键字的模块 | 
| info | 展示出制定渗透攻击或模块的相关信息 | 
| info -d | 更详细的信息(会打开网页文件显示) | 
| use | 装载一个模块 | 
| LHOST | 目标主机 | 
| RHOST | 远程主机或目标主机 | 
| set | 设置配置参数 | 
| setg | 设置配置全局参数 | 
| unset | 取消配置参数 | 
| unsetg | 取消配置全局参数 | 
| show options | 列出当前模块中所有的参数配置 | 
| show targets | 列出当前模块支持的平台 | 
| set target num | 指定你所知道的目标的操作系统以及补丁版本类型 | 
| set payload | 指定你想使用的攻击载荷(msf6是有默认的,msf5是需要指定的) | 
| show advanced | 列出所有高级配置选项 | 
| check | 检测目标是否对选定的模块,存在相应的漏洞 | 
| exploit | 执行渗透攻击模块 | 
| exploit -j | 在计划任务下进行渗透攻击(攻击将在后台进行) | 
| exploit -z | 渗透攻击成功后不进行会话交互 | 
| exploit -e <编码方式> | 指定攻击荷载的编码方式 | 
| exploit -h | 列出exploit命令的帮助信息 | 
| sessions -l | 列出可用的交互会话 | 
| sessions -l -v | 列出所有可用的交互会话以及会话详细信息 | 
| sessions -s <脚本> | 在所有活跃的meterpreter会话中运行一个特定的meterpreter脚本 | 
| sessions -K | 杀死所有会话 | 
| sessions -c <命令> | 在所有活跃的metaerprter会话上执行一个命令,如cmd | 
| sessions -u | 将指定的一个会话从win32shell升级到meterpeter shell | 
| sessions -i | 选着一个会话,到当前窗口运行 | 
| db_create <数据库名称> | 创建一个数据库驱动攻击所需要的数据库 | 
| db_nmap | 利用nmap并把所有扫描数据存入到数据库中 | 
| db_autopwn -p -r -e | 对所有发现的开放端口执行db_autopwn,攻击所有系统,并使用一个反弹式shell | 
| db_destroy | 删除当前数据库 | 
| db_nmap | 利用nmap并把所有扫描数据存入到数据库中 | 
| db_destroy user:password@host:port/database | 使用高级选项来删除数据库 | 
show exploits 列出所有渗透攻击模块
 
 show payloads 列出所有攻击载荷模块
 
show auxiliary 列出所有辅助模块
 
 search 17_010 搜索关键字包含17_010 的(这里的17_010是指漏洞的时间)
 
 info 查看当前模块的详细信息
 
info -d 查看当前模块的跟多详情详细
 
 
 use 0 选择一个模块进行加载,这里的0是指序号,也可以用名称
 
 show options 和 options 效果一样 列出当前模块的参数详细信息
 
 
 set rhosts 172.30.1.133 设置RHOSTS(目标主机的IP地址)

 show targets 列出当前模块支持的平台
 
 check 检测目标对象是否存在对于模块的漏洞
 
 sessions -l 列出所有连接
 
 sessions -l -v 列出所有连接并显示连接利用的信息详细

 show advanced 显示模块的高级参数
 
 sessions -i 1 选择一个连接到前台
 
metapreter常用命令
| 命令 | 解释 | 
|---|---|
| help | 打开帮助 | 
| run <脚本名称> | 运行meterpreter脚本,在scripts/meterpreter目录可查看到的所有脚本名称 | 
| sysinfo | 列出受控主机的系统信息 | 
| ls | 列出目标主机的文件和文件夹信息 | 
| use priv | 加载权限提示控制模块,来扩展meterpreter | 
| ps | 显示所有运行进程及其关联的用户账户 | 
| migrate PID | 迁移到指定的进程ID | 
| use incognito | 加载inconito功能(用来盗窃目标主机的令牌或者冒充用户) | 
| list_tokens -u | 列出目标主机用户组的可用令牌 | 
| impersonate_token DOMAIN_NAME\USERNAME | 假冒目标主机上的可用令牌 | 
| steal_token | 盗窃给定进程的可用令牌并进行令牌假冒 | 
| drop_token | 停止假冒当前的令牌 | 
| getsystem | 提供各种攻击向量来提示到系统用户权限 | 
| shell | 以所有可用令牌来运行一个交互的shell | 
| execut -f com.exe -i | 执行cmd.exe命令交互 | 
| execut -f com.exe -i -t | 以所有可用令牌来执行cmd命令 | 
| execute -f cmd.exe -i -H -t | 以所有可用令牌来执行cmd命令并隐藏该进程 | 
| rev2self | 回到控制目标主机的初始用户账户下 | 
| reg command | 在目标主机注册表中进行交互,创建,删除和查询等操作 | 
| setdesktop number | 切换到另一个用户界面(该功能基于那些用户已经登录) | 
| screenshot | 对目标主机进行截屏 | 
| upload file | 向目标主机上传文件 | 
| download file | 从目标主机上下载文件 | 
| keyscan_dump | 储存目标主机上的键盘记录 | 
| getprivs | 尽可能的获取到目标主机上的更多权限 | 
| uietl enable keyboard/mouse | 接管目标主机的键盘和鼠标 | 
| background | 将当前会话放入后台运行 | 
| use sniffer | 加入嗅探模块 | 
| sniffer_interface | 列出目标主机上的所有开放网络接口 | 
| sniffer_stats interfaceID pcapname | 在目标主机上启动嗅探 | 
| sniffer_start interfaceID packet_buffer | 在目标主机上针对特定范围的数据包缓冲区启动嗅探 | 
| sniffer_stats interfaceID | 获取正在实施嗅探网络接口的统计数据 | 
| sniffer_stop interfaceID | 停止嗅探 | 
| add_user username password -h ip | 在远程目标主机上添加一个用户 | 
| add_group_user “Domain Adimins”username -h ip | 将用户添加到目标主机的域管理员组中 | 
| clearev | 清除目标主机上的日志记录 | 
| timestomp | 修改文件属性,例如修改文件的创建时间(反取证调差) | 
| reboot | 重启目标主机 | 
sysinfo 列出当前被控制的主机的系统信息
 
 ls 列出目标主机文件和文件夹
 
 ps 显示所有运行进程及其关联的用户账户
 
 use incognito 加载inconito功能(用来盗窃目标主机的令牌或者冒充用户)
 
 screenshot 截取目标主机的屏幕
 
 shell 获取一个交互shell
 
四. MSF 常用模块
- Exploits (渗透模块): 这是一段程序,运行时会利用目标的安全漏洞进行攻击
- Payloads (攻击荷载模块):在成功对目标完成一次渗透之后,这段程序开始在目标计算机上运行,它能帮助我们在目标系统上获取需要的访问和权限,创建后面和维护访问等。
- Auxiliary (辅助模块):包含了一系列的辅助支持模块,包括扫描,fuzz(模块模糊)测试,漏洞发掘,检测模块,网络协议欺骗等模块。辅助是使Metasploit 更加灵活。
- Encoder (编码器模块):编码器模块通常用来对于攻击模块进行代码混淆,来逃过目标安全保护机制的检测。
- Meterpreter (内存攻击载荷):是一种使用内存技术的攻击载荷,可以注入到程序之中,提供各种可以在目标上执行的功能,如开启摄像头,停用键盘等。
- Post (后渗透模块):前提是已经拿到了目标系统的基本访问权限,可以使用post模块对系统进行进一步的渗透
- nop 模块 :在汇编语音种,nop是指无操作指令,nop在编写exploit或shellcode时有时是有用的。添加nop可以显著帮助修改payload特征,从而绕过安全检测。