专栏首页FreeBuf新痛点:APT组织PawnStorm 0Day如何绕过Java点击播放保护

新痛点:APT组织PawnStorm 0Day如何绕过Java点击播放保护

几个月以前,趋势科技发现了APT组织Pawn Storm利用之前未经披露的Java漏洞(CVE-2015-2590)进行攻击。在那之后,我们注意到一个被用于染过Java点击播放(click-to-play)保护的独立漏洞。

第二个漏洞(CVE-2015-4902)现在已经在Oracle定期的季度更新中被修复,并将此归功于趋势科技的发现。

FreeBuf百科:Click-to-play

Click-to-play要求用户在Java应用程序执行之前,在空白处单击一下。实际上,它要求用户只有在十分确定需要运行Java代码的情况下才会运行。

绕过click-to-play保护技术允许恶意Java代码在没有显示任何警告窗口的情况下运行。Pawn Storm对于这一手段运用得炉火纯青,因为它在今年年初针对北约成员以及白宫进行的攻击中利用了这些漏洞的exp。Pawn Storm本身就以超高频率运用着0day漏洞:上个星期,就被发现使用了未补丁的Adobe Flash漏洞实施攻击(这个漏洞已被Adobe修复)。

Oracle在我们报告这个漏洞时就承认了漏洞的存在。用于绕过这种保护的方式很巧妙,在我们讨论漏洞之前,有必要先对背景信息进行一下梳理。

相关背景介绍

Oracle为应用程序在用户桌面启动提供了Java网络启动协议Java Network Launch Protocol(JNLP)技术,允许调用远程Web服务器托管的资源。它可以用于部署一个应用程序或者Web Start应用程序。在攻击场景中,使用JNLP部署应用程序。

Java提供了一个目录服务,允许Java软件用户通过一个名字来发现与查找目标。这就是所谓的Java命名与目录接口(JNDI),Java命名与目录接口。这个机制是Java远程过程调用的基础,又名远程方法调用(RMI)。JNDI与这个exp相关的一些基础概念,如下所示:

· Context——一组name-to-object绑定。换句话说,Context对象能够解决名字与对象间一一对应。对象包含几种类型;其中RegistryContext便是这些类型之一。 · ContextFactory——这可以创建一个用于调用的Context对象。RegisterContextFactory则是用来创建ContextFactory对象的。

EXP的工作原理

图1. 如何绕过click-to-play

攻击者在攻击前需要完成三个任务:

1、将图2中的HTML代码添加到一个恶意网站; 2、创建一个具备公共IP地址的RMI注册服务器; 3、创建另一个同样具有公共IP地址的web服务器,用来保存恶意Java代码。

图2. 插入恶意网站的HTML代码

攻击究竟是如何进行的?

1、在受害者机器上,jp2launcher.exe进程是由web浏览器进程forke而来,并且从恶意网络服务器上请求init.jnlp。以上操作都是使用图片二中的HTML代码完成的(.jnlp是使用JNLP技术启动Java代码的后缀)。

2、恶意网站发送回init.jnlp,现在再来看一下文件的内容:

图3. Init.jnlp内容

红色圈中的内容并不寻常。进程级的标签含义可从Java开发人员指南中找到。这类应该可以实现Java接口DownloadServiceListener。但是,攻击者使用javax.naming.InitialContext。然而,JRE并不能用于检测并让代码执行。

3、Java类Javax.naming.InitialContext的构造函数要从恶意网站请求应用程序的JNDI.properties(即JNDI配置文件)。

4、恶意网站服务器发送JNDI.properties到客户端。下面让我们来看看这个文件的内容:

图4. JNDI.properties内容

Java.naming.factory.intial 指定了初始context factory类。 java.naming.provider.url指定目录服务器提供者的地址为.javax.naming。InitialContext的构造函数会创建com.sun.jndi.rmi.registry.RegistryContextFactory对象,并使用它来创建初始上下文。

5、在创建初始上下文期间,它会与RMI注册服务器沟通来获取上下文信息。在图4中,这个java.naming.provider.url=rmi://{恶意服务器}/Go。这个URL使用了以下格式://[主机]/[对象]。因此,[对象]是Go。这便会允许客户端找到EMI服务器上的对象信息。

6、RMI服务器送还它的回复并允许客户端通过HTTP服务器从恶意Java类请求Go.class。

7、服务器发送Go.class内容给客户端。Java类中的代码在目标机器上运行的。

步骤3-7将在javax.naming.InitialContext的构造函数内进行,这不失为一个相当聪明的绕过click-to-play保护方式。

这里我们强调了用于复杂系统例如Java中安全保护特性(例如click-to-play)的重要性,对于已存在新特点进行审计是个必要过程。这确保了“优秀”功能和安全性都不会丧失。

如果Java仍能继续被广泛使用,绕过click-to-play保护的意义将是深远的。任何偶然发现的0day漏洞都将会利用。

这个特殊漏洞已经在最新的Java版本中获得了修复。用户应该尽快下载最新版本Java,尽管在一些情况下Java已经被慢慢淘汰。依赖Java的机构应该考虑是否。

威胁指标IOC

JNLP文件用于启动这一exp链的SHA1值为:38F643B48B35B765326CEE6A1D16E1C35DCA93FD。

*参考来源:趋势科技,作者/Jack Tang,编译/哆啦A梦,转载请注明来自黑客与极客(FreeBuf.COM)

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java官网曝本地文件包含(LFI)漏洞,可读取超过460位Oracle公司员工邮箱

    微信号:freebuf 意大利安全研究人员Christian Galeone最近发现一枚Java官网存在的重大安全漏洞,该漏洞可读取网站敏感数据,包括超过460...

    FB客服
  • 新年伊始,Java惊爆首个0day

    日前,Java又爆了一个新的0day,可能让攻击者获取计算机管理权限,Java 7 Update 10或更早的版本中存在该漏洞,该漏洞可以允许未经身份验证的远程...

    FB客服
  • 负载恶意软件HawkEye的VB Inject样本分析

    恶意软件HawkEye的利用大多都是通过钓鱼邮件分发,利用office直接启动HawkEye主体或者一些经过加密的程序,本文中的VB Inject属于后者,也把...

    FB客服
  • Java程序员必读的9本书

    本文列出的9本书在Java程序员界都是被认为很棒的书。当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java。这个问题也就表明...

    技术小黑屋
  • 14款Java开发工具【面试+工作】

    1、JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的J...

    Java帮帮
  • Java 语言有哪些特点?

    Java语言共有十大特点,分别为:简单性、面向对象、分布性、编译和解释性、稳健性、安全性、可移植性、高性能、多线索性、动态性。

    黑洞代码
  • Java工程师学习指南 入门篇

    最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写...

    黄小斜
  • Ubuntu下安装Java

    白墨石
  • 最新 Java 核心技术教程,都在这了!

    以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货,2021最新更新版,本文会长期更新。

    Java技术栈
  • Java转行大数据可行吗?

    提到大数据,很多人会想到Java,提到Java,也会想到大数据,二者有什么关系呢?哪个发展更好?

    加米谷大数据

扫码关注云+社区

领取腾讯云代金券