Viper图形化红队攻击工具 杀软绕过 内网隧道 权限提升

admin 2021年5月19日02:16:05评论494 views字数 9001阅读30分0秒阅读模式

Viper图形化红队攻击工具 杀软绕过 内网隧道 权限提升




Viper图形化红队攻击工具 杀软绕过 内网隧道 权限提升


  • VIPER是一款图形化内网渗透工具,将内网渗透过程中常用的战术及技术进行模块化及武器化.

  • VIPER集成杀软绕过,内网隧道,文件管理,命令行等基础功能.

  • VIPER当前已集成55个模块,覆盖初始访问/持久化/权限提升/防御绕过/凭证访问/信息收集/横向移动等大类.

  • VIPER目标是帮助红队工程师提高攻击效率,简化操作,降低技术门槛.

项目地址

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

安装使用文档地址

https://www.yuque.com/funnywolfdoc/viperdoc


Viper图形化红队攻击工具 杀软绕过 内网隧道 权限提升


安装

  • 安装

使用手册

  • 使用手册

常见问题

  • FAQ

问题反馈

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

  • 微信群 : Viper问题反馈

源代码

  • viperjs (前端)

https://github.com/FunnyWolf/viperjs

  • viperpython (后台)

https://github.com/FunnyWolf/viperpython

  • vipermsf (渗透服务)

https://github.com/FunnyWolf/vipermsf

更新日志

v1.2.2 20210221

  • 增加自动化迁移进程功能

  • 增加Server酱通知Bot

  • 优化Session监控功能

  • 优化运行模块前端UI

  • 修复内网端口扫描模块参数校验错误问题

  • 修复获取Windows浏览器密码模块执行失败问题

  • 更新metasploit-framework到6.0.32版本

v1.2.1 20210131

  • 优化主控台UI,操作主机及权限更便捷

  • 修复当前任务数量不显示问题

  • 修复部分前端组件重复渲染问题

  • 修复前后端时间不一致时权限心跳信息显示错误问题

  • 修复使用命令终端执行操作系统命令失败问题

  • 更新metasploit-framework到6.0.29版本

v1.2.0 20210124

  • 修复首次使用无法获取token导致黑屏问题

  • 修复通知列表及模块结果列表时间不更新问题

  • 修复浏览器时间与VPS时间不一致导致Session心跳显示异常问题

  • 修复msfconsole选择自动复制功能页面报错问题

  • 优化socks代理功能

  • 优化log功能,当前可在宿主机log目录查看所有日志

  • 优化登录校验,当前不允许使用默认密码登录系统

  • 优化自定义模块功能

v1.1.8 20210117

  • 数据库文件挂载本地目录,容器重启/容器删除/镜像更新后数据不丢失

  • 容器重启/容器删除/镜像更新后自动恢复上次运行的监听

  • 使用react hooks重构前端,提升开发与运行效率

  • 聊天功能可切换用户头像,用于多用户协同作战

  • 修复丢失Token导致上传文件失败问题

v1.1.7 20201227

  • 将thin切换为puma,提高性能

  • 优化前端websocket传输逻辑

v1.1.6 20201219

  • 优化payload生成功能(适配隐藏C2功能)

  • 简化Viper模块编写,简化API接口

  • 新增内存执行pe文件模块

  • 修改SSL默认秘钥为2048位

  • Payload加入HttpHostHeader参数

  • 优化Session及主机操作UI

  • 修复全网扫描UI错误

  • 修改渗透服务启动参数,增强长时间运行时稳定性

  • 修改内部组件通讯方式为unix socket,减少系统网络资源占用

  • 合并 msf 6.0.23版本

v1.1.5 20201025

  • 合并msf6.0.13版本

  • 优化msfrpc性能

