代码改变世界

【随笔】接着说说QQ“侵犯隐私”都干了些什么

2010-10-15 06:44  Nana's Lich  阅读(7780)  评论(177编辑  收藏  举报

我发现写QQ写360要比写技术经验什么的更吸引人,要不然以后我天天写?好吧,这并不好笑。

昨天我发了博文之后有个人认为我是在毫无逻辑地袒护腾讯、反驳360是动机不纯、放我这种人活着危害更大什么的——大概意思说一下就行了,具体怎么说的我实在没心思去记。

然而我昨天明确解释了有些人经常拿来当作“侵犯隐私”的依据的事情,其实有一部分并不能构成隐私侵犯,而另一部分没证据证明侵犯。

没错,我承认的确存在隐私信息被拿去利用而没告知用户的可能,但没有任何证据证明这件事情。如果存在可能性就应该被批判的话,那大家就都不要做网络了,任何服务都有侵犯隐私的嫌疑。很多网站、网络服务都有“隐私策略”这种东西,但你能保证他们都遵守了上面写的原则了吗?没有人能保证,按照那位聪明人的逻辑,既然没人能保证,那就可以批判它们侵犯了隐私。

更进一步来说,不能提供可以让人信服的论据就一口咬定QQ侵犯了隐私,是不是很可疑?是不是有被360收买了的嫌疑?按照那位聪明人的说法,他当然是清白的;然而按照他的逻辑,有嫌疑就该被批判了。

与其说是“知道”QQ侵犯隐私,不如说是“愿意相信”侵犯隐私这件事情——腾讯QQ招人恨的理由实在是太多了,就算我在这两篇博文中基本上是在为QQ辩护,我也要承认平时我随便就可以找出十好几条骂腾讯的理由。但是因为这样就可以无条件相信腾讯干了坏事而对其进行讨伐吗?从好听的方面说,这不够公正;从不太好听的方面说,我觉得360的危害更大。

而放任只是愿意相信就去批判腾讯的人不管,危害也很大(这话是不是有点眼熟?),这就是我决定写前一篇博文的原因。

 

 

 

好了,这一篇本来是想详细地分析QQ所谓的“安全模块”干了什么,在前边写了那么多不相干的东西是我的过错,只是我实在想不到同样容易看到的其它地方了。

 

现在说说正事。

昨天我在回复中提到,从准备博文到睡觉之前,我开了Procmon一共3小时,但没发现QQ有任何具明确构成侵犯隐私的行为,这跟很多批判QQ的人的说法不符,老实说我也觉得有点诧异——毕竟我也是听惯了QQ侵犯隐私的说法,这个结果实在太意外了。

我的QQ是在9月23号装的,因为那天正好系统崩溃了重装系统;而360隐私保护器,从360论坛的帖子上看应该是9月27号发的。我又看了一下QQ的EXE和DLL文件,最后修改日期都是9月23号,应该不是在隐私保护器出来之后又更新过。

我先从操作记录上截取一些比较典型的发上来给大家看看——实在是比较多,整理起来比较麻烦,大家凑合看看就是了:

 

  • 我想这里面最显眼的应该就是那个“C:\Crypt32.dll”了,我试过很多次,反正QQ总是在找这个文件——从文件名上看,这个DLL应该属于Windows加密模块,但是真正的加密模块应该是在Windows\System32\Crypt32.dll(我用的是64位的Windows 7,如果作为32位程序的QQ想调用加密模块,应该是从Windows\SysWOW64下边找)才对,也就是说如果根目录有这个DLL的话,应该不是真正的加密模块。不过我还是没想通QQ为什么对这个路径特别感兴趣,有人知道的话麻烦给我解一下惑。
  • “世界之窗 3.lnk”和“世界之窗 3.lnk\desktop.ini”,这是某些病毒的惯用手段——创建或者替换桌面上的快捷方式好引诱用户去运行病毒程序,而特质的desktop.ini可以让包含这个desktop.ini的文件夹具有近似于快捷方式的功能,这样利用这个文件夹就既可以引诱用户去执行又可以把病毒的本体隐藏在其中了,可以说是一石二鸟。
  • 各种没有主文件名的DLL文件——只要稍微用一下脑子就会明白,这显然是为了躲避手工杀毒什么的,甚至还可以躲避掉一些构造不够良好的专杀程序。

 

