如何configurationApache作为一个远程浏览器?

对于我的IT安全课暑期项目,我们必须以不同的方式规避学校/公司networking上的安全措施设置,并解释如何检测和避免这些黑客行为。

其中一个话题是(请原谅我的翻译不好):

阿尔伯特与他的笔记本电脑连接到学校networking。 他只能通过学校过滤代理访问万维网。 此代理configuration为只允许HTTP(TCP 80)和HTTPS(443)请求,并且某些网站(比如www.forbidden-forum.com)被过滤掉。 ICMP回应请求/回复是允许的。

阿尔伯特可以使用什么技巧从学校networking访问www.forbidden-forum.com? networking和系统pipe理员如何检测/防止这些技巧?

现在我不要求这个练习的答案 (这将会使我join这个课程的整个观点并没有教会我)。

到目前为止,我想到了以下几个技巧:

  • 使用ICMP隧道。 通过监视exception高的ICMP帧,可以轻松检测到。
  • 从手机分享互联网连接。 很难发现,特别是如果pipe理员没有对学生电脑的pipe理权限。
  • 在443 TCP端口上使用VPN。 可以通过监视到特定主机(VPN服务器)的exception高数量的443stream量来检测,但很难,因为它可能是合法的stream量。 pipe理员可以尝试使用networking浏览器连接到相同的主机,但可以检测到它不是一个适当的Web服务器。
  • 有一个外部Web服务器,充当远程浏览器 ,将所有内容redirect到www.forbidden-forum.com。

我的问题实际上是关于最后一点。 我认为有可能有这样做的软件,但它将不得不:

  • 根据需要连接到www.forbidden-forum.com
  • replace响应文档/ javascript代码中的所有URL以重新映射到自身,使得Albert的计算机从未实际尝试直接到达www.forbidden-forum.com。
  • 能够将replace的url翻译为原来的url。

实际上,我希望能够在学校访客networking(具有类似的限制)的项目演示中展示这个PoC,但是我真的很想避免自己“开发”一些东西。

我的开发人员的技能实际上并不好,我想知道:有没有一种软件能够做到这一点? 也许一个Apache模块或configuration?

它被称为反向代理,并且需要加载mod_proxy

configuration指令是:

 ProxyPass /localpath http://remote-site.example.com:8080/remotepath ProxyPassReverse /localpath http://remotesite.example.com:8080/remotepath ProxyPassReverseCookieDomain remote-site.example.com proxy.fully.qualified.domain.com ProxyPassReverseCookiePath /remotepath /localpath 

所以对于你的例子(再加上一点点):

 ProxyPass /ff http://www.forbidden-forum.com/ ProxyPassReverse /ff http://www.forbidden-forum.com/ ProxyPassReverseCookieDomain www.forbidden-forum.com benign.proxy.com ProxyPassReverseCookiePath / /ff ProxyPass /wl http://wikileaks.org/ ProxyPassReverse /wl http://wikileaks.org/ ProxyPassReverseCookieDomain wikileaks.org benign.proxy.com ProxyPassReverseCookiePath / /wl 

打开http://benign.proxy.com/ff将显示来自http://www.forbidden-forum.com/的内容, http://www.forbidden-forum.com/ http://benign.proxy.com/wl将打开http://wikileaks.org/

http://benign.proxy.com/上提供完全无害的(可信的)。 如果有人试图“检查有效性”,他们会看到一些值得信赖的页面。

更好的是,通过HTTPS提供代理来隐藏转发的URL(我将作为一个练习离开你)。

这种方法可以通过所谓的“线路中的颠簸”(一种完全可信的中间人透明代理)来绕开。

如果用户没有完全控制客户端主机,他们将容易受到networking中的碰撞,但是可以手动validation密钥指纹以确保隐私,并且如果密钥不validation,则避免build立连接。

用户还需要注意其他SSL问题(例如,无效证书,sslstrip等)。

你所描述的基本上是一个代理本身; 一个接收来自浏览器的web请求的软件,满足它们,并将接收到的数据传回给浏览器。 整个URL重写的问题可以通过让浏览器预先知道它通过代理连接到Web来避免。 然后,这个问题简化为:“我如何访问这样一个代理服务器,考虑到我拥有的networking访问权限,这样就不能轻易发现我正在这样做”。

Apache有这样一个模块,之前有人问过这个模块, 请参阅如何使用Apache作为浏览器的代理? 更多细节。