仅用于交流学习!!!
Metasploit渗透测试框架介绍
1、Metasploit介绍
渗透测试平台,能够查找,利用和验证漏洞。
免费的,可下载的框架,这个框架自身带有数百个一直软件漏洞的专业级漏洞攻击工具。
Metasploit设计初衷就是打造一个攻击工具开发平台
官网:https://www.www.metasploit.com
2、版本
Metasploit Framework:开源的免费版本
Metasploit Pro:付费商业版,首次下载免费14天,一年20多万-30多万左右。功能很强,服务额外包括:License授权,Web APP测试,AV免杀,操作界面web/adv cmd,IDS/IPS绕过等等
3、Metasploit框架
1、基础库
metasploit基础库文件位于根目录下的libraries目录中,包括Rex,framework-core和framework-base三部分。
Rex库:是整个框架所以来的最基础的一些组件,比如包装的网络套接字,网络应用协议客户端与服务端实现,日志子系统,渗透攻击支持列子,PostgreSQL以及MySQL数据库支持等。
framework-core库:负责实现所有与各种类型的上层模块及插件的交互接口
framework-base库:扩展了framework-core,提供更加简单的包装例程,为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能即框架集成模块
2、模块
模块组织按照不同的用途分为7种类型模块(Modules)
1、辅助模块(Auxiliary)
辅助渗透:端口扫描,密码爆破,漏洞验证等等
渗透之前得到目标情报信息,发起更有效地攻击行为
比如:各种网站扫描与查点,漏洞扫描,口令爆破,模糊测试,爬虫遍历,数据提取等等
在辅助模块种,有一些无需加载的攻击载荷模块,比如拒绝服务攻击
命名规则:功能/服务/模块名称
例如:scanner/discovery/arp_sweep
辅助模块分为三个大类
1、admin
admin/HTTP模块
admin/MSSQL模块
admin/MySQL模块
admin/Postgres模块
admin/VMware模块
例子:
1、查找关于MySQL的辅助模块
2、选择auxiliary/admin/mysql/mysql_sql,并查看设置参数
3、设置目标主机,用户名和密码
4、执行,run/exploit都可以
其他的就不演示了
2、Scanner
dcerpc
discovery
ftp
http
imap
mssql
mysql
Netbios
pop3
smb
smtp
snmp
ssh
telnet
tftp
vmware
vnc
Scanner例子:
常用的扫描模块及功能
arp扫描
search arp
use auxiliary/scanner/discovery/arp_sweep
端口扫描
search portscan
use auxiliary/scanner/portscan/syn
密码嗅探
search sniffer
支持冲pcap抓包文件中提取密码
功能类似于dsniff
目前只支持pop3 imap fto http_get协议
SNMP扫描
SMB扫描
smb版本扫描 use auxiliary/scanner/smb/smb_version 扫描命令管道,判断smb服务零星(账号,密码) use auxiliary/scanner/smb/pipe_auditor smb共享枚举(账号,密码) use auxiliary/scanner/smb/smb_enumshares smb用户枚举(账号,密码) use auxiliary/scanner/smb/smb_enumusers sid枚举(账号,密码) use auxiliary/scanner/smb/smb_lookupsid
ssh扫描
ssh版本 use auxiliary/scanner/ssh/ssh_version ssh密码爆破 use auxiliary/scanner/ssh/ssh_login set userpass_file /usr/share/metasploit-framework/data/wordlists/root_userpass.txt set VERBOSE false run
ssh公钥登录 use auxiliary/scanner/ssh/ssh_login_pubkey set key_file di_rsa ser username root run
mssql扫描端口
TCP 1433(动态端口),UPD 1434(查询TCP端口号) use auxiliary/scanner/mssql/mssql_ping 爆破mssql密码 use auxiliary/scanner/mssql_login 远程代码执行 use auxiliary/admin/mssql/mssql_exec set cmd net user pass /add
ftp扫描
ftp版本扫描 use auxiliary/scanner/ftp/ftp_version ftp的匿名用户 use auxiliary/scanner/ftp/anonymous ftp爆破密码 use auxiliary/scanner/ftp/ftp_login
vnc扫描
vnc:虚拟网络控制台,是一款远程控制工具,基于unix和linux操作系统的免费开源软件。
vnc密码破解 use auxiliary/scanner/vnc/vnc_login vnc无密码访问 use auxiliary/scanner/vnc/vnc_none_auth
rdp扫描(远程桌面)
rdp远程桌面漏洞 use auxiliary/scanner/rdp/ms12_020_check 检查是不会造成doc攻击
设备后门
use auxiliary/scanner/ssh/juniper_backdoor use auxiliary/scanner/ssh/fortine_backdoor
http弱点扫描
过期证书 use auxiliary/scanner/http/cert 显示目录及文件 use auxiliary/scanner/http/dir_listing use auxiliary/scanner/http/files_dir WEBDAV Unicode编码身份验证绕过 IIS的webDAV功能在解析URI并发送回数据时没有正确的处理Unicode令牌环,远程攻击者可以通过提交恶意HTTP GET请求绕过受口令保护的文件夹认证,或在受口令保护的WEBDAV目录中列出,下载,上传文件 use auxiliary/scanner/http/dir_webdav_unicode_bypass
tomcat管理登录界面
use use auxiliary/scanner/http/tomcat_mgr_login
基于http方法身份验证绕过
use auxiliary/scanner/http/tomcat_auth_login
wordpress密码爆破
use auxiliary/scanner/http/wordpress_login_enum
wmap web应用扫描器
这个工具是专门扫描wordpress的漏扫工具
telnet爆破
use auxiliary/scanner/telnet/telnet_login
端口扫描:
协议 | 描述 | 模块 |
ACK | 通过ack扫描的方式多防火墙上位屏蔽的端口进行探测 | ack防火墙扫描use auxiliary/scanner/portscan/ack |
ftpbounce | 通过ftpbounce攻击的原理对tcp服务进行枚举,一些新的ftp服务器软件能供很好的防御ftpbounce攻击,但是旧的Solaris及FreeBSD系统的ftp服务中,此类的工具方法还是可以被利用的 | ftp端口扫描use auxiliary/scanner/portscan/ftpbounce |
syn | 使用发送tcp syn标志的方式探测开放端口 | use auxiliary/scanner/portscan/syn |
tcp | 通过一次完整的tcp连接判断端口是否开放,这种扫描方式最准确,但是速度慢 | use auxiliary/scanner/portscan/tcp |
xmas | 更隐秘的扫描方式,通过发送fin,osh,和urg标志能够躲避高级tcp标记检测器的过滤 | use auxiliary/scanner/portscan/xmas |
TCP端口扫描:auxiliary/scanner/portscan/tcp
扫描借宿172.16.12.11开放端口
ack防火墙扫描:auxiliary/scanner/portscan/ack
用ACK扫描会分段发送数据包扫描,才能够绕过一些防火墙设备,而不是windows防火墙!!!windows自带防火墙是阻断一切进入连接,所以windows把防火墙关闭,如果打开就会阻断连接,所以windows防火墙开启,ack是扫描不出来的。
ftp端口扫描:auxiliary/scanner/portscan/ftpbounce
syn端口扫描:auxiliary/scanner/portscan/syn
tcp端口扫描时通过syn数据包进行的,用于扫描目标机器端口上是否存在程序监听,普通个人机器某个端口如果程序监听的话,那么它就是系统漏洞,tcp是一个有连接的可靠协议,所以使用三次握手建立连接,三次握手,报文分别是syn,ack syn,ack。进行端口扫描时,首先向对方主机某一个端口发送syn报文,如果对方这个端口有程序在监听(或者说存在漏洞),则恢复syn ack报文,否则恢复rst报文,通过这个总方式可以判断是否有程序在监听,或者是否存在漏洞。
xmas端口扫描:auxiliary/scanner/portscan/xmas
常见的网络扫描服务
1、telnet服务扫描
上面返回结果,显示172.16.12.11主机开放23端口即telnet服务开放了,通过返回标签x0alogin,可以仅以看到用户名和密码
2、ssh服务扫描
3、server
捕获模块
渗透攻击模块(Exploits):
包含主流的漏洞利用脚本,可以针对某些可能存在的漏洞目标进行漏洞利用
命令规则:操作系统/各种应用协议分类
利用漏洞和传递有效载荷的模块,利用发现安全漏洞或配置弱点对远程目标系统进行攻击,植入和运行攻击载荷,获得目标系统访问控制权
比如:远程漏洞利用,本地漏洞利用,权限提升漏洞利用,客户端漏洞利用,web应用程序漏洞利用等等
后渗透攻击模块(Post):
漏洞利用成功以后获得meterpreter之后,向目标发送一些功能性指令,比如:提权等等
例如:凭证/哈希存储,本地提权,后门安装,敏感数据提取,网络流量隧道(代理),键盘记录,屏幕抓取,摄像头利用等等
攻击载荷模块(payloads):
攻击成功后在目标机器执行代码,比如返回shell代码
在利用期间执行操作的模块,攻击载荷是在渗透成功后在目标系统运行一段植入代码,是渗透攻击者打开的目标系统上的控制会话连接
比如:建立meterpreter会话,反向shell,执行命令,下载和执行程序等等
编码器模块(Encoders):
包含各种编码工具,对payload进行编码加密,绕过入侵检测和过滤系统
用于有效负载和加密模块,比如:base64,xor等等,规避防病毒或NIDS(网络入侵检测系统),EDR(断电检测和响应)等等
空指令模块(Nops):
空操作,提高payload稳定性和维持大小
evasion(躲避模块又称免杀模块):
用来生成免杀payload
用于规避防御模块,比如,防病毒,applocker绕过,软件限制策略(SRP)绕过等等
Metasploit路径
1、目录作用
data目录:存放可编辑文件,包含metasploit存储某些漏洞,图像数据,二进制文件
documentation目录:提供框架介绍文档
plugins:存放插件
lib:库文件
script:脚本文件
tools:命令行实用程序
modules:模块文件
Metasploit名词解释
POC:Proof of Conecpt,概念证明,用来证明漏洞存在的一段代码,没有攻击性
EXP:eXploit,利用,利用系统漏洞进行攻击动作,方法,方式,具有攻击性
Payload:有效载荷,指的是在Exploit执行成功后,系统进行执行代码或命令
shellcode:一段用于利用漏洞而执行的代码,为16进制的机器码,由于建立正向/反向shell得名
MSF控制台
1、MSF版本及更新
msfconsole -v:查看版本信息
sudo apt-get update:更新包列表
sudo apt-get upgrade:升级所有已安装的包
sudo apt-get dist-upgrade:自动处理依赖包的安装和删除
sudo apt-get autoremove:清理不在需要的包
sudo apt-get clean:清理本地仓库缓存
sudo apt-get install metasploit-framework:安装MSF
2、MSF基本使用
1、MSF启动
初始化msf数据库 ┌──(root㉿laozhang-kali)-[~] └─# msfdb init [+] Starting database [i] The database appears to be already configured, skipping initialization 启动msf ┌──(root㉿laozhang-kali)-[~] └─# msfconsole
msfconsole是metasploit框架用户接口(控制台),通过接口使用metasploit中的所有模块
msfconsole主要管理数据库,管理会话,配置启动模块
查看msf版本信息 ┌──(root㉿laozhang-kali)-[~] └─# msfconsole -v Framework Version: 6.4.9-dev 启动时,不显示banner信息 ┌──(root㉿laozhang-kali)-[~] └─# msfconsole -q msf6 >
查看帮助信息
当打开msfconsole后,可以看到标记了Metasploit所有的利用模块,payload,post模块等等
2、控制台命令
msf6 > banner 显示提示信息
msf6 > color 模块是否显示颜色
msf6 > show 显示功能模块
msf6 > search 搜索命令
msf6 > help search 使用帮助
msf6 > use 通过名称,条款或者索引使用模块
msf6 > info 查看模块信息
msf6 > edit [file/to/edit] 编辑脚本文件
msf6 > back 返回上一级
3、常用命令
show exploits:查看所有可用的渗透攻击程序代码
show auxiliary:查看所有可用的辅助攻击工具
show options/advanced:查看该模块可用选项
show payloads:查看模块使用的攻击载荷
show targets:查看模块使用的攻击目标类型
search xxx:根据关键字搜索xxx模块
info:查看某个模块详细信息
use xxx:使用xxx渗透模块
back:返回上一级
set/unset:设置/禁用模块某个参数
setg/unsetg:设置/禁用适用于所有模块的全局参数
exit:退出
reload:重载
save:保存
基本命令:
?:帮助菜单
search:搜索
use:使用
back:返回上一级
banner:显示一个msf的banner信息
color:颜色转换
connect:连接一个主机
exit:退出msf
info:显示详细信息
jobs:显示和管理进程
kill:杀死一个进程
quit:退出msf
load:加载一个插件
version:显示msf和控制台版本
session:查看会话,即已经建立的连接
run/exploit:相同作用,都用于执行
4、SQL相关
db_status:查看数据库状态
db_rebuild_cache:将所有模块信息缓存到数据库里面,通过数据库去检索
db_nmap:扫描主机信息,调用nmap模块
db_disconnect:断开连接
db_connect:连接指定数据库
db_import:导入
db_export:导出
db_remove:移除
db_save:保存
5、Exploit模块命令
RHOST:目标主机IP
RPORT:目标端口
Payload:有效载荷,成功会返回shell
LHOST:攻击者IP
LPORT:攻击者端口
3、MSF数据库与扫描
1、查看数据库连接
2、Workspace工作平台
1、workspace
可以查看目前工作组,扫描的结果,历史文件等等
2、查看当前工作平台
目前只有一个default的工作平台,同时也是默认工作平台
3、创建和删除一个工作平台
创建gazi工作平台,现在默认工作平台是gazi
删除gazi工作平台,默认平台变为default
重命名工作平台gazi为gazitougou
5、与数据库有关的操作
1、历史文件导入
如果之前利用扫描工具进行了扫描,可以使用db_import查看扫描结果
2、在msf中直接使用db_nmap命令调用nmap
3、扫描记录显示
在模块中使用-R可以将索引到的记录添加为目标
4、services,查看服务信息
5、CSV导出
6、Creds
用于管理数据库中目标发现和使用的凭据