需要注意的是,上面的这些文件都是在我的电脑中不存在的,也就是说QQ是在专门去找符合这些特征的文件,这种行为符合恶意软件清除工具的特征。另外我猜检查指定的路径还有一个原因,后面很快就会提到。

 

  • iexplore.exe——硬盘上存在的可执行文件,这样的操作还有很多,但是我懒得截了。硬盘上有的EXE文件有很多会被扫描,但也不是什么都扫,主要是扫Program Files里面的(和前边提到的“.DLL”差不多是一起扫的),不知道是不是错觉,好像正在运行中的EXE会经常被扫。另外“我的文档”中我自己写的那些EXE没被扫过,包括隐藏文件。扫描EXE文件的时候会读取一部分或者全部内容——有人可能会说这是侵犯隐私的证据,但是麻烦用用脑子想想,除了破解的软件以外,对于特定的软件和版本来说几乎在任何人的硬盘上其EXE文件的内容都是一样的,读取EXE文件的内容能得到啥隐私信息?哪个听说过EXE文件中包含隐私信息?还有人可能会说它会不会因此了解到用户的习惯什么的,我只能搬出来那句话:“有嫌疑,没证据”,与其猜忌这个,不如去质疑QQ到底有没有必要搞安全模块——这部分我会在后面说一下我的看法。
  • Crypt32.DLL,这里不重复了。
  • S、S.exe,不知道这是什么,不过不难猜测有些病毒在这里放置副本。
  • C:\SystemRoot\system32\drivers\*.sys——这是一种对“电脑高手”具有较强的迷惑性的手段:有些对系统稍微有点熟而又不是真的什么都了解的人(比方说我这样的),看到SystemRoot会下意识地以为是%SystemRoot%,也就是C:\Windows(这里不考虑那些会自己改路径的人),尤其是从安全防护软件的界面上看到的时候。然而显然C:\SystemRoot和C:\Windows完全不是一回事,藏在这里面的东西自然也不会是啥好玩意。不过老实说我不确定这里是安全模块真的考虑到了这种情况,还是说纯粹只是规则写错了。
  • Processid:{某GUID}——另一种用来迷惑“电脑高手”的手段:对xNIX有了解的人会知道xNIX中有一个名为“/proc”的命名空间,在这个命名空间下可以找到一些当前正在运行的进程的信息。对此有了解的人如果从防护软件上看到这样的提示可能会以为是Windows中也有类似的功能,然而事实并非如此。只要对根目录具有足够的权限,谁都可以用这个路径创建文件,而冒号和后边的部分只是NTFS的“备选文件流”功能而已,简单地说就是在一个文件中保存多个互不干涉的文件内容的功能,也可以看作是目录的一种变体。也就是说,这个路径所表现出来的实际上是在C:\Processid这个文件中隐藏着的另一个文件——会用这么具有误导性的路径隐藏文件,而且还是可执行文件的会是什么东西,自然是不言而喻了。
  • C:\PROGRA~2利用Windows中有同时存在长短文件名的特性,欺骗人或者程序误以为这是C:\Program Files目录,然后运行里面的代码。
  • C:\Program Files (x86)\MICROS~2同样的原理,不过这次目标换成了C:\Program Files (x86)\MICROS~2。我在之前说了,我用的是64位的系统,所以这里路径会有点区别。
  • C:\Program.exe有很多人在使用命令提示符(也就是俗称的“MS-DOS”,但这是个错误的叫法)的时候会忘记在包含空格的路径两边加上引号,这样系统会先尝试把空格之前的部分当作完整路径来执行。甚至有些不够健全的应用程序也会在这方面上疏忽。在这样的情况下,大部分应用程序的路径都会被误解成C:\Program(.exe),显然故意放在这里的程序不会是什么好鸟。
  • C:\??——这个??到底是什么我也不清楚,不过Sysinternals工具箱中有一个rootkit清除工具演示了相似的技术,大致上就是使用一些在正常情况下无效的字符来阻止其它程序访问这个文件,会这么做的除了病毒还能有什么?

 