v1.1.4 20201016

  • 优化UI界面

  • 精简Handler参数展示

  • 控制台当前使用Https

  • 新增SSL证书生成/校对时间教程

  • 模块新增警示提示功能

  • 修复全网扫描错误提示显示失败问题

  • reverse_http新增不免杀提示

  • 生成载荷时自动提示LHOST

  • 优化获取系统权限模块

  • 优化Session与主机的排序逻辑

  • 优化进程管理功能

  • 修复bypass uac 无法运行问题

  • 优化新增用户模块用户组判断逻辑

  • 运行python模块适配python2命令

  • 注入进程可选择pe文件位置,便于注入到傀儡进程(如某数字浏览器)

  • 合并metasploit-framework 6.0.10版本

v1.1.3 20200928

  • 新增Session文件修改功能

  • 移除缓存监听功能,功能与虚拟监听合并

  • 控制台当前使用Https

  • 运行持久化模块后,可自动缓存监听配置,便于后续使用

  • 支持存储域用户hash

  • 优化休眠命令提示

  • 优化msfconsole界面

  • 合并metasploit-framework 6.0.9版本

v1.1.2 20200911

  • 修复无法清除失效session问题

  • 新增克隆https证书模块

  • 修复hashdump模块问题

  • 优化全网扫描展示逻辑

  • 修复psexec模块问题

  • 新增生成服务类型exe

  • 修复从meterpreter进入操作系统shell后CTRL+C无法退出问题

  • 优化web msfconsole的操作逻辑

  • 优化session监控功能,当前只监控初始化完成的session数量

v1.1.1 20200827

  • 新增java,php,python类型payload适配

  • 新增 vbulletin widget模板命令执行 全网扫描模块

  • 修复无法生成载荷的BUG

v1.1.0 20200817

  • 新增 全网扫描 功能

v1.0.4 20200714

  • 新增钓鱼邮件功能(人工判断沙箱)

  • 新增源码免杀功能(windows)

v1.0.3 20200620

  • 合并metasploit-framework v5.0.95

  • 优化错误提示

  • 新增休眠session功能

v1.0.2 20200518

  • 合并metasploit-framework v5.0.90

  • 优化前端UI细节

  • 优化上传/下载Session文件操作



Viper安装手册

Viper安装

  • 准备一台linux系统的 VPS,安装 docker及docker compose

apt-get updatecurl -sSL https://get.daocloud.io/docker | sh
service docker startcurl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
  • 执行如下命令生成docker-compose.yml, diypassword 替换为自定义密码

mkdir -p ~/vipercd ~/vipertee docker-compose.yml <<-'EOF'version: "3"services:
  viper:
    image: registry.cn-shenzhen.aliyuncs.com/toys/viper:latest
    container_name: viper-container
    network_mode: "host"
    restart: always
    command: ["diypassword"]EOF
  • 执行如下命令启动VIPER

docker-compose up -d

首次启动会自动下载docker image

  • 等待系统启动(30s),访问  https://vps互联网IP:60000  登录服务器.(用户名:root 密码:自定义密码)

  • 在 平台配置-网络配置 页面设置回连 IP 为 vps互联网IP

如果 VPS 内存小于 1G,需要增加 2G 虚拟内存.

可参考https://www.cnblogs.com/chennl/p/10167088.html

更新命令

  • 删除原有容器

此操作会清空已有数据

cd ~/viper
docker-compose down
  • 更新 docker 镜像

docker-compose pull
  • 新建并启动容器

docker-compose up -d
  • 访问  https://vpsip:60000 登录服务器(用户名:root 密码:自定义密码)

  • 系统设置-网络配置页面设置回连 IP 为 vpsip

关闭/重启

  • 关闭容器

cd ~/viper
docker-compose stop
  • 再次打开(无需重新建立容器)

cd ~/viper
docker-compose start
  • 查看容器日志

docker logs viper-container
  • 进入容器命令行

docker exec -it viper-container bash

替换SSL证书

此处生成的证书用于控制台前端与后台WEB服务通讯的https加密,与reverse_https证书无关.

  • VIPER内置一套自签名SSL证书,用于实现前后端Https连接

  • 如果你所在网络环境存在流量监测设备,建议替换内置的SSL证书,绕过流量监测,方法如下:

