炫彩蛇-Viper帮助文档&MetaSploit的平行替代攻击战术
2023-5-31 09:37:6 Author: 猫哥的秋刀鱼回忆录(查看原文) 阅读量:145 收藏

Viper(炫彩蛇)是一款基于MetaSploit图形化的红队行动辅助平台,并且在众多方面对于国人使用MetaSploit的痛楚进行了跨越式的提升,使得它具备了与CS并驾齐驱的能力,我们可以通过Viper(炫彩蛇)来实现:

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

本文谨参考Viper(炫彩蛇)官方文档并融入以及个人使用体会。并且重新编排此工具使用帮助文档,旨在平行替代MetaSploit攻击战术,提高效率,简化操作,降低技术门槛。由于本人技术有限,若不可抗力本文内容出现错误,请师傅们及时提醒并指出,以免产生误导。本文大量借鉴官方原生文档的内容以及插图,并再次基础上进行重新排版和语句逻辑梳理以及个人体会增加,再次感谢Viper开发者小组。这是一篇老早就写的文,水一篇。

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

项目地址:https://github.com/FunnyWolf/Viper

Basic Function Cruise-基础功能巡航

配置安装

准备一台Linux系统的VPS或虚拟机,内存大于2G,推荐使用ubuntu系统。使用f8x工具在全新的Linux环境一键安装viper,建议手动在root权限下安装配置,尽量避开su root安装。详细可参考官方首次安装文档:https://www.yuque.com/vipersec/help/olg1ua,等待系统启动后,访问https://yourvpsip:60000进行登录即可。

  • 用户名:root
  • 密码:自定义密码

如果你使用VPS部署Viper,请确认VPS的防火墙开放了60000端口及后续监听需要的端口

f8x红/蓝队环境自动化部署工具由 https://github.com/ffffffff0x 团队提供

sysctl -w vm.max_map_count=262144
curl -o f8x https://f8x.io/   # wget -O f8x https://f8x.io/
bash f8x -viper

版本更新

  • 小版本更新:删除原有容器,更新镜像
  • 跨版本更新:删除原有容器,清空已有数据及自定义模块,删除原有容器,更新镜像
  • 参考:https://www.yuque.com/vipersec/help/qofhby

防止溯源

VIPER内置一套自签名SSL证书,用于实现前后端https连接,如果你的PC机所在网络环境存在流量监测设备,建议替换内置的SSL证书,绕过流量监测。此处生成的证书用于VIPER控制台前端与后台WEB服务通讯的https加密以及Nginx双向认证,与载荷reverse_https证书无关。

使用VIPER的反溯源功能可以禁止没有安装证书的IP访问后台

cd /root/VIPER/nginxconfig    # /root/VIPER为viper安装目录
chmod 755 gencert.sh          # 提升运行权限
./gencert.sh                  # 按照提示运行,牢记密码

根据指示,将 /root/VIPER/nginxconfig/client.pfx 拷贝到本地,双击导入证书到PC

此处输入脚本中指定的密码

pfx证书安装完成后,把ca.crt 也下载然后导入火狐浏览器

然后重启浏览器(必须关闭浏览器的所有进程,然后重新打开)

然后访问https://vpsip:60000登录

这一步实际测试会出现问题,我推荐使用火狐浏览器,pfx证书安装完成后,直接在火狐浏览器上进行pfx证书的导入

其实我们在此基础上,可以搭配Cloudflare证书进行反溯源配置,具体操作和CS如何隐匿是一致的

参考:https://www.yuque.com/vipersec/blog/ne2gzk

  • 前提条件:域名要自己在Cloudflare的DNS里面进行配置解析

创建源服务器证书

然后设置加密模式为完全

记得关闭建议程序

现在就可以使用域名+HTTPS去访问你的VIPER后台,然后创建CF的客户端证书

然后将公钥和私钥放在一起,命名为.pem文件格式即可,需要注意的是xxxx.crt内容放前面,不要留空行