上面这些就是使用Procmon所查看到的QQ的大部分操作(除去对系统组件和QQ自己的文件的访问)。可以看到,都是有目的地去寻找特定的文件,符合“专门清除恶意软件”的特征。

 

除了上面的这些之外,操作记录中看不到任何对“我的文档”和对cookie、IE缓存文件的访问。

什么.doc、.txt的访问全都没有,而对于IE来说cookie也不过是有特定pattern的.txt文件而已。

有一个例外就是个叫DTLog.txt什么的文件,我查了一下也是QQ用的,不过有很多人怀疑这个文件是用于搜集隐私信息的,我不反对这种怀疑,我也不打算去研究它到底是干什么用的。认真写过程序的人都知道创建文件与否都只是凭自己高兴的事,而不是技术问题。

 

昨天在了解网上关于QQ侵犯隐私的说法的时候——老实说我没找到什么真正算得上是隐私问题的问题,这个让我很失望。

使用Procmon来查看QQ具体到底干了什么的办法是来自天涯的某个帖子,但是那个帖子里对隐私有很严重的曲解,主要是好友克隆的问题,其实用用脑子都能想明白是怎么回事。

 

找360隐私保护器的发布日期的时候找到了360论坛上的帖子,正如我前面说过我从来不用360的东西,所以我对360的了解自然也是通过别人。

我在360论坛上的帖子里注意到了一些有意思的事情,就在360用户发的“证明QQ侵犯隐私”的截图里,接下来就要说这个事情。

昨天比较困,所以没继续搞下去,刚才我从360隐私保护器的官方发布帖(管它叫什么呢,反正知道意思就行了)里面找到了三张用户上传的截图——忘了那个主题里有多少页了,反正我只看了前10页,后面没耐心了。

我先说一下,QQ客户端上的QQ秀就是用Flash来实现的,所以它碰Flash Player本来就是很正常的事情,不管有没有安全模块。

接着咱们来看看这些QQ动过的文件的版本信息。

上面这个列表里面的“文件描述”和“产品名称”是从对应文件的属性对话框中看到的,不同版本的Windows可能在用词上略有区别,但是具体的内容是一样的。

由于有些东西我并没有使用过,所以在表格中留出空白,而只有我用过的写上了具体的文件版本信息,其中标红的是和360隐私保护器中写的一样的。

用表格对比三张截图可以发现,在360隐私保护器的界面上,除了少数的几个文件(例如wlmail.exe和flash10k.ocx)和文件自身的版本信息相符以外,其它的都是有差异的。而截图中列出的大都是版本信息不会轻易改变的文件。

由此可以得知,无论360隐私保护器自己有一个规则列表来匹配显示的应该属于什么软件,这种做法可以让用户一眼就看出是什么文件。

 

从360的官方发帖中可以得知,360隐私保护器的第一个版本本来就是针对QQ的,理由是“用户投诉最多、覆盖量最大”。

在这件事上支持360的人显然认同QQ的确是侵犯了隐私的,但是隐私到底是什么?扫描你的文件就构成侵犯隐私了吗?安全防护工具都要扫描。360既然说了“只支持QQ”,那就应该起码先搞清楚QQ为什么要扫描,到底是QQ所称的“安全模块”,还是真的拿用户隐私信息干什么了。

