渗透测试框架
渗透测试框架
Metasploit渗透框架
名词解释
POC: 用于证明漏洞是否存在,是没有攻击性
EXP: Expoit,利用漏洞的攻击动作,方式,方法,具有攻击性
PAYLOAD : 有效载荷,真正在系统进行的代码和指令
SHELLCODE: 利用漏洞执行的代码
CLIENT: 客户端
Team Server:服务端,C2服务器,Beacon Payload的控制器
Beacon:是Cobalt Strike运行在目标主机上的 payload,Beacon 在隐蔽信道上我们提供服务,用于长期控制受感染主机。
C2:Command & Control Server的简称,也就是命令与控制服务器
MSF简介
The Metasploit Framework 的简称。MSF 高度模块化,即框架由多个 module 组成,是全球最受欢迎的渗透测试工具之一是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的 shellcode,并持续保持更新。metasploit 涵盖了渗透测试中全过程,你可以在这个框架下利用现有的 Payload 进行一系列的渗透测试。
MSF框架结构
kali-metasploit框架目录路径
/usr/share/metasploit-framework
data: 包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。
documentation:包含框架的可用文档。
lib:metasploit的库文件夹。
plugins:用来存放metasploit的插件。
scripts:用来存放metasploit的脚本,包括meterpreter及其它脚本。
tools:存放多种的命令行实用程序。
modules:存储metasploit的模块文件。
更新
但是一般安装最新版的kali一般都是最新版的metasploit
msfconsole -v # 查看版本
apt-get update
apt-get install metasploit-framework
配置数据库
Metasploit支持使用数据库来保存渗透测试过程中获取的各种数据
开启数据库
serveice postgresql start
初始化MSD数据库
msfdb init
创建数据库用户:msf
创建数据库:msf
创建数据库:msf_test
创建配置文件:/usr/share/metasploit-framework/config/database.yml
创建保存MSF框架信息所需数据表
启动msfconsole
1 |
|
Msfconsole 是 Metasploit 框架用户接口,我们能通过 Msfconsole 接口使用 Metasploit 中所有模块
msfconsole作用
管理Metasploit数据库
管理会话
配置启动Metasploit模块
启动msfconsole时,MSF会使用创建MSF用户子哦对那个登录到数据库
通过db_status检查数据库的状态
连接其他的数据库
msf5 > db_connect 用户名:口令**@服务器地址:端口/**数据库名称
msf命令
常用命令
show exploits – 查看所有可用的渗透攻击程序代码
show auxiliary – 查看所有可用的辅助攻击工具
[show]options/advanced – 查看该模块可用选项
show payloads – 查看该模块适用的所有载荷代码
show targets – 查看该模块适用的攻击目标类型
search – 根据关键字搜索某模块
info – 显示某模块的详细信息
use – 使用某渗透攻击模块
back – 回退
set/unset – 设置/禁用模块中的某个参数
setg/unsetg – 设置/禁用适用于所有模块的全局参数
数据库管理命令
msfdb init # 启动并初始化数据库
msfdb reinit # 删除并重新初始化数据库
msfdb delete #** 删除并停止使用数据库
msfdb start # 启动数据库
msfdb stop # 停止数据库
msfdb status # 检查服务状态
msfdb run # 启动数据库并运行msfconsole
核心命令
? 帮助菜单
banner 显示 Metasploit banner信息
cd 更改当前工作目录
color 切换颜色
connect 与主机通信
debug 显示对调试有用的信息
exit 退出控制台
features 显示可以选择加入的尚未发布的功能列表
get 获取特定变量的值
getg 获取全局变量的值
grep 筛选以一条命令的输出
help 帮助菜单
history 显示命令历史记录
load 加载框架插件
quit 退出控制台
repeat 重复一个命令列表
route 通过一个session会话路由流量
save 保存活动的数据存储
sessions 导出会话列表并显示会话信息
set 将一个特定环境的变量设置为一个值
setg 将一个全局变量设置为一个值
sleep 在指定的秒数内不执行任何操作
spool 将控制台输出写入文件以及屏幕
threads 查看和操作后台线程
tips 显示有用的提示清单
unload 卸载框架插件
unset 取消设置的一个或多个变量
unsetg 取消设置一个或多个全局变量
version 显示框架和控制台库版本号
模块命令
advanced 显示一个或多个模块的高级选项
back 从当前环境返回
clearm 清除模块堆栈
favorite 将模块添加到最喜欢的模块列表中
info 显示一个或多个模块的详细信息
listm 列表中的模块栈
loadpath 从路径中搜索并加载模块
options 显示一个或多个模块全局选项
popm 将最新的模块从堆栈中弹出并使其处于活动状态
previous 将之前加载的模块设置为当前模块 pushm 将活动模块或模块列表推送到模块堆栈 reload_all 重新加载所有模块
search 搜索模块名称和描述
show 显示给定类型的的模块或所有模块
use 通过名称或搜索词/索引选择使用模块
作业命令
handler 启动一个payload处理程序作为job
jobs 显示和管理 jobs
kill 杀掉一个job
rename_job 重命名一个job
开发者命令
edit 用首选编辑器编辑当前模块或文件
irb 在当前环境下打开一个交互式Ruby shell
log 如果可能的话,将framework.log分页显示到最后。
pry 在当前模块或框架上打开 Pry 调试器
reload_lib 从指定路径重新加载Ruby库文件
time 运行一个特定命令所需的时间
攻击载荷命令
check 检查一个目标是否易受攻击
generate 生成一个有效载荷
reload 从磁盘重新加载当前的模块
to_handler 用指定的有效载荷创建一个处理程序
MSF模块简绍
模块是通过Metasploit框架装载集成对外提供的最核心的渗透测试功能实现代码。MSF所有的漏洞测试都是基于模块。
一共有以下7种模块
辅助模块(Auxiliary)
例如针对各种网络服务的扫描与查点、网络扫描、枚举、漏洞扫描、登录口令暴力破解、模糊测试、爬虫遍历、数据提取等
此外,辅助模块中还包括一些无须加载攻击载荷,同时往往不是取得目标系统远程控制权的渗透攻击,例如:拒绝服务攻击。
渗透攻击模块(Exploits)
就是用于攻击的模块
有远程漏洞利用、本地漏洞利用、权限提升漏洞利用、客户端漏洞利用、Web 应用程序漏洞利用和许多其他漏洞。
攻击载荷模块(Payloads)
用于在利用期间执行操作的模块。攻击载荷是在渗透攻击成功后在目标系统运行的一段植入代码,通常是为渗透攻击者打开在目标系统上的控制会话连接。在传统的渗透代码开发中,攻击载荷只是一段功能简单的ShellCode代码,以汇编语言编制并转换为目标系统CPU体系结构支持的机器代码,在渗透攻击触发漏洞后,将程序执行流程劫持并跳转入这段机器代码中执行,从而完成ShellCode中实现的单一功能。
例如建立 Meterpreter 会话、反向 shell、执行命令、下载和执行程序等。
后渗透攻击模块(Post)
用于在拿到权限后进行后渗透利用操作的模块,例如凭证/哈希转储、本地权限提升、后门安装、敏感数据提取、网络流量隧道(代理)、键盘记录、屏幕捕获和许多其他操作。
空指令模块(Nops)
用于生成无害、良性的“无操作”指令的模块,例如用于填充目的、在利用期间在内存中滑动等。用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令。在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行Shellcode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败,从而提高渗透攻击的可靠性。
可以理解为这个是提高成功的保险
编码模块(Encoders)
用于有效负载编码和加密的模块,例如 base64、XOR、shikata_ga_nai 等。这有助于混淆以规避防病毒或 NIDS(网络入侵检测系统)、EDR(端点检测和响应)等防御。
规避模块(Evasions)
用于规避防御的模块,例如防病毒规避、AppLocker 绕过、软件限制策略 (SRP) 绕过等。
搜索MSF常见的模块以及详细的使用方法
MSF辅助扫描
MSF主机发现
模块发现
modules/auxiliary/scanner/discovery/
也可以通过search进行搜索模块
arp_sweep:使用arp请求枚举本地局域网中的所有活跃主机
udp_sweep:通过发送UDP数据包探查指定主机是否活跃,并发现主机上的udp服务。
模块使用
arp_sweep模块使用
use auxiliary/scanner/discovery/arp_sweep
set RHOSTS 10.10.10.0/24
set THREADS 50
run
设置好过后,代表进行启动
常用的参数
生成payload 查看指定的参数
1
--list-options
查看payload
1
msfvenom -l payloads | grep windows
相关模块简绍
介绍一些使用率没有那么高,但是挺重要的模块
web_delivery
该模块没有文件落地
查看高级设置
1
show advanced
查看target
生成正向payload
kali开启监听
注意设置lport 为目标主机开启的端口
Viper渗透框架
简介
是一款图形化内网渗透工具,将内网渗透过程中常用的战术及技术进行模块化及武器化。 集成杀软绕过,内网隧道,文件管理,命令行等基础功能。 当前已集成70+个模块,覆盖初始访问/持久化/权限提升/防御绕过/凭证访问/信息收集/横向移动等 大类。 目标是帮助红队工程师提高攻击效率,简化操作,降低技术门槛。支持在浏览器中运行原生 msfconsole,且支持多人协作
多看看,文档
使用
在输入密码之后进入到这个应用
生成payload
建议生成完监听器之后直接生成payload
不支持免杀
CobaltStrike渗透框架
介绍
这个是基于matasploit二次开发的框架
Cobalt Strike(简称为CS)是一款团队作战渗透神器,是一种可以用来进行横向移动、数据窃取、鱼叉式钓鱼的后渗透工具,分为客户端和服务端,一个客户端可以连接多个服务端,一个服务端也可以对应多个客户端连接。
默认只能针对windows,相对于msf改进了很多东西,同时也不会被发现因为cs采用http的形式,默认每60s通信一次。对于检测流量来说,可以是很隐蔽的了
基本使用
这个是中文版
启动服务端
进入到文件夹过后,进行一下的操作
1
2sudo ./teamserver 192.168.13.114 0804chgCHG
IP 密码
启动客户端
win
完成基本的配置,注意主机是服务端的地址,用户的名称不能重复
linux
linux必须是在有图形界面的才能正常的运行
这里需要等一下
英文版的翻译
下面 是旧版的cs,我们使用的是新版的cs
paylaod
简单介绍一下
文件管理
就可以替代使用python -m 开启监听
托管了一个hta文件,现在尝试使用这个
1 |
|
然后被杀了
想免杀的话可以尝试使用C语言 或者raw格式的文件
远程加载
cs插件简绍
c2
生成linuxpayload
生成一个https的监听器
使用c2 创建一个监听器
查看payload