然后上传这个pem证书到VIPER

创建HTTPS监听,注意Cloudflare的端口有限制,https上线用443端口比较稳妥

上线即可形成有效的反溯源

密码更改

  • 临时更改:适用于需要在不重启Viper的情况下修改密码,Viper更新后密码不会保留适用于需要在不重启Viper的情况下修改密码,Viper更新后密码不会保留
  • 永久更改:持久化更改
  • 参考即可:https://www.yuque.com/vipersec/help/rxb752

重启关闭

  • 临时关闭Viper
cd /root/VIPER
docker-compose stop
  • 重新启动Viper
cd /root/VIPER
docker-compose start
  • 查看容器日志
docker logs viper-c
  • 进入容器命令行
docker exec -it viper-c bash

目录解析

Viper通过docker挂载目录的方式持久化保存数据,安装完成后典型的目录如下图:

--db
  |db.sqlite3                      #  Viper的SQL数据库文件
  |dump.rdb                        #  Viper缓存数据库文件
--log
  |access.log nginx                # 访问日志
  |error.log nginx                 # 错误日志
  |daphne.log viperpython          #  websocket运行日志
  |uwsgi.log viperpython           #  http服务运行日志
  |viperpython.log vipepython     # 主服务运行日志
  |puma.log                        # msf接口服务日志
--loot                             # 存放用户下载/上传的文件
--module                           # 存放自定义模块
--nginxconfig
  |gencert.sh                      # 用于生成自定义ssl证书
  |ssl.crt ssl.csr ssl.key ssl.origin.key # ssl证书相关文件,用于nginx
  |viper.conf                             # nginx子配置文件,用户可通过该配置文件自定义nginx配置

右键菜单

右键点击生成的会话

权限信息

用于展示当前会话session的详细信息,免去信息收集的痛楚,快速了解当前信息身份

查看当前会话的进程列表

点击操作可以对进程进行 注入/窃取token/还原token/kill等操作

文件管理

通过点击权限,选择 文件管理进入主界面

文件管理功能类似Windows的资源管理器

上图功能依次为 打开根目录 打开默认目录 打开上级目录 目录栏 前往 刷新 切换默认目录 新建文件夹 上传文件

  • 文件夹及磁盘支持双击进入,目录栏支持输入指定目录后回车进入目录
  • 支持直接查看不大于100kb的文件
  • 支持切换工作目录/刷新当前目录

点击上方新建文件夹按钮可在当前目录新建文件夹

点击上传按钮可打开服务端文件管理器,可以将服务器的文件上传到当前目录

点击 下载 链接,后台自动建立下载文件任务,下载的文件会存储在 文件管理

支持带参数执行可执行文件(无回显)

可直接修改主机的文本

内网路由

重点安利模块,免去原生MSF种配置的复杂度,以及CS中做内网多层渗透中代理的麻烦度。自动模式 中,Session会根据所在主机网卡IP/掩码/网关自动添加路由

如果内网某个网卡有多个子网,还可以通过手工输入的方式添加

内网路由页面只显示当前会话Session添加的路由,如果需要查看所有路由,可以通过 内网代理 路由列表 查看所有路由

Viper内网路由即是Metasploit的route功能,具体原理自行参考

端口转发

正向转发

正向转发是将当前VPS的网络端口转发到会话Session所在内网的某IP某端口.常用于连接内网的某服务,如RDP,SSH等

如将当前会话所在主机的127.0.0.1:3389映射到VPS的33899端口

  • 常用于突破防火墙对于某些重点端口的流量拦截
  • 远程IP(目标) 远程端口(目标) 也可以选择内网其他主机
  • 类似于portwd将内网内主机的3389端口转发到本地机器的7777端口一样
反向转发
  • 反向转发是将内网的某IP某端口转发到VPS的网络端口
  • 反向转发通常用于handler监听的回连
  • 反向转发常用于内网不出网机器

假设你已经获取到内网192.168.3.13的权限并建立了Session