然而360隐私保护器只是把QQ的文件扫描给显示了出来,称其为“已查看的隐私位置”。

好吧,360既然摆明了自己就是要揭发QQ的态度,那在揭发之前就要搞清楚QQ到底是不是真的有侵犯。如果没搞清楚就乱来,是不是出发点就有点问题?

那么,可执行文件中会包含用户的隐私信息?任何写过程序的人都知道这是不可能的事情——当然了,不小心把程序作者的个人信息写到程序里面的事情也是有的,但和我们这里说的隐私完全是两码事。

360会不知道可执行文件中不可能包含用户的隐私信息?360这么专业连可执行文件是属于什么软件的都整理出来了,这点小问题怎么会不知道?

既然知道,360隐私保护器为什么要在“可疑记录”、“已查看的隐私位置”中把QQ扫描的可执行文件列出来?

也许我想象力不够丰富,但我能想到的可能性只有一种:360有意误导用户,让用户曲解“隐私”。

实际上,我看了半天也没从360的发言中看出“可执行文件”和“隐私”到底有什么关系、360又怎么样让用户了解“隐私”了,只看到一大堆人在拿“隐私”说事,却没人说清楚了“隐私”到底是什么。

 

OK,扯了这么久,其实昨天也好今天也好,都是在围绕一个问题:QQ到底有没有侵犯隐私。只不过从这个问题衍生出来一些其它问题,比方说:

  • 查看文件是不是意味着侵犯隐私——只有查看包含隐私信息的文件才有可能在这个问题中构成侵犯隐私。
  • 什么样的文件包含隐私信息——你的文档文件、照片、cookie等等;绝大部分情况下可执行文件不会包含隐私信息。
  • QQ查看硬盘上的文件是在干什么——看前边的分析可以知道,的确是像疼逊所称的那样,在找恶意软件。
  • 以安全为理由扫描文件是不是侵犯隐私——任何安全防护工具都会监控文件、内存或者网络通信,这是安全防护的基本原理。但是显然用户并不认为一般安全防护工具侵犯了隐私。
  • QQ不是安全产品,为什么要扫描文件——其实从我个人的角度来说我是非常讨厌这种事情的,不只是QQ,还有很多网游都自带的安全保护什么的,都很讨厌。但是考虑到实际情况,这也是没办法的事情。关于帐号安全的话题展开讲完全可以另开一篇文章——或许是两篇,现在就压缩一下随便讲讲:很多缺乏安全意识的网民认为帐号丢了是服务提供商的责任,而稍微有点安全知识的人都知道,当系统中有木马什么的恶意程序的时候时,帐号安全问题就完全脱离服务提供商的控制了。但是很多用户坚持认为服务提供商应该为此负责,而事实上服务提供商很难负起责任。所以各种网络服务都有了各式各样的安全措施,比方说网银有了专门的登录控件,网游有了帐号保护模块,QQ有了个安全模块来检查是不是有可能会盗号的程序一点也不奇怪。随便在网上搜一下就会发现喷网银控件不兼容的人并不稀有,而我自己也经历过网游的保护模块和别的程序起冲突的事情并因而对某韩国产的安全模块深恶痛绝(连EXE被纂改了都不知道,真没法理解它到底保护了什么)。
  • QQ的做法有没有问题——有,绝对有,这个谁都没法否认。不管因为什么样的原因,没有事先让用户了解到,而在被质疑了之后才马后炮似地发声明澄清安全模块什么的绝对不是正确的做法。很多人奇怪为什么从国外(尤其是美国)引进的网游在每次启动的时候都要求你先读服务条款,其实就是因为不讲清楚的话是要负责任的,而美国人尤其喜欢打官司。

 

关于虚拟财产安全问题、服务条款问题、个人的隐私保护问题,其实这些都是可以单独开文章来说的。

我在此提到是因为,有很多人并不清楚自己的权益都包括什么,都是跟随着那些大嗓门瞎起哄。

