Juniper ScreenOS认证后门简析

1 ScreenOS后门漏洞背景介绍

之前也多次爆出过路由器的后门漏洞,但大都是厂商故意为之并且厂家的开发人员也都是知情的。一般来说一些网络设备,如交换机或者路由器等设备,开发人员为了方便自身验证,日后的程序升级或者输出观察调试日志可能会在网络设备上预留一个万能密码或者在固件中内置一个TFTP或者FTP的服务。通过更改http发包数据中的User-Agent值或者直接使用万能密码即可登录该网络设备,这次暴露出ScreenOS的后门便属于一个万能密码类型的后门。

12月18日Juniper发了一个报告,由 Juniper Networks 销售的部分型号的防火墙的中出现的漏洞,具体表现为防火墙搭载的ScreenOS操作系统中发现未经授权的代码,可以让攻击者获得对 NetScreen 设备的管理权限和解密VPN数据。Juniper的公告称,搭载ScreenOS 6.2.0r15 到 6.2.0r18 还有 6.3.0r12 到 6.3.0r20 的防火墙都受到影响,需要立即修复。

公告中提到:“漏洞允许在受影响的设备通过 SSH 或 Telnet 进行未经授权的远程管理访问还可能引起监控虚拟网络流量的攻击者对流量进行解密。

2 ScreenOS后门漏洞分析

2.1 万能密码登录

ScreenOS的相关文档可以从Juniper的官方网站获得。

http://www.juniper.net/techpubs/en_US/release-independent/screenos/information-products/pathway-pages/screenos/product/index.html

 

1

在国外的安全研究人员分析基础上我们也下载到了相关固件对ScreenOS做了一些分析。

对于受影响的版本6.2.0r15 to 6.2.0r18 and 6.3.0r12 to 6.3.0r20,Juniper提供了一个新的编译版。6.2.0和6.3.0。新编译的版本删掉了后门相关的代码。

虽然都使用了SCreenOS的管理系统但是Juniper不同防火墙中的型号搭载的固件也是不尽相同的。SCreenOS不是基于Linux,而是一个独立的嵌入式的操作系统。其中SSG500系列的固件使用了X86的架构。SSG6和SSG20系列固件使用了 ARMB的架构,由于没有加入一些干扰静态分析的保护措施,解压后的固件可以直接被IDA识别分析。

固件下载地址为 https://github.com/hdm/juniper-cve-2015-7755/tree/master/firmware

我们下载到了这个固件进行分析,ssg5ssg20.6.3.0r19.0.bin。IDA载入后设置如下。

2

3

注意这里的设置。一般来说网络设备的固件都不是x86架构的。如之前的dlink通过伪造User-Agent值就可登录管理界面的后门。其中dlink的固件就是mips架构的。通常在IDA反编译的代码中查找路由器的万能后门的时候都可以先搜索下关键字auth。

存在漏洞的固件修补之前

4

可以看到万能密码存在于偏移0x 0013DC60处。密码为 <<< %s(un=’%s’) = %u

密码故意伪装的像是调试输出的字符串。

固件修补之后

5

可以看到存在漏洞地方已经被修补掉了。

2.2 关于解密VPN数据

Juniper官方对于ScreenOS操作系统的硬件设备VPN相关的描述可以参考这个网页。

http://kb.juniper.net/InfoCenter/index?page=content&id=KB8402&actp=search

7

参考相关的文档我们可以看到JuniperScreenOS的网络设备对于PPTP和L2TP/IPsec等多种类型的VPN链接都是支持的。其中PPTP的加密方式相对来说是最弱的,而L2TP加密的安全性是由预共享密钥或者证书来进行安全性的保障的。

8

虽然目前暂时还无法复现对VPN数据的解密。但是由于流量还有VPN连接包括VPN的握手过程都是要经过防火墙的,如果防火墙内部存在缺陷导致可以获取VPN的密钥,那么恶意的攻击者通过抓包截取到经过防火墙的流量,然后使用密钥对加密后的流量进行解密也是有可能的。

3 JuniperScreenOS后门认证漏洞排查和修复方案

可以通过登录SSH和telnet是否成功来验证该后门是否存在。

使用namp扫描确保Juniper网络设备开启22(SSH)端口或者23端口(telnet),然后使用ssh和telnet尝试使用后门密码   <<< %s(un=’%s’) = %u    进行登录。如果成功登录证明该漏洞存在。

目前 Juniper官方已经为受影响的网络设备发布了新的编译版本6.2.0和6.3.0。

Juniper的管理员可以通过web管理界面进行ScreenOS的升级

在左边的导航栏依次找到configuration—update—ScreenOS/key

6

选择需要升级的ScreenOS的文件,点击apply进行升级。升级完成之后重启防火墙即可。

Written by 漏洞应急响应中心