hh9527
小狐狸
小狐狸
  • UID6578
  • 注册日期2005-06-06
  • 最后登录2009-07-07
  • 发帖数49
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:6714回复:24

还记得那个针对 Gecko 的恶意的网页么?

楼主#
更多 发布于:2005-08-26 00:24
今天得了些空终于弄懂了 Mozilla 的 Signed Script 的制作方法,呵呵,这可是基于 Firefox 实现远程应用的基础啊,当然了也可以用来实现一些针对 Firefox 的恶意网页。

我想起先前在这里发布的那个“恶意网页”的例子(见:应广大 Firefox 的 FANS 要求,写了一个恶意脚本的实例,大家看看),当时那个例子因为缺少了数字签名,实际上并没有真正展现出通过 javascript 调用本地 XPCom 来访问本地资源的能力。现在加上了这个数字签名了,呵呵,它就可以了。我来说一说步骤吧。

1. 准备恶意脚本,这我就不多说了,参看我原先的帖子或者附件中附带的网页源码。这里提示一点:申请 XPConnect 权利是操作本地资源的基础。
2. 使用 Mozilla 的 certutil 建立空的认证数据库
3. 从认证机构获得具备数字签名资格的证书
4. 使用 Mozilla 的 certutil 将上述证书导入认证数据库
5. 使用 Mozilla 的 signtool 对你的恶意脚本签名,该步骤需要你指定认证数据库和获得的证书别名,签名后会得到一个 jar 文件
6. 将上述 jar 文件放在你的 WEB Server 上
7. 将你的超链接指向 jar 文件内部的网页地址,形如:jar:your-jar-file.jar!/origin-file-path.html

至此,搞定,当你的用户浏览到这个页面时,并触发了你的 javascript 时,Firefox 就会提示用户是否授权这个页面获得超越沙箱的限制,一旦用户授权了,呵呵,世界就不太平了。

说了那么多技术细节,下面直接来一点刺激的:说一下附件中的“恶意”脚本的安装方法。即便不了解上述的步骤,如果有一个 WEB 服务器,也可以很容易的看到这个例子的效果。
1. 下载附件,并展开到你的 WEB 服务器中相应的目录下
2. 在你的 WEB 服务器中增加认证书的 Mime Type

例如在 Apache2 的 httpd.conf 中增加一行:
AddType application/x-x509-ca-cert .cacert

使用这里的附件的话,这一步骤是必须的,因为我没钱买到 VeriSign 的认证书,只好自己做一个(利用 Mozilla 的 certutil),该证书并不附带在 Firefox 的原始发布包内(要有的话,呵呵,各位的银行卡要小心了),因此用户必须要专门安装一下这个认证书,这一步骤就是让用户点击安装超链接时自动弹出 Firefox 的证书安装界面的。
当然,如果你能搞到 VeriSign 的认证书,你就不需要这一步了,因为 Firefox 本身已经安装了 VeriSign 的根证书,也就是说 Firefox 是信任 VeriSign 的。

呵呵,看看效果吧..... 需要说明的是:这个恶意网页代码,并没有恶意,只是展示了恶意代码的可行性,它仅仅将你的 prefs.js 复制了一份到 new_prefs.js。
附件名称/大小 下载次数 最后更新
bad.zip (4KB)  11 2005-08-26 00:22
hh9527
小狐狸
小狐狸
  • UID6578
  • 注册日期2005-06-06
  • 最后登录2009-07-07
  • 发帖数49
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-08-26 00:24
总得有人为不安全埋单。如果是 IE + ActiveX,那还可以选择 Firefox,如果 Firefox 也是采用同样的机制,我就不能说是某个浏览器的问题,只好怪到整个WEB应用的发展上了。(遥想当年网络安全的"黄金时代",我在 32K 的猫上看着 BBS,从同学那里拷贝一个三国志4,都不愿意用网络传递,因为拿3张1.44M的磁盘,骑车到同学家拷回来,都比从网络上下载要快。自然病毒不经过网络传播了,因为网上还没有网下传播得快)

