用Process Monitor和/或Fiddler或别的东西logging应用程序的networking活动

我有一个棘手的应用程序,我需要监视。 它是一个Java .jnlp文件。 使用进程监视器,我已经能够识别它(它的javaw的实例)到我的networking中的其他服务器; 然而,运行Fiddler,它没有显示任何活动。 我知道stream量是HTTPSencryption的,它似乎是连接在我的服务器运行Web服务器(tomcat)的端口上。 使用进程监视器,我可以看到数据正在发送的长度和方向(发送/接收),但它甚至不会显示encryption的内容。

我想知道,如果有什么办法,我可以在这个程序中看到什么数据从我的机器发送?

更新

这个jnlp正在与之通信的服务器软件被安装为一个“包”,我在这个应用程序的目录中找不到任何SSL证书文件。 我用Wireshark,但没有私钥,我一直无法解密stream量。

运行一些代理(其他?)软件的VM网关的解决scheme似乎是最容易实现的,您将如何使用Virtual Box部署该解决scheme?

菲德勒不是一个嗅探器 – 这是一个代理。 除非你可以得到有问题的应用程序来使用代理,否则它的stream量都不会通过Fiddler运行。

Microsoftnetworking监视器将向您显示encryption的通信,Wireshark也是如此。 networking监视器3.x版本具有能够基于进程进行过滤的良好触摸(因为它们与OS“紧密耦合”)。

AFAIK,Java应用程序不使用操作系统的SSL“堆栈”,因此拦截到Windows SSL堆栈的实用程序也不会有帮助。

据推测,远程服务器没有运行一个很容易在里面窥探的SSL栈(因为你说他们正在运行Tomcat,也不太可能使用OS SSL栈)。

我会在虚拟机和基于Linux的虚拟机作为默认网关运行这个有问题的程序。 然后,您可以使用一些iptables NAT规则将连接尝试redirect到HTTPS-HTTP代理,HTTPS转HTTP代理转而将请求转发到HTTP到HTTPS反向代理,最终转发到您的服务器。 当代理和反向代理服务器之间处于HTTP状态时,您将能够loggingstream量。 这不是很高雅(而其他人可能会想到一个使用更less移动部件的更简洁的方法),但是你可以用现成的软件(我可能使用nginx的几个实例)完成整个任务。 据推测,违规的应用程序并不authentication它实际上正在与您的服务器通话,但是,如果是这样,您可以从服务器中导出SSL证书和私钥以使欺骗“完成”。

假设你已经从你的服务器获得了SSL私钥,并且你没有configuration你的服务器的SSL来完成基于RSA的密钥交换,那么你可以捕获这些stream量并使用Wireshark进行解密 。

在服务器上安装wireshark

Wireshark能够解密SSLstream量,只要您提供私钥即可。 如果你去编辑 – >首选项,然后从协议列表中selectSSL,那么有一个字段可以input私钥文件的位置,以及它应该使用的IP和端口。 如果你需要更多,Google会给你很多的演练。 (例如: http : //support.citrix.com/article/CTX116557 )

这当然假定你可以访问应用程序正在与之通话的服务器的私钥。 但是,如果是这样的话,你应该能够把这个关掉,没有太多的问题。

– 克里斯托弗·卡雷尔