你通过一些途径了解到192.168.3.0/24网段的其他机器无法直接连接互联网,也就是无法直接连接你的VPS。俗称不出网机器

此时你可以建立如下反向转发,通过192.168.3.13的session将内网192.168.3.13:20000转发到10.10.10.10:2000

本地IP(目标):10.10.10.10

本地端口(监听):2000

远程端口(监听):20000

10.10.10.10:2000开启handler监听,192.168.3.14连接192.168.3.13:20000生成反向shell

所有内网机器连接192.168.3.13:20000就相当于连接VPS的2000端口

你可以在2000端口建立监听并建立一个192.168.3.13:20000的虚拟监听.

关于监听与虚拟监听相关信息可参考 监听载荷 监听 部分

此时可以使用虚拟监听192.168.3.13:20000作为载荷攻击内网其他机器。即使其无法直接连接VPS,Viper的端口转发功能基于metasploit-framwork的portfwd功能

传输协议

  • 传输协议是指Session如何通过网络连接与服务器通讯
  • 通常Session在初始阶段只能指定一种传输方式,在session完全加载后(加载stdapi),可以增加多个传输协议,保证传输可靠性
  • 选择底部监听后可以快速将监听所对应的传输协议添加到Session中

可以直接删除非当前正在使用的协议

如果Session拥有多个协议,可以手动进行切换操作

切换传输协议,Viper会关闭当前Session,并等待Session所在进程使用信息的传输协议连接

注意事项

传输协议中无法添加rc4密码参数,所以不要将rc4类的监听添加到传输协议中

命令终端

命令终端中可以直接输入命令,还可以通过下方快捷键快速输入,实际就是原始MSF中的meterpreter增强命令行

命令终端中默认使用meterpreter增强命令行,如果希望执行系统命令,可以使用shell + 命令的方式

运行信息

读取缓存/重新请求
  • 每次打开窗口时会自动读取数据库中缓存的主机信息
  • 点击 重新请求 会在后台执行更新主机信息模块,模块执行完成后自动将结果存储到数据库中.
主机信息
网卡信息
本地监听
外网连接

判断主机有哪些联网应用

内网连接

通常用于判断内网其他主机的IP地址及服务

ARP信息

用于查找内网网段

重要进程

用于判断主机的杀软及远控软件(teamviewer/anydesk)运行情况

所有连接
所有进程

删除权限

  • 可以使用删除权限功能关闭已获得的session
  • 删除权限后无法撤销!

主机操作

修改备注

直接点击主机图标标签修改

删除主机

在主机管理中批量删除

为什么无法删除主机?

如果当前主机有正在活动的Session,viper会自动新建主机信息

为什么删除主机后Session仍然存在?

删除主机只会删除数据库中存储的主机相关信息,viper并不会关闭对应session

模块运行

当在存在Session的行点击运行模块时,显示所有可用的模块,包括需要Sesison和无需Session的模块.

如果点击不存在Session的行,则默认只显示不需要Session的模块

Viper的根据ATT&TK模型对模块进行分类,可以通过选择栏进行过滤选择

支持根据关键字搜索模块,搜索功能会根据名称/TTPs/简介进行匹配

左侧点击选择模块后,右侧默认显示模块所需参数.鼠标移到参数上方时自动显示参数说明.

右侧还可以切换到说明选项卡,展示模块的更多信息

适用权限是指模块可以在哪些权限下运行,如上图1表示模块可以在 普通用户权限,管理员权限.SYSTEM权限下都可以运行

图二表示模块只能在管理员及SYSTEM权限下运行.

输入参数后点击运行即可运行模块

运行后切换到 实时输出 可以看到模块运行状态

右侧通知列表会显示 模块进入后台 模块运行时输出的日志 模块运行结束后提示

左侧展示模块的运行结果,包括 运行结束时间 主机IP 模块名称 模块参数 模块结果输出

如果模块运行时间较长,可以在任务列表页面查看后台有哪些模块在运行