安全的问题,从古至今运作的环节和原理从未改变过,只是每个环节的支撑技术在变化:
1. 过去是钥匙,现在是密码
2. 过去为了防止小偷不断尝试撬开门锁,所以有门卫,现在是防止黑客不断不断尝试攻击,所以有防火墙
3. 敲门的人出示给你卞梁大酒店的腰牌证明他确实是给你来送酒菜的。现在 WEB 应用要出示有公信力的 CA 签发的数字签名,证明它确实是它所宣称的服务提供商。

不要 javascript? 看看 GMail 带来的冲击吧,它使许多人放弃使用传统的邮件客户端了(包括我),为什么?哪个邮件客户端的邮件管理/分类/搜索能力比得上 gmail?在加上我经常在不同的计算机上工作,本地管理哪有网上管理方便?只要上网速度可以接受,我完全无需使用本地邮件客户端了。这仅仅是一个邮件应用,以后还会有更多的应用出现,Office、Photoshop、甚至我们会在某一天无需安装直接在相应的网站上玩 CS 和 WarCraft。到时你的操作系统里只需要装一个浏览器即可,甚至,浏览器本身就是桌面的操作系统。而这一切都是以提升浏览器客户端本身的能力为前提的,javascript等一大批富客户端技术的存在就是为了这个目的。

No Script?! No! 我现在舍不得 GMail,将来更不愿意放弃 WarCraft X。

安全还是方便,是你的选择。把车钥匙随便给一个陌生人,危险自不必说。但我可以把车钥匙交给门口的洗车店,回家打两把游戏再去取洗好的车。这一般无妨。我信任洗车店,是因为它有中华人民共和国(CA)发行的营业执照(数字签名)证明它是合法经营的企业,而且出小区门用的出门卡(操作系统的权限控制)在我自己这里。当然,你还可以选择不信任,那你就必须在洗车的时候在一旁等待。这也是你的选择,但别因为别人给了你选择的权利,你反倒要怪他。

总得有人为不安全承担责任。如果是 IE + ActiveX,那还可以选择 Firefox,如果 Firefox 也是采用同样的机制,我就不能说是某个浏览器的问题,只好怪到整个 WEB 上了。

有没有想过是自己滥用了选择的权利?如果说不知道如何选择,那就不宜拥有这样的权利。比如 Unix 系统的传统:大多数用户仅在很有限的权利下工作,只有 root 才拥有整个系统的控制权,浏览器用户即使授权了,他可以授予别人的权利也很有限。其实 Windows 同样提供了这样的功能,但看看大喊不安全的人,有多少人不是在 Administrator 或者 Power User 下工作?有多少人给不了解的网站点过“是”?

这样的不安全应该谁来承担?

如果你的父母或者女朋友不懂电脑、只是上个网,你又害怕他门上网中招,很简单的办法:给他们建立受限的用户账号并设为默认登陆,如果用 IE,设为最高级别保护。

“没有权限最安全”,MS 经过几年的饱受磨难终于明白了,而在此之前,Unix 的用户已经安全了几十年了。

至此,我闭嘴不再发言了。
宇宙火星
非常火狐
非常火狐
  • UID182
  • 注册日期2004-11-26
  • 最后登录2006-04-19
  • 发帖数660
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-08-26 00:24
hh9527:唉~ 以前对比了一下 Firefox 和 IE 的安全技术,好多人都在骂 IE 的安全性,我就跟着挨骂。  现在从说明了安全取决于用户意识,好多人又骂 WEB 的安全性,我又跟着挨骂。

无语郁闷中......
回到原帖


我觉得说FF更安全没什么不对.
就今天这个时刻来说,我用FF访问任何一个站点,我都很放心.不用担心首页被改,不用担心不知不觉被装上莫名其妙的插件,不用担心因什么漏洞中病毒中木马.这种更安全是实实在在的摆在眼前的,是时刻发挥效应的.
至于有人试图证明其实FF并不安全,说什么现在是因为用的人少,未来用的人多了也会一样有很多漏洞.未来哪个更安全,说实在,即使计算机顶尖的专家也证明不了,说白点那只有鬼才知道.未来哪个更好,用哪个就是.试图用无法确定的未来来否定现在,用证明和猜测来否定事实,这个努力好像搞笑了点,不知道这么做有什么用处和意义.