这让我想起来了之前有人叫嚷google桌面搜索是流氓软件啊收集隐私信息啊什么的。

虽然不知道我写出来的东西有多少人会用心看,但想来想去写出来试试总比什么都不做要好。

 

 

最后,关于恶意行为的猜忌的问题。

我一向不喜欢给人预设恶意的立场,因为这种事情一旦开始,就极有可能变成“莫须有”的争论,一切都会变得毫无意义。

但是考虑来考虑去,还是决定说说这事。

 

360隐私保护器的事情一下子就让我联想到了3721——我一说到3721有人可能就不乐意了,为什么呢?听我说完。

网龄够长的人应该都知道,3721是“流氓软件”这个词真正意义上的起源——流氓软件的释义可以在维基百科的相关条目上看到,然而由于从不同的角度看得到的结论也略有差异,所以具体的某一样东西是不是流氓软件每个人的意见也可能是不同的。但定义中有一条如果得到满足,流氓软件的身份就无需置疑,就是这一条:难以卸载:指未提供通用的卸载方式,或在不受其他软件影响、人为破坏的情况下,卸载后仍活动程序的行为。关于3721这部分的细节,可以看这篇文章,文章下边有一堆乱七八糟的链接,这个很抱歉,我实在是没耐心去找排版更好、没这种链接的页面了。

而如今360的开发团队正是当初3721的原班人马,这不能不让人心存余悸。

而对于这种担忧,有人就有意见了:“就算有过前科,也得给人一个改正的机会啊”

奇怪了,那么我看到的那么多人不分青红皂白一口咬定疼逊一定是坏的,难道是幻觉?

疼逊的问题先扔一边,单说360:虽然心有余悸,但对于很多人愿意用免费的360,我也没到处跟人说“千万别装360”还是怎么的。事实上,我也没听说过有什么360卸不掉的说法。

但是有一个经常被很多人忽视掉的事情,就是3721的问题爆发的真正原因。

真正让人感到恐惧、真正让3721纸包不住火、真正让人到现在还对3721和360心有余悸的事情,是3721“处罚不合作网站”的行为,相关的说明可以在这里找到或者这个帖子,但是原帖出处不详,从后面的内容看应该是04年的文章。

听起来挺耳熟是不是?百度的竞价排名和这个就有点相似,不过百度没做到这么毒,你就算不花钱,翻个十来页还是能找到自己的网站的。

而现在搜索3721,找到的大部分都是和360的关系啊什么的,偶尔有一些打着抵制3721的旗号推广自己产品的。顺便说一下,360自己就属于其中之一。

如果只是因为有过前科就不给改正的机会,这的确不对。但是当360开始屏蔽竞争对手、开始利用“免费杀毒软件”占领市场并误导用户曲解QQ的行为的时候,怎么可能不让经历过那个时代的人怀疑360要重走3721的老路?

可笑的是,在有些人的嘴里,有过前科反而成了保证以后“绝对不可能”重犯一样的错误的“护身符”了,好像一个“改正的机会”就可以对360现在正在利用“安全”方面的话语权威胁别人视而不见了!

我有个朋友写了某网游的外挂,同样的代码,几天前只是“可疑”,几天之后就变成病毒了——可能写外挂并不是什么光彩的事情,也可能有人会说“外挂可能有病毒的行为”什么的,但是我那朋友把外挂提交给360之后就没事了,不会再报了。

那么结合现在360隐私保护器的事情,今天它360隐私保护器可以把QQ的安全检查说成“侵犯隐私”,谁能保证自己写的程序不会哪天被360说成是恶意软件?

反正就我所知道的情况,至少疼逊没干过靠给人“定性”的方式打击不配合者,而这样的事情以前3721做过,现在360正在做。

(不过对于废柴2被QQ屏蔽的问题,我一直觉得很奇怪)

 

反正已经到这个地步了,也没必要再遮遮掩掩了:作为独立的软件开发者,我这两天发的博文其实是要担一定风险的。