点击删除按钮会手动终止模块后台运行

视图一览

实时输出

参考:https://www.yuque.com/vipersec/help/vdbhlm

任务列表

参考:https://www.yuque.com/vipersec/help/rokuc0

监听载荷

在MSF原生的hander/payload基础上,Viper增加了如下两项功能

  • 增加虚拟监听的概念,在内网渗透的某些场景中(如注入shellcode,spawn进程,AB网正向hander),我们只需要快捷的调用已有的监听配置,不需要实际建立网络监听或网络连接。虚拟监听和实际监听可相互转化

新建监听

  • 虚拟监听 是指将输入的监听配置选项存储在缓存中,但不在服务器中建立实际运行的监听.后续在运行模块/传输协议时可以快速选择该监听配置.
  • 虚拟监听 在系统重启后仍然存在,可用于鱼叉钓鱼,持久化等场景
  • 真实的监听使用绿色图标表示,虚拟监听使用灰色图标表示

虚拟监听与实际监听可通过 虚拟化 实例化 相互转换

HTTPS证书

Viper默认内置一个ssl证书 www.example.com.pem ,使用时可直接用于https加密,用户也可以自行上传pem格式证书,注意证书中必须包含公钥和私钥,具体格式参考 www.example.com.pem

Reverse_DNS上线

参考:https://www.anquanke.com/post/id/255625

监听防火墙

主要用于屏蔽沙箱及网络测绘服务器连接监听

参考:https://www.yuque.com/vipersec/help/lxlre4

WebDelivery

WebDelivery功能与msf的exploit/multi/script/web_delivery功能相同

用于一句话加载payload.常用于可以执行命令,但是不方便上传文件的场景

参考:https://www.yuque.com/vipersec/help/kvxr65

文件列表

参考:https://www.yuque.com/vipersec/help/yc0ipk

网络拓扑

汇总端口扫描,历史Session上线信息,当前Session信息当前路由信息,分析处理后生成网络拓扑图

网络节点及连接线说明见下图

自动编排

参考:https://www.yuque.com/vipersec/help/gh60e1

内网代理

Viper的内网代理功能基于MSF的socks4a/socks5代理模块集成而来

Viper将内网路由,端口转发,内网代理集中控制,方便使用

参考:https://www.yuque.com/vipersec/help/cv0shx

凭证列表

通过模块获取到的密码信息都会存储在此处

参考:https://www.yuque.com/vipersec/help/iydrqn

Msfconsole

基本原生复制msfconsole操作

参考:https://www.yuque.com/vipersec/help/tzugzn

全网扫描

实验模块参考:https://www.yuque.com/vipersec/help/yrys61

被动扫描

使用VIPER扫描Log4j漏洞(主动扫描/被动扫描)

参考:https://www.yuque.com/vipersec/blog/lgrqm4

平台设置

关于VIPER
Quake API

参考:https://quake.360.cn/quake/#/help?title=%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E

Zoomeye API

参考:https://www.zoomeye.org/doc

Server酱

配置消息通道,获取SendKey,填入SendKey

参考:https://sct.ftqq.com/

DingDing Bot

参考:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

Telegram Bot

参考:https://longnight.github.io/2018/12/12/Telegram-Bot-notifications

Session监控
  • 主要用于钓鱼邮件无人值守
  • 功能建议配合bot通知使用

当激活Session监控后,每当平台新增Session时都会发送通知. 需要结合Bot使用

参考:https://www.yuque.com/vipersec/blog/ov21zg

实验功能

FOFA API:https://fofa.so/static_pages/api_help

回连地址

填写为你的VPS的互联网IP/域名

VIPER已占用端口:

  • Nginx:0.0.0.0:60000
  • Redis:127.0.0.1:60004
  • Msfrpcd:127.0.0.1:60005
  • SSH(默认关闭):0.0.0.0:60010

System Architecture Clear-系统架构明晰

渗透服务

渗透服务为metasploit-framework定制化魔改而来,通常每周与官方同步一次