证书问题,跟IE的漏洞不是一回事,不能混为一谈.证书问题不是浏览器决定的.是计算机发展至今,计算机和互联网的架构,应用模式决定的.
我觉得证书机制的安全,跟交通安全问题是很相像的.汽车等交通工具从根本上要比走路,骑自行车危险是无法避免的.正如现实的状况,应对之道是既要想办法让汽车安全性更好,也要培养用户安全意识教育用户安全操作.片面强调是对方的责任,另一方的工作不做,都会给安全带来非常大的危害.证书问题也是同样道理.
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2005-08-26 00:24
hh9527:唉~ 以前对比了一下 Firefox 和 IE 的安全技术,好多人都在骂 IE 的安全性,我就跟着挨骂。  现在从说明了安全取决于用户意识,好多人又骂 WEB 的安全性,我又跟着挨骂。

无语郁闷中......
回到原帖


口气可能重了一点,但也没有到 "骂" 这个地步吧。

主要是经常被人 "太上老君急急如律令" 远程电话支持甚至招去修复 IE,烦的。

失礼之处,对不起了,呵呵。
hh9527
小狐狸
小狐狸
  • UID6578
  • 注册日期2005-06-06
  • 最后登录2009-07-07
  • 发帖数49
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2005-08-26 00:24
唉~ 以前对比了一下 Firefox 和 IE 的安全技术,好多人都在骂 IE 的安全性,我就跟着挨骂。  现在从说明了安全取决于用户意识,好多人又骂 WEB 的安全性,我又跟着挨骂。

无语郁闷中......
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2005-08-26 00:24

有好处啊,远程应用一旦可以访问本地资源,就可以做本地应用能做的任何事情。许多传统上需要独立客户端的应用都可以被 WEB 应用所代替(WEB 应用的最大优势就是免客户部署、集中维护和升级)。

举一些的例子吧:
除了木马、病毒、广告之外:-) ,WEB应用还可以实现软件升级(例如Windows Update)、远程杀毒、网络书签同步、本地数据(例如驱动程序和偏好设置)备份、远程软件管理和安装


你说的这些功能都很好,但是请不要以木马、病毒、广告为代价。

需要本地访问的,还是另外做一套比较好。比如可以单独写一个 Windows Update 客户端。

治好我的感冒,但必须截肢,那我还是不治了。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2005-08-26 00:24

说那么多,你就是无法正面回答.那我说简单点.
今天面对恶意站点也要求装证书,用户安装会导致安全问题.
现在假设你是用户代表,由你提出要求让FF今天开始解决这个问题.你要求FF怎么做来解决.或者做成怎样来解决这个问题.


Win95 经常崩溃,用户抱怨,我们不能说:那你用户来写个更好的内存管理器、设计个更好的驱动程序架构,否则闭嘴吧?



见鬼,我为什么要来回答这个问题?这是程序员要解决的问题。

我并不是在批评 FF,而是在批评拼命猛加功能却不注重安全性的 Web。

作为用户我只能提出要求,就是不要让我中毒,也不要搞出一些我永远也明白不了的对话框来要我选 "Yes" 或 "No"。

比如这个论坛就很好,JavaScript 关掉照样用,一点影响都没有。这时候我就感觉很安全。

[quote="宇宙火星"]
交通工具带给人方便同时也无法避免带来安全问题.那我们今天是该坐这里批判汽车不安全,又提不出任何有用的东西.还是应该去做点切实可行的,加强教育提高安全意识,制定完善法规?还是你要说不应该把安全问题推给用户,有的人怎么教育也还是会违章,所以不要搞安全教育交通培训.应该坐这里骂到未来更安全的汽车出现?[/quote]

