课题背景:
1、公司所有电脑都通过一个proxy server连接外网(只允许内部网络发出的HTTP请求通过发送到外网,而来自外网的所有数据包都会被拦截)
2、现有公司一员工想用家里的电脑HOME控制公司内的某台电脑WORK
3、他可以在这2台电脑内任意操作
Proxy server的内部监听端口:3128
思路:
现有可以远程操控电脑的基本也 Telnet 和 SSH为主,但是 Telnet是不安全的,所以选择 SSH。
在HOME和WORK各运行一个程序,用http协议穿过proxy传递、接收信息到达建立ssh连接的目的。
具体:WORK 发送SSH Server消息用 POST 请求穿过Proxy到HOME,然后HOME紧接着将SSH-Client的回答包装成一个http回应发回到proxy,然后proxy自动回发到WORK,这样就到达了数据输出跟传入的目的。
这样就可以无视proxy的存在,自由操作公司内网电脑了
课题加深:
现公司系统网络管理员发现员工的这一行为以后,要编写一个"过滤器"来加强proxy的功能到达阻止这种tunnel的建立。
思路:编写这个“过滤器”并将它放在WORK与Proxy之间,也就是说Work的HTTP请求a:先接收我们“过滤器”的检查,如果没有问题再发送给proxy,b:对proxy的回应也接收检查,如果都OK才将信息回发给WORK。但是如果a、b中其中一者有问题,这个tunnel就会被拦截。 具体的如何“检查”可以先参考RFC的HTTP文档后,再对http的请求跟回应做处理(比方说如果HTTP请求GET中的RUL太长或者包含SSH都字符,我就可以基本任何这个请求时tunnel的信息,只要拦截就能破除这种tunnel)
如果有朋友敢兴趣可以到我的下载页下载原代码。