修改主要集中于msfrpc服务,session控制,msfconsole,并增加了多个定制化模块

  • 源代码:https://github.com/FunnyWolf/vipermsf

  • 开发语言:Ruby,C

后台服务

后台服务主体是Django框架,apscheduler作为后台进程

使用redis及msfrpc restapi与渗透服务通讯.并自定义实现一个模块运行流水线

  • 源代码:https://github.com/FunnyWolf/viperpython

  • 开发语言:Python,C

前端服务

前端基于UMI3构建,技术栈为Ant Design React,React hooks

  • 源代码:https://github.com/FunnyWolf/viperjs

  • 开发语言:Javascript

技术要求

  • 如果需要开发一些不复杂的模块,如获取一些软件密码,内网服务暴力破解,内网扫描等功能,只需要掌握Python即可.
  • 如果需要开发复杂的模块,metasploit-framework现有的功能及接口不能满足你的要求,那需要掌握Python及Ruby
  • 如果需要修改Viper界面,增加自己的logo,或者闭源进行商业化使用,那需要掌握Javascirpt,Python,Ruby三种语言.

特殊二开

参考官方文档:https://www.yuque.com/vipersec/code/nqmgvy

Module Function Detailed-模块功能详解

对于内置的模块,我觉的官方介绍的十分详细,如果师傅们在使用某个模块时,提前应看看此模块的说明,避免出错。对于Viper的基本流程使用,我会在第四个模块:Red Team Traceback-红队手法追溯中做比较详细的分析。

参考文档

模块参考文档:https://www.yuque.com/vipersec/module

Red Team Traceback-内网渗透流程

获取权限-信息收集

假设我们在获取一个 Win10 出网双网卡机器的Session 之后,我们在内网就已经有了立足点,可以进行后续信息收集/横向移动等操作了。

生成载荷

点击对应监听的生成载荷,浏览器会自动下载一个免杀的exe或elf

免杀载荷可能由于杀毒软件厂商添加 md5 标签而失效

获得会话

将生成的exe上传到要控制主机中,然后执行

Session 是一种增强版的 Shell,后续 Session 统称为权限,此时控制台已经获取了一个 Session

Sessions

控制台中显示权限及主机的重要信息,从左到右分别介绍各个图标的含义.

  • 点击执行模块按钮会显示所有可用的模块

平台会根据当前目标是否有 session 权限来自动过滤适用的模块

  • 彩色长方形标签表示 session 最后的心跳时间

心跳时间超过 1 分钟后图标会变成红色,此时 VIPER 后台认为该 session 很可能已经失效,但是对于tcp类型的 payload,在长时间不操作时可能处于休眠状态导致心跳超过 1 分钟,对 session 重新操作即可唤醒 session

  • 带有编号的紫色标签是 sid,用于标注 session.
  • IP 的长方形标签表示 session 在互联网测的连接端口,

此 ip 地址一般为企业出口路由器的公网 IP,此时鼠标移动到该标签上方会显示 session 完整网络连接信息及 GeoIP(地理位置信息)

  • x64 及 x86 标签表示 session 的 arch,x64 及 x86 颜色不同

arch 表示 session 进程的 arch,并不表示操作系统的 arch,操作系统的 arch 可以在主机信息里面查看

  • 带图标的长方形标签标识 session 是 windows 系统还是 linux 系统及系统版本
  • 长方形标签展示主机名,当前用户等信息.

其中白色的表示该 session 是普通用户权限,金色表示 session 是管理员权限(已过 uac),便于直观判断

  • 黄色的 IP 地址表示主机在内网中的 IP

内网可以理解为在 NAT 后面的网络

  • 正方形图标表示主机的图标标签,可以通过点击图标自行修改,鼠标移动到图标上时会显示主机的备注信息

  • 点击权限中的任意标签会弹出针对对权限的所有可用操作

  • 点击主机中的任意标签中可以操作/查看/修改/更新以主机 IP 为 ID 的信息集
