网络匿名技术——洋葱路由
Table of Contents
本文已发于《黑客X档案》2011.1期
1. 前言
在网络通讯中,是通过发送数据包来传送数据。在对外通讯时(比如访问某一个网站),发送的数据包会通过通讯介质(网线、无线电磁波)传输数据,数据包里包含了来源地址(发送方)和目标地址(接受方),数据经过很多次路由后,最终到达目的地。因此本机地址都是公开的,从某种情况而言,包含本机真实的 IP 地址是非常危险的。例如,对某个网站进行渗透测试或者对某台主机进行扫描探测时,其目标主机就记录了发送数据包的源 IP 地址。所以一般入侵者都会使用代理或者 VPN 作为“跳板”来隐藏自己,从而达到不会轻易被追查到目的。但是单独的代理服务器也未必很安全,甚至有些代理服务器可能是陷阱,此时许多入侵者会使用“多级跳板”来更好地隐藏自己。
2. 洋葱路由简介
洋葱路由(The Onion Router,TOR)是专门用于网络匿名交互、防范数据嗅探和流量过滤而设计的软件,该项目最初是美国海军研究实验室赞助的,其匿名程度相当强大。其实洋葱路由很复杂。洋葱路由组成的网络中每个节点都是由全世界各个地点的志愿主机组成的,他们的主机上都必须运行了洋葱路由软件。
安装了洋葱路由的所有机器组成一个庞大的洋葱路由网络分布在各个国家、省份。他们之间形成了一条通讯链路。在通过洋葱路由传输数据时,首先确定第一个传输主机的首对象主机,然后对数据进行加密,加密过程发生在协议栈的应用层上。数据加密后,将其发送给首对象主机,然后首对象主机再选择下一个洋葱路由主机作为传输的路径,每经过一次,都会加密一次,倘若某个节点无法到达,就换另外一个节点再继续传。经过若干次隐蔽传输后以明文到达终点(具体解密我们不作关注),所以洋葱路由有很好的数据保密性。并且,每一台接受到数据的洋葱路由服务器都不知道这个数据包的源头是哪里传送过来的,仅知道它是从哪一台服务器(上一台服务器)发送过来并发送到哪里去(下一台服务器),中间的传输路径是不可得知的,从而保证了安全性。传输过程有点类似于数据结构里的链表。这个过程中传输的每台洋葱路由主机就好像一层洋葱皮一样,所以称之为“洋葱路由”。其过程大概如下图所示:
洋葱路由项目的官方网站是 www.torproject.org,不过貌似很难连接上,笔者这里不容易连接上的,如果读者无法连接也没关系,Tor 项目还有很多镜像站点,tor.hermetix.org 和 tor.kamagurka.org 都比较容易访问。Tor 支持 Windows、Linux 和苹果系统,因此,Tor 有非常好的跨平台兼容性。在这里笔者将首先介绍 Windows 环境下安装洋葱路由,及其具体的应用。
3. Windows 下安装洋葱路由
打开洋葱路由的官方站或者镜像站点,点击“Download”,然后找到“Microsoft Windows”分类下的“Tor Browser Bundle version 1.3.13”,并点击“Download”下载二进制文件包。运行 tor-browser-1.3.13en-US.exe 后将自动解压文件。经过数秒的解压的过程后,将在解压时选定的目录下(默认是当前目录)出现“Tor Browser”文件夹。
在具体配置和使用之前,需要先对 Tor Browser 文件夹下的结构做一番简单的了解:App 文件夹包含了相关的可执行程序以及运行时所需要的 DLL 文件,跟程序有关的三个二进制程序分别是 polipo(用于代理的程序)、tor(洋葱路由)、vidalia(图形化界面的管理程序);FirefoxPortabl 文件夹里是火狐浏览器;Data 文件夹里包含了一些设置文件;Start Tor Browser.exe 文件是一个启动洋葱路由的可执行文件,一般我们只需要运行它即可。
运行“Start Tor Browser.exe”后将自动启动 Vidalia——图形化界面配置和管理洋葱路由的程序。这里成功登录的话需要花费数分钟,并且有时是无法成功登录的,提示诸如“连接超时”一类的提示。之后有人对此问题给出了解决方法,只需要用一个网桥地址便可以解决,理论上,如果该网桥地址无法登录,再换一个地址又可以登录。
为了获取网桥地址,我们可以直接发送一封主题和内容都为“get bridge”的邮件到 [email protected],便可以在几分钟内收到一封来自 torproject 的自动回复邮件(不过,一定要用国外提供的邮箱服务来发送,比如 Gmail,国内的邮箱服务是收不到的)。自动回复的邮件中包含了网桥地址,如图1:
图1
为了方便起见,笔者建议一开始就设置网桥地址。首先来设置程序的语言,默认为英文,在程序的主界面点击“Settiings”按扭,在弹出的“Settings”对话框中,选择“Appearance”按扭,在“Language”下拉列表中选择成“简体字”。
然后设置网桥,在“Network”按扭中并勾选“My ISP blocks connections to the Tor network”选项,把刚才邮件所收到的网桥地址一一添加在列表之中,结果如图2:
图2
添加之后单击“确认”按扭保存所设置的,然后在程序的主界面点击“启动Tor”,或者关闭 Vidalia 重新运行“Start Tor Browser.exe”。启动 Tor 可能需要花数分钟才能成功启动,请读者耐心等待,如果很长时间未启动完成,可以尝试重新运行 Vidalia。启动成功后,系统托盘下的黄色洋葱头图标会变成绿色,程序主界面里的状态信息为“Tor网络已连接!”,如图3:
接着程序自动运行了 Firefox 浏览器,并打开了地址https://check.torproject.org,如果看到了网页中的“Congratulations. You are using Tor.”绿色字样,则证明洋葱路由安装成功。不过,如果关闭了 Firefox 浏览器,洋葱路由也跟着自动退出了,为此,我的解决方法是将目录下的“FirefoxPortable”文件夹重命名,之后登录洋葱会弹出一个提示“Vidalia 无法启动选定的浏览器”,点击“确定”即可。
4. 洋葱路由的应用
洋葱路由启动后,默认开启了 HTTP 代理和 SOCKS5 代理,其对应的端口号分别是 8118 和 9050。
在洋葱路由启动后,会自动打开火狐(FireFox)浏览器,位于 Firefox 浏览器的右下角有个“Tor Enabled”,这是一个名为 Torbutton 的 Firefox 插件,可以用来快速而方便地停用或启用 Tor 作为代理,如果不想使用 Tor 浏览网页,直接右键单击它,选择“Toggle Tor status”即可禁用。在默认打开的情况下,用 FrieFox 浏览任何网站都是以洋葱路由传递数据包的。在开启 Tor 代理的状态下,打开地址 www.ip138.com,可以看到,本机IP已经不再是真实的地址了,如图4:
图4
可以很方便地在 Firefox 右下角切换代理状态,倘若不用,只需鼠标右击它,选择“Toggle Tor status”,此时状态将变成红色字体“Tor Disabled”。
因为洋葱路由开启了 socks5 代理,那么就可以设置很多网络程序的代理地址了。但是,并不是所有支持网络访问的软件都可以使用代理,比如一般的扫描器,都不支持代理设置。在这种比较难堪的情况下,我们可以使用一款家喻户晓的代理设置软件——SocksCap。SocksCap 的原理就是强行截取程序的网络数据,然后发送给设置好的代理地址,并将代理服务器所返回给 SocksCap 的数据返回给对应的应用程序。
在简单安装 SocksCap 后,运行该程序,在主界面选择“File”菜单——“Settings”,打开 SocksCap 设置窗口,分别在 SOCKS Server 和 Port 里填入 127.0.0.1 和 9050,并将 Protocol 栏下的选项卡选成“SOCKS Version 5”——即 Socket 第五版本。点击“确定”后保存配置。
来到程序主界面,点击“New”按扭就可以添加任意一款可访问网络的程序强行使用配置好的洋葱代理了。笔者将以大名鼎鼎的 Nmap 扫描器为例,结合洋葱路由代理,来对某 IP 进行一次扫描。
点击“New”按扭,选择“Browse…”,将 Nmap 的 GUI 主程序 zenmap.exe 添加进去。最终结果如图5所示:
图5
然后点击主菜单的“Run!”按扭,Nmap 将以洋葱路由为代理。在 Zenmap 主界面里,将 Target 后面输入一个IP地址,点击“Scan”进入扫描阶段,因为使用了洋葱路由的缘故,速度将不会很快。扫描结果如图6:
5. Linux 下安装洋葱路由
因为洋葱路由是跨平台的,而现在 Linux 的应用也很广泛,再加上笔者平时工作学习所用的主系统也是 Linux,所以觉得不介绍在 Linux 中的安装方法,难免有些遗憾。笔者所使用的是 Ubuntu 发行版,将以此平台来简单讲解下 Linux 下的安装方法,在 Fedora 等发行版中安装方法基本上相似。
在洋葱路由的官方站或者镜像站点下载 Linux 平台的二进制文件。之后要对其解压,我默认下载之后放在用户目录(/home 下的为当前用户名的文件夹里)下的,为了方便,建议读者也放在这目录下,并在控制台里执行解压命令:
lu4nx@localhost:~$ tar xvf tor-browser-gnu-linux-i686-1.0.15-dev-en-US.tar.gz
经过屏幕几十秒的闪烁后,将会在目录下出现名为 tor-browseren-US 的文件夹,文件夹中有个名为“start-tor-browser”的脚本,执行它后便可以自动启动程序。在控制台里执行以下命令(#号代表注释,不作命令执行):
# 将tor-browser_en-US文件夹移动到/usr/share目录里,并命名为tor-browser lu4nx@localhost:~$ sudo mv -f tor-browser_en-US/ /usr/share/tor-browser # 进入新目录里 lu4nx@localhost:~$ cd /usr/share/tor-browser/ # 执行自启动脚本 lu4nx@localhost:/usr/share/tor-browser$ ./start-tor-browser Launching Tor Browser Bundle for Linux in /usr/share/tor-browser
启动之后的配置方法基本上与 Windows 中的相同,将不再做介绍。
6. 结尾
洋葱路由代理应用范围极其广泛,甚至使用于即时聊天软件之中,从而达到在网络中隐藏自己的目的。其余的功能将留给读者一一琢磨,不再做过多例子讲解。