docker exec -it viper-container bash    # 进入容器命令行/root/viper/NginxConf/gencert.sh        # 按照提示输入域名及密码service nginx restart                   # 重启nginx服务,稍等片刻后即可正常访问

校对时间

  • VIPER前端展示使用浏览器提供的时间,而通知/session心跳/模块日志使用后端服务器时间,可能会导致时间不同步,可以在vps主机中通过以下命令校对时间

apt-get install ntpdatentpdate cn.pool.ntp.org

登录平台

安装Viper成功后访问https://vpsip:60000打开登录界面

用户名:root,密码为安装过程中输入的密码(默认为:diypassword,请务必修改为其他强密码)


登录成功后进入Viper主界面


退出平台

  • 主界面中选择 平台设置>> 关于VIPER >>点击 退出登录 即可退出



使用教程

入门

生成监听

  • 选择 监听载荷-新增监听 ,进入新增监听页面



以 reverse_tcp 为例



请注意 LHOST 填写为 VPS 的外网 IP 地址,Viper会自动提示

如果使用国内的 vps 如京东云,阿里云等,请使用 reverse_https 并配置证书,绕过流量检测

生成载荷

  • 点击对应监听的 生成载荷 ,浏览器会自动下载一个包含免杀载荷的 zip 包



免杀载荷可能由于杀毒软件厂商添加 md5 标签而失效,可以自行编写 shellcode 加载器进行免杀

First Session

  • 将生成的 zip 包解压后上传到要控制主机中,然后执行 loader.exe



以蚁剑 webshell 为例,Session 是一种增强版的 Shell,后续 Session 统称为权限

  • 此时控制台已经获取了一个 Session



主机和 Session



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

  • 正方形图标表示主机的图标标签,可以通过 添加备注 自行修改

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

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

  • 半透明文字为主机的备注信息,可通过 添加备注 自行修改

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

在心跳时间超过 1 分钟后图标会变成红色,此时 VIPER 后台认为该 session 很可能已经失效,但是对于 http 类型的 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),便于直观判断

  • 权限操作中集成了 session 的所有快捷操作



主机操作中可以操作/查看/修改/更新以主机 IP 为 ID 的信息集



运行模块可以查看当前session及主机可以运行的所有模块



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

常见问题

  • 为什么 VIPER 部署在阿里云 VPS 上没有正确生成 Session?

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

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

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

基础

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

Session 克隆

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



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

  • 这样我们就有多个 Session 了,可以大胆的进行后续操作而不用担心权限丢失.



权限信息

  • 通过权限操作-权限信息查看 Session 的详细信息,以便于决定后续提权/扫描/信息收集的方向.



文件管理

  • 使用权限操作文件管理快捷打开文件浏览器



可以在文件浏览器中对文件进行可视化操作,就像操作本地文件一样进行浏览/上传/下载/删除/执行.
下载的文件可以在文件列表中查看



命令终端

  • 可以使用权限操作-命令终端打开 session 命令行



  • 命令终端集成了 Session 所有基础功能,可以在下方输入框输入命令,点击下方快捷键快速执行指定命令.点击 help 查看帮助.

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

主机信息

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



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



  • 点击读取缓存按钮会读取数据库最新缓存的信息

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

添加备注

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



常见问题

  • 为什么有些操作会显示超时?

由于网络延时原因实时操作可能不及时,如果超时可以尝试重试操作.

进阶

当我们获取内网主机的一个 Session 后,通常使用该 Session 作为跳板/入口点进行进一步的内网渗透.

本机信息收集

Session 信息
  • 选择 权限操作-权限信息 查看Session信息,信息用于确认该入口点拥有哪些权限,是否需要提权,是否在域中,操作系统等信息.

  • 权限信息,确定是否需要提权.域信息确定 Session 是否需要下一阶段进行域信息收集/域渗透.

