Metasploit
使用框架结构
一、 介绍
1. 体系框架
基础库: metasploit 基础库文件位与源码根目录路径下的 libraries 目录中,包括 Rex, framework-core framework-base 三部分
Rex 是整个框架依赖的最基础的一些组件,如包装的网络套接字。网络应用协议客户端与服务端实现,日志子系统、渗透攻击支持例程、PostgreSQL 以及 MYSQL 数据库支持等
framework-core 库负责实现所有与各种类型的上层模块以及插件的交互接口
framwork-base 库扩展了 framework-core , 提供了更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能以及框架集成模块
模块: 模块组织按照不同的用途分为六个类型的模块: 辅助模块(AUX)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)
插件: 插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件,
接口: 包括 msfconsole 控制终端、msfcli 命令行、msfgui 图形化界面、armitage 图形化界面 、msfapi 远程调用接口
功能程序: metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速的利用框架内部能力完成一些特定任务
2. 目录结构
data :MSF 使用的可编辑文件
documentation: 为框架提供文档
lib : 框架代码库
modules : 实际的 MSF 的模块
plugins : 可以在运行时加载的插件
scripts : Meterpreter 和其它脚本
tools : 各种有用的命令行工具
二、组件
1. 模块
类型 | 描述 |
---|---|
Auxiliary | 扫描、模糊、嗅探、管理功能 |
Encoders | 编码 |
Exploits | 允许利用有效负载传递漏洞的模块 |
NOPs | 在漏洞利用尝试中保持有效负载大小一致 |
Payloads | 代码远程指定并回调攻击者机器以建立连接 |
Plugins | 其他脚本 |
Post | 广泛的模块收集信息 |
2. 目标
3. Payload
有效载荷 | 描述 |
---|---|
generic/custom | 通用监听器,多用途 |
generic/shell_bind_tcp | 通用监听器,多用,普通shell,TCP连接绑定 |
generic/shell_reverse_tcp | 通用监听器,多用,普通shell,反向TCP连接 |
windows/x64/exec | 执行任意命令 (Windows x64) |
windows/x64/loadlibrary | 加载任意 x64 库路径 |
windows/x64/messagebox | 使用可自定义的标题、文本和图标通过 MessageBox 生成对话框 |
windows/x64/shell_reverse_tcp | 普通外壳,单一负载,反向 TCP 连接 |
windows/x64/shell/reverse_tcp | 普通shell,stager + stage,反向TCP连接 |
windows/x64/shell/bind_ipv6_tcp | 普通shell,stager + stage,IPv6 Bind TCP stager |
windows/x64/meterpreter/$ | Meterpreter 有效载荷 + 以上品种 |
windows/x64/powershell/$ | 交互式 PowerShell 会话 + 上述品种 |
windows/x64/vncinject/$ | VNC Server (Reflective Injection) + 以上品种 |
4. 数据库
6. 插件
插件需要安装在 /usr/share/metasploit-framework/plugins
三、命令使用
1. search 命令
四、MSF sessions
1. 会话
2. Meterpreter
五、基本使用
1. 模块命令
六、信息收集
1. 端口扫描
名称 | 功能 |
---|---|
udp_sweep | 快速识别 UDP 上运行的服务 |
arp_sweep | ARP 扫描收集信息 |
syn | SYN-TCP 扫描 |
ftp_version | FTP 版本扫描 |
ftp/anonymous | FTP 匿名登陆 |
ftp_login | FTP 爆破 |
ssh_version | SSH 版本扫描 |
ssh_login | SSH 爆破 |
smb_version | SMB 版本扫描 |
smb_enumshares | SMB 信息收集模块 |
smb_lookupsid | 收集系统用户信息 |
snmp_enum | 根据 SNMP 收集服务器信息 [见下] |
psnuffle | 密码嗅探 [见下] |
使用 auxiliary/sniffer 下的 psnuffle 模块进行密码嗅探
在局域网内进行网络嗅探:
use auxiliary/sniffer/psnuffle
关闭方法:jobs -K
关闭所有定义: SNMP 全称 简单网络管理协议,由一组网络管理的标准组成,包含一个应用层协议、数据库模型和一组资源对象,该协议能够支持网络管理系统,用以检测连接到网络上的设备是否有任何引起管理上关注的情况
可以查到的信息: 服务器硬件信息、当前运行进程
七、后期开发
核心命令
background
:背景当前会话exit
:终止Meterpreter会话guid
: 获取会话GUID (Globally Unique Identifier)help
:显示帮助菜单info
: 显示有关 Post 模块的信息irb
:在当前会话中打开交互式 Ruby shellload
: 加载一个或多个 Meterpreter 扩展migrate
: 允许您将 Meterpreter 迁移到另一个进程run
: 执行一个 Meterpreter 脚本或 Post 模块sessions
:快速切换到另一个会话
文件系统命令
cd
: 会改变目录ls
: 将列出当前目录中的文件(dir 也可以)pwd
: 打印当前工作目录edit
: 将允许您编辑文件cat
: 将文件的内容显示到屏幕上rm
: 将删除指定的文件search
:将搜索文件upload
: 将上传文件或目录download
: 将下载一个文件或目录
联网命令
arp
:显示主机ARP(地址解析协议)缓存ifconfig
:显示目标系统上可用的网络接口netstat
:显示网络连接portfwd
:将本地端口转发到远程服务route
:允许您查看和修改路由表
系统命令
clearev
:清除事件日志execute
: 执行命令getpid
: 显示当前进程标识符getuid
: 显示 Meterpreter 正在运行的用户kill
: 终止进程pkill
: 按名称终止进程ps
:列出正在运行的进程reboot
:重新启动远程计算机shell
:进入系统命令外壳shutdown
:关闭远程计算机sysinfo
: 获取远程系统的信息,例如OS
其他命令(这些将在帮助菜单的不同菜单类别下列出)
idletime
:返回远程用户空闲的秒数keyscan_dump
:转储击键缓冲区keyscan_start
:开始捕获击键keyscan_stop
: 停止捕获击键screenshare
:允许您实时观看远程用户的桌面screenshot
:抓取交互式桌面的屏幕截图record_mic
:从默认麦克风录制音频 X 秒webcam_chat
:开始视频聊天webcam_list
:列出网络摄像头webcam_snap
:从指定的网络摄像头拍摄快照webcam_stream
:播放来自指定网络摄像头的视频流getsystem
:尝试将您的特权提升到本地系统的特权hashdump
: 转储 SAM 数据库的内容
七、实战
攻击流程:
1. 使用永恒之蓝攻击 win7
前提 开启 445 端口
命令:
2. 使用 MSF 扫描 MYSQL 服务空密码
这里主要讲 MSF 的进阶使用
数据库后端命令:
db_connect 连接到现有的数据库
db_disconnect 断开与当前数据库实例的连接
db_export 导出包含数据库内容的文件
db_import 导入扫描结果文件
3. 客户端渗透原理
在无法突破对方网络边界的时候,往往需要使用客户端渗透这种方式对目标发起攻击,比如我们向目标发一个含有后门的程序或者是一个 word 文档、PDF 文件
1. 制作 Windows 恶意软件获取 shell
msfvenom 是 msfpayload msfencode 的2结合体,可以利用 msfvenom 生成木马程序,并在目标机上执行,在本地监听
目标: 使用 msfvenon 生成快播和西瓜影音看片神奇后门木马
流程:
生成后门程序
使用 MSF 监听
模拟黑客给软件加后门: 在 .exe 文件中注入后门。 注入思路: 先看主程序附加了那些小程序,在小程序上面进行添加 payload
使用 evasion 模块生成免杀木马:
2. 制作 Linux 恶意软件
4. 制作恶意 deb 软件包进行渗透
制作恶意软件包使用 --download-only 方式下载软件包,不进行安装,eg: 安装 frteesweep
5. 基于 JAVA 环境的漏洞环境
6. 利用宏感染 word 文档获取 shell
最后更新于