欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

使用JavaSnoop测试Java应用程序

来源:本站整理 作者:佚名 时间:2017-06-06 TAG: 我要投稿

我们都知道Burp,Paros,WebInspect等工具可以拦截基于Web的应用的流量,也可以自动化对Web应用进行安全检测。然而胖客户端也有这种需求,我们没有自动化的工具可以用来对胖客户端应用程序进行自动化的安全检测
目前针对.EXE应用程序流量的拦截和编辑软件已经有很多了,在本篇文章当中我们将讨论一个可以用于评估JAVA应用程序安全性的工具。
我们来看一下目前想要对JAVA胖客户端程序进行安全测试的各种方法以及各自的优缺点。
方法1:拦截编辑流量
应用程序需要使用HTTP进行通讯。
应用程序有配置代理的设置。
应用程序不使用加密、自定义协议或序列化对象。
如果满足上述的所有条件,我们可以使用Burp等代理工具来捕获并且修改通讯的流量进行安全检测
方法2:修改和攻击客户端
可以识别的JAR文件
反编译
审计源代码
可以修改源代码并且重新编译客户端已用来发送自定义的攻击
在反编译class文件时通常会发现反编译后的源代码有多个编译错误,这些错误通常由反编译器本身的错误导致,这表明反编译与重新编译的过程在实践当中并不能100%确定成功。这种方法的缺点是流程复杂、繁琐、因为一些编译错误而浪费大量的时间来调试修改代码。
使用上面的两种方法对JAVA胖客户端应用程序进行安全测试时且少灵活性,并且有一定条件限制,很有可能出现两种方法都无法完成的情况。Aspect Security开发了一款名为JavaSnoop的工具来解决这些问题。
JavaSnoop简介
JavaSnoop工具提供以下功能
允许在JVM中轻松拦截任何方法
允许编辑返回值和参数
允许将自定义的Java代码插入到任何方法中
能够处理任何类型的Java应用程序(J2SE,Applet或JavaWeb应用)
能够处理已经运行的Java进程
不需要任何目标的源代码(原始的源代码或者反编译过后的)
JavaSnoop的这些功能使得我们可以对任何基于Java的应用程序进行安全测试。
JavaSnoop的工作原理
Java 6.0+包含了Attach API功能,可以对正在运行的或者要运行的JVM进行无缝的监控和修改,Attach API不是Java的标准API,而是Sun公司提供的一套扩展API,用来向目标JVM"附着"(Attach)代理工具程序的。JavaSnoop可以使用Attach API和Instrumentation类(有助于在运行时修改JVM)跳转到机器上的另一个JVM,并在该系统上的类方法中安装各种“钩子”。这些钩子然后被代理用于与GUI通信,允许JavaSnoop用户“拦截”JVM内的调用。
JavaSnoop使用的钩子技术可以执行以下操作:
1.编辑方法参数
2.编辑方法返回值
3.暂停方法
4.在方法开始时执行用户提供的脚本
5.在方法结束时执行用户提供的脚本
6.将参数打印到控制台(或文件)
安装JavaSnoop
可以从以下URL下载JavaSnoop工具:
https://www.aspectsecurity.com/research/appsec_tools/javasnoop/
安装步骤:
步骤1:
从以下URL安装JDK 1.6:
http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html
步骤2:
设置JAVA_HOME环境变量,步骤如下:
开始>我的电脑>属性>高级系统设置>高级>环境变量。设置一个新的用户变量
java_home:路径指向JDK 1.6的文件夹,如下图所示:

步骤3:
Applet和Java Web Start应用程序默认配置运行在严格的沙箱中。显然内部类和私有域的修改通常是不被允许的。这意味着我们必须将安全性“关闭”。JavaSoop中提供的startup.bat文件实现了这个需求,我们需要使用startup.bat来运行JavaSnoop。
该批处理文件将实现以下功能:
1.检查环境变量JAVA_HOME的值是否包含JDK1.6的路径
2.关闭JavaSnoop的安全性
3.启动JavaSnoop工具
4.退出工具后,再次将Java安全性恢复为安全浏览
将JavaSnoop注入到进程中:
JavaSnoop工具提供了两种注入进程的方式。
1.现有进程:
我们可以通过从可用的正在运行的进程列表中选择一个已经运行的进程来注入JavaSnoop.

2. 创建一个新的进程
我们也可以通过选择要拦截的JAR文件来启动一个新进程。

JavaSnoop工具界面的功能
JavaSnoop工具的主界面分为四部分,如下图所示:

第一部分
在这部分中,我们选择需要hook的类或方法。界面提供了一个按钮来添加一个新的hook。然后我们可以从列表中提供的类里添加一个方法,如下图所示:

第二部分
本部分提供了用于设置截取方法调用的各种选项的功能。 我们可以设置正则表达式条件来匹配和拦截来方法调用的内容。如下图所示:

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载