主机信息
  • 在确定 Session 信息后我们还需要对已控制的主机进行更详细的信息收集.具体操作可以参考 主机操作-主机信息

  • 该信息主要用于确认主机当前有多少用户正在登录,主机版本,用于后续抓取密码(Windows)

  • 外网连接 主要用于确认主机的用途,通常通过该方法快速查找向外网提供服务的进程.

  • 内网连接 主要用于查看该主机连接了哪些内网 IP 地址,为下一步内网网络扫描/内网漏洞扫描做准备.一些数据库连接,RDP 连接,SMB 连接等还可以进行密钥提取等操作

  • 重要进程 信息用于识别主机的杀毒软件,远控软件等进程

本机密码
  • 感谢 kiwi ,我们可以抓取已控制 windows 主机的明文密码或 hash,为之后的渗透做准备,VIPER 中有多个模块可以完成该工作,以获取 windows 内存密码(新)为例进行演示



收集到的凭证信息还可以在凭证列表中查看



网络代理

一般我们将 NAT 后面的网络称为内网,当前内网分为两种

内网主机可直接访问互联网,互联网无法直接访问内网主机(如基于路由器的家庭网络)

内网主机不可直接访问互联网,互联网无法直接访问内网主机(如银行,公安等机要部门网络)

当前章节默认网络为第一种网络.

内网路由

  • 所谓内网路由是一种基于 Session 的透明代理,通过 Sesison 添加对应路由后,VIPER 中的监听/横向移动/漏洞扫描/Socks 代理,漏洞利用等功能会自动使用该路由连接内网对应的 IP 地址.

  • 假设 VIPER IP 地址为 45.45.45.45,Session 的内网 IP 为 10.10.10.10,如需连接 10.10.10.11

没有添加路由:

45.45.45.45 ==>10.10.10.11(这是无法连接的)

当添加路由后:

45.45.45.45 <=内网路由=>10.10.10.10==>10.10.10.11(这样就可以连接了)

  • 网络直连表示 VIPER 服务器在尝试连接到该内网在主机时采用直连的方式,很明显在绝大多数情况下由于主机在 NAT 后面是无法连接的,这时需要我们在 Session 上添加内网路由才能使 VIPER 连接到内网主机.



选择自动时 VIPER 会根据 Session 主机的网卡配置的 IP 地址添加路由

如果对方有多个内网网段可以选择手动添加

  • 如果添加了对应的路由,会提示连接该 ip 所用的路由 sessionid ,便于判断是通过那个 Session 进行路由.



  • 这是我们最常用的正向直连内网的方法,也是 VIPER 模块默认的连接内网方法

socks 代理
  • 上一节的内网路由只能由 VIPER 内置的功能进行调用,外部的工具(如 Nmap)是无法使用的,我们可以使用 VIPER 的内网代理模块搭建一个基于内网路由的 socks 代理供外部程序使用



socks 代理的流量转发是基于内网路由的,所以在添加代理前确保正确配置了内网路由

内网代理和内网路由是相互配合的

端口转发
  • 通常内网路由及 socks4a 代理可以满足我们常见的内网正向连接的请求.但有些时候外部工具无法直接使用代理(mstsc.exe)或某些工具需要反向链接(Cobalt strike),这时就需要端口转发功能.



详细帮助可以参考页面下方帮助

  • 如果需要总览所有端口转发,可以在内网代理中查看

外部工具
  • 有很多外部工具可以实现内网穿透型的代理,如老牌的 ew,htran 等,推荐两款稳定的代理工具,具体操作方法见对应的说明文档

https://github.com/fatedier/frp

https://github.com/FunnyWolf/TFirewall

内网网络扫描

  • 在我们完成跳板机的信息收集及代理搭建后,下一步就要看一下跳板机能连接内网的哪些主机,这时就需要使用内网网络扫描模块.