常见问题
  • 为什么 VIPER 部署在阿里云 VPS 上没有正确生成 Session?

阿里云等国内云厂商有流量监控设备,请使用带加密的监听(reverse_https),由于 vps 带宽原因,执行 payload 后请稍等一段时间,请勿删除对应监听

  • 为什么我看到的界面和文档中的界面不一样/页面错乱?

最低分辨率支持 1366x768,如果界面错乱请尝试清空浏览器缓存.

在获取一个 Session 之后,我们在内网就已经有了一个立足点,可以进行后续信息收集/横向移动等操作了.

会话克隆
  • 操作 Session 过程中可能会由于杀毒软件或网络的原因导致 Session 掉线
  • 在实战会生成多个 Session,然后再进行进一步操作,以免丢失权限
  • VIPER 中可以使用 Session克隆 快速的复制多个 Session

还可以将常用的模块加星,模块会在下次打开时置顶

  • 这样我们就有多个 Session 了,可以大胆的进行后续操作而不用担心权限丢失.
权限信息
  • 通过权限操作-权限信息 查看 Session 的详细信息,以便于决定后续提权/扫描/信息收集的方向.
文件管理
  • 使用权限操作-文件管理快捷打开文件浏览器
  • 可以在文件浏览器中对文件进行可视化操作,就像操作本地文件一样进行浏览/上传/下载/删除/执行.
  • 下载的文件可以在文件列表中查看
命令终端
  • 可以使用权限操作-命令终端打开 session 命令行
  • 在下方输入框输入命令,点击下方快捷键快速执行指定命令.点击 help 查看帮助.

shell + 命令 执行系统命令,如:shell whoami

img
主机信息
  • 主机信息中展示已控主机的详细信息,包括 systeminfo,网络连接,进程列表等

  • 点击重新请求按钮会发送请求到已控主机的 Session 中进行信息收集操作,结果缓存到数据库中.
  • 点击读取缓存按钮会读取数据库最新缓存的信息

主机信息会展示可能和渗透相关的进程信息,比如 lsass 进程,杀毒软件进程等

添加备注
  • 在多人协作或者渗透大型内网过程中,我们需要对主机进行一些备注以方便记录

TIPS

请加入微信内部群(人数已满请在公众号后台点击联系方式加我VX后拉你进群)共同吹水玩耍交流,并且随时反馈Bug

应龙安全-红蓝对抗知识库星球
看到这里的新人师傅OR老手师傅如果也想在此方向 -红队攻防知识 -CTF竞赛知识 -优质工具推荐与研发 -免杀Bypass研究 -安全文献资料 -研究心得文章 -破解软件研究 -APT打法思路 -其他安全赛道    有所研究和收获
那么加入应龙似乎来看性价比绝对超高,内部不定期率先释放常见的破解工具,内部资料文章,本星球主打的就是氛围二字:加入的师傅在星球发布优秀的原创文章后,在星球收入足够的前提下,一定会拿到属于自己的奖励,这也是我们鼓励师傅们积极贡献的方式之一。
相信绝对让你值得信任,如果师傅你有兴趣了解应龙安全这个刚刚诞生的星球,请扫码或搜索详细的了解本知识星球,嘉宾有业内众多师傅:资深红队成员,单兵APT机器大手子,甲方安全团队成员,SRC华佗,蓝队高级蓝队师傅,CTF-web手大牛子,
目前仅需120RMB一年,并且不定期有优惠卷放出,后期人数不断增加费用也会不断增加,有兴趣可以了解。
送你一张优惠卷

文章来源: http://mp.weixin.qq.com/s?__biz=Mzk0NjMyNDcxMg==&mid=2247500137&idx=1&sn=cfdc2bb313a485d6f2c6c215c3ce6b65&chksm=c30554eef472ddf88b96a73afcbc96dbc4846302cc0cf3b476bc9f95d5a1222f1ca2d63d7fe5#rd
如有侵权请联系:admin#unsafe.sh