你立个法,规定小孩要努力学习、大人要每天积极向上的工作和生活、夫妻要相敬如宾,就 OK 啦?从此小孩不爱玩游戏了,大人在公司也不会闹矛盾了,夫妻也不会离婚了?做不到的东西嘛。

这和少数人违章不是一回事。去看看痛骂 3721 的帖子的长度,想想有多少人中过恶意网页吧。一个大多数人会有意无意违反的规章制度,它的合理性,难道不应该重新审视吗?

Windows 和 IE 出来这么多年了,用户是不是学会了不要乱点 "Yes"?事实是你说的什么安全教育,不是完全没有作用,但效果甚微。极少数我这样的人,可能肯下功夫去研究证书是怎么回事(然后学了个半桶水),大多数用户我看只学会重装和 ghost。

我已经解释过了,这是人的本性,人的行为就是倾向于去点 "Yes",不是你教育一下就行了的。防止贪污和防止乱点 "Yes",都不能靠人的自觉。

至于解决方案,写程序的人来要用程序的人教,那也太说不过去了。
hh9527
小狐狸
小狐狸
  • UID6578
  • 注册日期2005-06-06
  • 最后登录2009-07-07
  • 发帖数49
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2005-08-26 00:24
交通工具带给人方便同时也无法避免带来安全问题.那我们今天是该坐这里批判汽车不安全,又提不出任何有用的东西.还是应该去做点切实可行的,加强教育提高安全意识,制定完善法规?还是你要说不应该把安全问题推给用户,有的人怎么教育也还是会违章,所以不要搞安全教育交通培训.应该坐这里骂到未来更安全的汽车出现?


准确!
hh9527
小狐狸
小狐狸
  • UID6578
  • 注册日期2005-06-06
  • 最后登录2009-07-07
  • 发帖数49
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2005-08-26 00:24
ydgi:看了这么多,偶有一个问题不明白。
到底为什么 Firefox 要被设计成可以远程操作本地资源呢?
回到原帖


有好处啊,远程应用一旦可以访问本地资源,就可以做本地应用能做的任何事情。许多传统上需要独立客户端的应用都可以被 WEB 应用所代替(WEB 应用的最大优势就是免客户部署、集中维护和升级)。

举一些的例子吧:
除了木马、病毒、广告之外:-) ,WEB应用还可以实现软件升级(例如Windows Update)、远程杀毒、网络书签同步、本地数据(例如驱动程序和偏好设置)备份、远程软件管理和安装
宇宙火星
非常火狐
非常火狐
  • UID182
  • 注册日期2004-11-26
  • 最后登录2006-04-19
  • 发帖数660
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2005-08-26 00:24



我不知道。这是写程序的人的职责,我要是知道我也是程序员了。


说那么多,你就是无法正面回答.那我说简单点.
今天面对恶意站点也要求装证书,用户安装会导致安全问题.
现在假设你是用户代表,由你提出要求让FF今天开始解决这个问题.你要求FF怎么做来解决.或者做成怎样来解决这个问题.

事实上你是无法回答的,因为今天浏览器对这个问题根本就无能为力,让FF今天就开始改,他改什么?根本无法改.

交通工具带给人方便同时也无法避免带来安全问题.那我们今天是该坐这里批判汽车不安全,又提不出任何有用的东西.还是应该去做点切实可行的,加强教育提高安全意识,制定完善法规?还是你要说不应该把安全问题推给用户,有的人怎么教育也还是会违章,所以不要搞安全教育交通培训.应该坐这里骂到未来更安全的汽车出现?
ydgi
火狐狸
火狐狸
  • UID2074
  • 注册日期2005-01-12
  • 最后登录2007-04-03
  • 发帖数166
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2005-08-26 00:24
看了这么多,偶有一个问题不明白。
到底为什么 Firefox 要被设计成可以远程操作本地资源呢?
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
11楼#
发布于:2005-08-26 00:24
东拉西扯非要定个罪有什么意思.
觉得这不好,不合理,就说说看怎样才是正确的.


