Juniper双因素VPN与Linux
David Fletcher // 在最近的一次内部渗透测试任务中,我需要使用Juniper VPN访问目标网络。但有一个小问题:Juniper并不正式支持Linux操作系统。Juniper Pulse和Pulse Secure客户端仅适用于Windows和OSX。
由于我没有OSX系统,本将被迫放弃许多非常有用的工具。经过大量搜索,我找到了几种解决方案。然而,许多方案较为复杂,需要投入时间,这对于我的临时访问需求来说并不划算。
最终,我发现以下帖子对成功连接最为有用: https://alexeymoseyev.wordpress.com/2014/10/29/junos-pulse-vpn-client-on-linux-two-phase-auth-64bit-how-to-make-it-all-work/
由于我只是临时连接该设备,我绕过了Grease Monkey脚本,使用了一个简单的替换方法。过程如下所述。
OpenConnect
首先,使用您喜欢的包管理器安装OpenConnect。为了使此方法奏效,您必须运行OpenConnect v7.05或更高版本。从v7.05开始,OpenConnect客户端包含了–juniper
开关,提供对Juniper VPN设备的“实验性”连接。此开关的文档可在以下URL找到:
http://www.infradead.org/openconnect/juniper.html
在OpenConnect的man页面或帮助中,您不会找到此信息或该开关的证据。
Cookie管理器
接下来,您需要一个cookie管理器。为了准备构建SSL隧道,您需要登录VPN Web界面。这会将DSID会话cookie放入浏览器cookie存储中。一旦它在那里,我们将获取该值并将其传递给命令行上的OpenConnect以完成身份验证。为此,我使用了Cookies Manager+,这是我为Web应用程序渗透测试任务而安装的。
完整过程
现在所有先决条件都已满足,我们将登录Juniper Web界面。使用您的用户帐户、PIN和令牌值登录。您的PIN在首次访问VPN Web界面时设置。下面看到的密码是您的PIN和当前双因素令牌值按顺序连接而成。
成功验证到Web界面后,您的浏览器将为Juniper站点设置多个cookie。打开您的cookie管理器查看它们。其中一个cookie值的名称为DSID。此值对于完成身份验证过程是必需的。将该值复制到剪贴板中。
接下来,打开一个root shell并执行以下命令以与目标VPN集中器建立SSL VPN隧道。
执行此命令后,您应该看到类似于以下的输出,指示协商过程的进度。
瞧……与Juniper SSL VPN集中器的成功隧道协商,且几乎零开销。
评论
Stan M.
2016年9月14日 @ 7:46 pm 这对我来说有效,但到某一点为止:
警告:Juniper Network Connect支持是实验性的。 它可能会被Junos Pulse支持取代。 ……这一切都是正确的…… 已连接tun0为10.50.0.22,使用SSL 此时,它无限期挂起,我从未得到“ESP会话”输出。 有任何帮助吗?
David Fletcher
2016年9月15日 @ 10:54 am 您尝试在另一个终端会话中连接到任何内部计算机了吗?当您连接到VPN集中器时,除非终止VPN会话,否则您无法重新获得终端窗口的控制权。因此,您必须打开一个新窗口来尝试使用隧道适配器。看起来您实际上已连接,因为隧道适配器已创建(tun0)并且您已被分配了一个内部IP地址。
Jonathan R
2016年9月30日 @ 3:39 pm 您刚刚省了我很多麻烦! 感谢您花时间写这篇博客文章。
BHIS
2016年10月3日 @ 7:41 am 这让写博客文章的所有汗水和泪水都值得了!感谢您告诉我们它有帮助!
Michael
2016年10月27日 @ 12:42 pm 我的尝试导致“得到HTTP响应:HTTP/1.1 302 Found”,随后是“服务器返回意外的302结果”和“创建SSL连接失败”。您以前遇到过这个吗?
lupo lupov
2017年4月4日 @ 1:08 pm 非常感谢,真的非常非常感谢。 最终它每次都有效,不像现在……随机连接20次中的1次。