加密代理服务器通信行为安全性研究
2015-03-20曾建琼
曾建琼 胡 勇
(四川大学信息安全研究所 四川 610065)
0 引言
随着信息时代的到来,互联网已经成为全球信息发布、传播和共享的主要基础设施之一。由于某些因素使得人们在国内上网,免不了要和HTTP代理服务器打交道。代理服务器作为转发中间人,人们在网络上的一切行为都可能被其严密监视,因此对用户的个人隐私和安全有着极大的威胁。影响代理服务器数据传输的不安全因素主要来自硬件、软件、环境、数据传输过程等带来的不安全因素,还包括个人信息资料保密的不安全因素以及系统资源访问的不安全因素等。代理服务器种种不安全因素的存在,使网络安全受到威胁,也为黑客攻击网络远程教学系统提供了可能。可以预见,随着网络技术的不断发展及Internet的普遍应用,代理服务器的数据传输的安全问题也会更加突出。
HTTP代理服务器分加密代理服务器和普通代理服务器。如果我们在自己的电脑上运行了某些软件之后就能访问之前不能访问的网站,那么很可能是加密代理;如果我们直接在浏览器中设置代理服务器,不用运行任何软件,那么这种类型的代理服务器就是普通代理。一般来说,如果加密代理软件没有问题,加密代理的安全性要好于普通代理。加密代理服务器软件广泛采用了不公开的密码算法、密码协议、加密代理、动态地址搜索等技术。本文采用逆向分析技术,对一款加密代理服务器软件(Z软件)的工作原理进行了完整的再现,透彻的分析出了其通信和数据传输过程,并对其整个过程中的安全性进行了研究。
1 通信协议分析
为了分析Z代理软件的通信协议,实验仅需一台Windows操作系统的PC客户机,同时在本机上预安装Wireshark,一款网络封包分析软件。通过捕获客户端与服务器的通信数据包,分析它们的通信过程,最后得出Z代理软件的通信协议。
Wireshark是一种网络数据包分析工具。网络数据包分析工具的主要作用是捕获网络包,并尽可能详细的显示数据包的情况。它使用WinPCAP作为接口,直接与网卡进行数据报文交换。使用该工具时,首先在Z代理软件运行之前启动Wireshark的数据包捕获功能,然后通过对数据包的IP、协议、端口、长度和内容进行过滤,从大量的数据包中提取出满足如上条件的数据包,缩小检索数据包的范围。
可以利用Wireshark的协议分析功能从过滤得到的数据包中提取出应用层的数据,大部分代理软件的应用层协议组织的数据在网路上加密传输,而且与之通信的服务器IP地址并不固定,按照常规比较应用层数据体中固定字节或者规律性字节的含义,大致分析出Z代理软件的通信过程。客户端在用户启动后,与其代理服务器通信过程如下:
(1)网络检测:客户端首先会向固定IP地址发送3个ICMP探测包,用以检测网络是否畅通。
(2)代理服务器IP地址和端口获取:如果网络畅通,客户端会通过HTTPS加密传输协议向固定的合法网页地址获取代理服务器的IP地址和端口,由于是通过HTTPS加密传输,因此这些IP地址得到了很好的隐藏,同时访问的这些网页对应的IP地址是在不停的更新变化,因此使国家防火墙无法对固定的IP地址进行封锁。
(3)通信密钥协商:发送UDP请求,建立握手连接,交换传输密钥,为正式发送数据做好准备。
(4)数据通信:客户端通过加密传输向代理服务器发出Web资源访问请求;服务器解密出客户端请求,并向网络Web资源服务器明文转发客户端请求;Web服务器响应请求,并明文发送响应信息给代理服务器;代理服务器把接收到的响应信息加密转发给客户端,客户端再解密显示在浏览器中。
经过以上四个通信过程,最终建立Z代理软件客户端和外部网络Web资源之间的连接,实现客户端对外部Web资源的合法访问,达到数据通信的目的。
2 通信数据安全性分析
由于客户端在获取服务器IP地址和端口号时,是通过HTTPS加密传输,因此这些IP地址能被很好的隐藏,同时访问的这些网页的IP地址在不停的更新变化,所以国家防火墙(GFW)无法对固定的IP地址进行封锁。除了对代理服务器进行很好的隐藏外,Z代理软件对用户数据也进行了很强的加密,从而使网络数据不具备特征性。因此对其通信数据的进一步分析具有重大意义,其中最主要的任务是解析其通信密钥协商过程,获得其加密算法和密钥,还原会话过程。
由于Z代理软件客户端与代理服务器之间的通信是经过加密传输的,因此通过Wireshark对其通信数据包的抓取和分析,并不能得到很详细的数据信息。而且Z客户端软件有很强的反调试技术,所以使用特定的调试器对软件进行动态调试分析,获取加密和解密后的数据,与此同时,结合IDA静态反汇编分析技术,进一步解析客户端与代理服务器协商通信密钥的过程。
2.1 密钥协商过程分析
经过反汇编和逆向调试分析发现,为了逃避监控手段,Z代理软件采用了很强的加密方法来处理用户数据,主要有RSA、AES和RC4。RSA公钥加密算法是一种非对称密码算法,需要一对密钥,其中公钥加密,私钥解密。RSA加密算法被用于通信前期的密钥协商过程,然后分别用AES和RC4算法加密通信数据包头部和数据部分。客户端和服务器AES密钥协商过程如下:
(1)客户端随机生成32个字节的AES密钥,经过RSA的公钥加密后发送给服务器,告诉服务器以后发给客户端的数据都用该密钥加密。
(2)服务器在收到这个包后用本身的私钥解密,得到客户端AES密钥。然后再更新AES密钥,最后用客户端的AES密钥加密服务器更新后的AES密钥,并发送给客户端,告诉客户端以后发往服务器的数据都用这个密钥加密。
(3)客户端在收到服务器的响应包后,用自己本地AES密钥解密,得到了和服务器的通信AES密钥,以后发往服务器的数据都用这个密钥加密。
RC4密钥的协商过程与AES密钥协商过程类似,只是使用的RSA公钥不同。所有的密钥协商完成后就开始进行数据通信了,在通信过程中,还会不定期的更新客户端的本地密码本。
客户端发往服务器的第一个数据包头部信息中:(1)每次发送第一个包时,头四个字节固定为0x00表示是发往服务器的包,而如果是0x01的话则表示是从服务器回来的包。(2)第二个四字节代表的是用来进行校验用的四字节。(3)第三个四字节包含数据包长度信息,如果是第一个字节为0命令号的数据包,则当前四字节内容和0x7FF进行按位相与操作后则是数据的有效长度,如果是03或者04命令号的包,则该四字节右移0x15位后则是包的有长度。(4)第四个四字节中高四个比特位表示的是命令,如果是0或者2则表示该包携带密钥,如果是为3的话则表示服务器发送过来的应答请求,如果是4则表示是确认信息,不包含有效的信息,而剩下的则表示的是序号。(5)紧接着是内容固定为0x1500的两个字节数据。(6)接着的32个字节为本地客户端的原始密钥种子。经过扩展后变成了256字节的轮密钥,以后从服务器发过来的数据均用该密钥解密。(7)最后是一些随机产生的数据。
从服务器发送回来的数据包格式与客户端发送的数据包格式类似,在数据包类型前面增加了0x10字节随机数,在固定值0x1500前面增加了八个字节的未知信息。
2.2 通信数据包格式分析
密钥协商完成之后,代理客户端和服务器就使用协商好的密钥进行加密传输,其中AES密钥用于加密通信数据包的头部信息,RC4密钥用于加密通信数据包的数据部分。客户端在收到服务器的响应包后,会利用序号发送一个表示收到应答包的数据给服务器,然后分别把数据包的头部信息和数据信息发送到本地进程的两个不同端口解密。
通信数据包格式的头部信息比密钥协商数据包的头部信息短,经过解密后的从服务器发送回来的数据包头部信息中:(1)第一个十六字节是随机参数的数据;(2)第二个十六字节中头四个字节为0x01表示是服务器发送过来的数据,第二个四个字节右移0x15位后则表示的是数据包的大小,接着四个字节用来进行校验,最后四个字节中,最高四个比特表示命令号,剩下的字节表示序号暂时没有发现什么用,不过如果是回来的同一个应答的话,则该四字节相同。
本地进程的另外一个端口受到数据后,利用一个256字节的密码本进行解密,该解密算法为反馈解密,每解一包会把256个字节的更新一次。密码本过一段时间后会利用服务器发送过来的包更新一次。
3 结论
本文就目前代理服务器的安全问题,对某款代理软件的通信数据安全性进行了研究。首先通过网络抓包大致分析了Z代理软件的通信协议,然后采用反汇编逆向分析技术详细分析了其通信密钥协商过程和通信数据包格式。得出以下结论:本文所分析研究的Z代理软件在密钥协商过程中存在一定的脆弱性,黑客可以利用它来实现网络数据的截取以及还原,从而获得用户的个人信息以及通信内容信息,给用户的安全带来威胁。同时本文为代理软件的深入分析,如加解密算法研究和通信数据还原,打下了基础,还可以作为分析这一类软件的参考。
[1]陈帆,谷大武等.FreeGate软件的逆向分析.全国计算机安全学术交流会论文集(第二十三卷).2008.
[2]韩纪宏.一类互联网软件的分析与控制.上海交通大学.2007.
[3]Chris Eagle.IDA Pro权威指南(第2版).石华耀,段桂菊译.人民邮电出版社.2014.
[4]段钢.加密与解密(第三版).电子工业出版社.2008.