内网端口扫描与服务识别
  • 内网端口扫描与服务识别是最常用的内网网络扫描模块,模块本身会包含端口探测及基于指纹的端口识别功能



后台任务标签可以查看正在运行的任务



运行结果



扫描到的主机会自动在主控台显示出来,还可以点击开放端口按钮查看该主机开放的端口



模块所有的网络连接都是在内网中进行,所以扫描速度与准确度远高于基于代理的内网扫描.

如果你希望扫描流量更少,不触发内网中流量探测设备的告警,可以使用内网端口扫描,模块不会进行端口服务识别,使用方式与内网端口扫描与服务识别相同

如果你只对主机是否存活感兴趣,可以使用内网 arp 扫描

内网漏洞扫描

  • 在网络扫描完成后,我们可以通过漏洞扫描模块来确定我们可以攻陷哪些内网主机

在完成扫描之前需要确认已经建立了对应内网主机的内网路由,确保我们模块可以正确连接该主机

具体方法见 网络代理-内网路由 章节

MS17-010 扫描



还可以选择已知漏洞查看已扫描到的漏洞



内网横向移动

内网横向移动从方式上可以大概分为两种

  • 基于漏洞的方式获取权限,如 MS17-010,weblogic RCE 等

  • 基于凭证暴力破解方式获取权限,如基于获取到的凭证或弱密码破解其他主机的 smb,mssql,mysql 等

在完成利用之前需要确认已经建立了对应内网主机的内网路由,确保我们模块可以正确连接该主机具体方法见网络代理-内网路由

Cobalt Strike 上线

  • VIPER 可以通过虚拟监听+Session 克隆的方式方便 Cobalt Strike 上线.

  • 首先在 Cobalt Strike 建立监听



在 VIPER 中建立对应的虚拟监听



选择对应的 Session,然后运行 Session 克隆模块



运行后 Cobalt Strike 即上线



其他功能

此处介绍入门/基础/进阶未涉及的 VIPER 的其他基础功能.

msfconsole
  • 使用方式与原生控制台相同,支持选择自动复制,拷贝,删除,CTRL+C,CTRL+Z



生成载荷



系统状态



系统配置



常见问题

  • 为什么我无法抓取到本机密码?

抓取密码需要本地管理员权限,在 windows server2012 抓取密码有一定几率失败.

  • 为什么使用横向移动模块没有获取到 Session?

漏洞利用可能会失败/传递的凭证可能无法登陆该主机.

对方主机无法直接连接 VIPER,这时你可以使用正向监听(bind_xxx)尝试利用

全网漏洞扫描

总览

该功能类似于AutoSploit,当前只开放测试用途的模块



全网搜索/漏洞扫描

执行全网搜索功能前,首先要获取FOFA的APIkey,然后在  平台设置 FOFA API 中设置

  • 点击 新建任务 可打开新建任务界面



  • 选择模块后,可使用搜索功能查找当前互联网适配该模块的主机

每个模块内置指纹规则,如SSH暴力破解模块的适配规则为”protocol=”SSH”,可以在 说明 部分查看.用户输入的规则,如ip=”47.240.60.0/24″会与模块已有规则组合成 ip=”47.240.60.0/24″ && “protocol=”SSH”发送到后端,后端会调用FOFA的API查询,并将结果返回

  • 新建任务后会自动建立等待列表,Viper自动从列表中取出任务执行

Viper自动控制后台之多同时执行3个任务,无需担心流量过大问题

更多详细操作到如下网站查看

https://www.yuque.com/funnywolfdoc/viperdoc





END



Viper图形化红队攻击工具 杀软绕过 内网隧道 权限提升


本文始发于微信公众号(网络侦查研究院):Viper图形化红队攻击工具 杀软绕过 内网隧道 权限提升

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年5月19日02:16:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Viper图形化红队攻击工具 杀软绕过 内网隧道 权限提升http://cn-sec.com/archives/274737.html

发表评论

匿名网友 填写信息