没有要定罪的意思,只是说一下看法:不可以单纯把问题推到用户身上。用户不可能理解什么是证书、根证书、证书链、还有那些复杂的授权关系,不可能判断是否应当接受。

用户如果拒绝证书,那么功能可能无法执行;用户如果接受证书,那么风险是潜在的,是用户当时无法察觉的,因而容易被忽略。

这种拒绝就无法运行,接受就一切 OK(至少表面上如此)的情况,极强烈地促使用户倾向于接受证书,即使他被告知可能有危险 -- 这是人的本性。



理论上天花乱坠没什么用。实际情况是,用户就是会 "一律按否"、就是会下载不明程序、就是会打开带毒附件?这个方案依靠用户的自觉性,而用户的自觉性,谁都知道是不可靠的。

[quote="宇宙火星"]
你觉得这不对.是程序的错,程序员有罪.那你说说看怎样做才是合理正确的.浏览器应该怎么做.程序员去面壁思什么?
[/quote]

我不知道。这是写程序的人的职责,我要是知道我也是程序员了。
宇宙火星
非常火狐
非常火狐
  • UID182
  • 注册日期2004-11-26
  • 最后登录2006-04-19
  • 发帖数660
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
12楼#
发布于:2005-08-26 00:24
东拉西扯非要定个罪有什么意思.
觉得这不好,不合理,就说说看怎样才是正确的.

证书机制可以说是互联网的一个基石.
访问某个商业站点,站点说某某功能需要装证书,问你要装证书吗.
访问某个恶意站点,站点也说某某功能需要装证书,问你要装证书否.

我的意见是目前最好方式的是培养用户的安全意识,不知道不能确认的一律按否.

你觉得这不对.是程序的错,程序员有罪.那你说说看怎样做才是合理正确的.浏览器应该怎么做.程序员去面壁思什么?
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
13楼#
发布于:2005-08-26 00:24
宇宙火星:不是说了,这个问题不是软件的问题.这是正常的应用模式,现实需要这样的应用模式.但是你因为正常的需要开了这个门,就无法避免恶意者也利用这个门.
你把钥匙给陌生人,就不要推说是锁头不够牢固不够好的缘故.即使你装什么指纹锁视网膜锁,别人也可以砍你的手,伪造视网膜.并不存在绝对安全的东西.

"默认按取消"应该成为一条金科玉律根植在用户脑海中.
当你正在申请网上银行操作过程中,你当然知道这个时候是需要确定的.但这样的时候,一年也未必有一次.但是许多小破烂网站倒是经常会弹个东西希望你按确定.所以除非你确实知道,否则一概按取消.
回到原帖


我用 Linux 的。如果我指责你太笨,说命令行是正常的应用模式,你承认吗?

统计一下多大比率的用户中过恶意网页?IE 有设置禁止 ActiveX 和 Java Script 的,所以都是用户自己愚蠢?

如果 90% 的用户都不能正确操作,那么写程序的人应该去面壁思过。
宇宙火星
非常火狐
非常火狐
  • UID182
  • 注册日期2004-11-26
  • 最后登录2006-04-19
  • 发帖数660
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
14楼#
发布于:2005-08-26 00:24
不是说了,这个问题不是软件的问题.这是正常的应用模式,现实需要这样的应用模式.但是你因为正常的需要开了这个门,就无法避免恶意者也利用这个门.
你把钥匙给陌生人,就不要推说是锁头不够牢固不够好的缘故.即使你装什么指纹锁视网膜锁,别人也可以砍你的手,伪造视网膜.并不存在绝对安全的东西.

"默认按取消"应该成为一条金科玉律根植在用户脑海中.
当你正在申请网上银行操作过程中,你当然知道这个时候是需要确定的.但这样的时候,一年也未必有一次.但是许多小破烂网站倒是经常会弹个东西希望你按确定.所以除非你确实知道,否则一概按取消.
上一页
游客

返回顶部