虽然没证据,但有可能因为这两篇文章我就进入了360的黑名单。当然如果没进黑名单是最好的了,有人可以说这说明360没我想的那么小心眼;反过来说我如果真的进了黑名单,也肯定有人会说本来我就不是什么好鸟,写的东西有问题也是当然的。

谁知道以后会怎么样呢?谁都不知道。

 

如果多泡泡各种安全论坛(如果那些杀软厂商的论坛让人无法相信的话,去看看那些私人主办的安全论坛),就该知道在这些热爱安全技术的人中360的口碑向来不好,在很多并不以安全技术为主题的论坛也可以发现这种观点。

但是之相对的是免费的360对于普通人来说实在是太方便了,对于懒得给人修电脑的人来说也能解决很多麻烦事,实际上我虽然不喜欢360,可被人问烦了的时候也会建议“你干脆装个360算了”。

坦白地说疼逊翻脸的时候那个什么什么专题里面写着“360还是原来那个xxxxxx的xxxx吗”(不好意思具体用词我没记住)的时候把我吓了一跳,疼逊的人不可能不知道360的背景,而批判360的时候却没提3721的事情,不知道是因为觉得两者不该放一起说,还是有什么别的考虑,我也懒得猜了。

话说回来,当初3721也是号称能查杀千余种病毒的免费安全工具呢。

 

 

本来只是想写QQ安全模块的行为分析,结果一时没控制住自己又写了一堆关于360的……算了。

其实写的东西发在博客园这个程序员聚集地,就注定没多少普通网民能看到……反正我就是懒得一篇文章到处都发的那种人,有人看我就满足了。

有很多人看了前一篇并且认同我的看法,其实我是有些意外的。

 

好吧,反正已经跑题很多次了。我们很多人平常都骂过“狗日的疼逊”,除了因为疼逊喜欢“创新”以外,像是QQ崩溃啊、文件损坏啊之类乱七八糟的问题我也没少诅咒过。我也一直猜测其实疼逊的QQ客户端团队是试用新技术兼培养新人的地方,然后等人培养好了、技术成熟了,就拿到别的部门去用,结果QQ客户端一直有各种诡异的问题。

不过360隐私保护器把人当傻子糊弄这事我实在是觉得没法容忍,有360隐私保护器这档子事QQ一下子就看起来不那么糟糕了,这大概就是所谓的“猪一样的队友”吧。

 

这件事也让我想到了博客园近些日子比较出名的一个人物,就是吉日嘎拉。

以前吉日嘎拉经常滥发感慨,或者写一些神经兮兮的东西,又或者是自吹自擂,让我觉得很讨厌。我也有些不明白赵姐夫为什么有时候会支持吉日嘎拉“说话”。

但是前些天发生了一件事,让我觉得吉日嘎拉看上去不是那么讨厌了——就是有个人(不好意思记不住你的名字实在抱歉)写文发在博客园首页上号召大家把吉日嘎拉赶出博客园。

这件事的发生让我觉得比起吉日嘎拉来说号召大家一起赶走吉日嘎拉的人才更讨厌。而且同样因为这件事,也让我注意到吉日嘎拉写的也并不全都是没用文字,有一些还是对人有帮助的,因此反而希望吉日嘎拉留在博客园了。

 

 

最后的最后,不搜不知道,原来在改做360之前这伙人不只搞过3721这么一个流氓软件,看看这篇文章。当然了,从这篇文章的条理性上看,应该是准备了很久的,说它是枪文也是有可能的。谁要是说这个只是随便写的,我都不信。

 

写博文的过程中查了很多东西,根据查到的资料正文也改了好几遍,可能有忘了改而前后不一致的地方,发现了也别觉得太奇怪。

 

 

最后的最后的最后,不看行为分析和隐私论述只想喷QQ或者360的人我不想回。

 

延伸阅读——360的支持者们