hh9527
小狐狸
小狐狸
  • UID6578
  • 注册日期2005-06-06
  • 最后登录2009-07-07
  • 发帖数49
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:6035回复: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
浏览过程说明
浏览过程说明:
无聊望见了犹豫
千年狐狸
千年狐狸
  • UID3586
  • 注册日期2005-03-04
  • 最后登录2017-02-12
  • 发帖数1679
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-08-26 00:24
过于深奥,没有看懂 ^_^
kitawa
  • UID2998
  • 注册日期
  • 最后登录
  • 发帖数
  • 经验
  • 威望
  • 贡献值
  • 好评度
3楼#
发布于:2005-08-26 00:24
j简单地说,就是FF并非想象中的安全~
宇宙火星
非常火狐
非常火狐
  • UID182
  • 注册日期2004-11-26
  • 最后登录2006-04-19
  • 发帖数660
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2005-08-26 00:24
无聊望见了犹豫:过于深奥,没有看懂 ^_^回到原帖


就好像你的同事需要开你的办公室门拿东西,跟你要钥匙.而现在有个陌生人跟你说,把你钥匙给我,你不加思索也给了,当然危险和损失就来了.

很多正常的应用比如网上银行,电子商务什么的都需要你给钥匙以进到你的系统完成一些任务.可是不能把这个钥匙随便给陌生的网站,让他们进你的系统.

这跟浏览器没关系.任何浏览器都一样.这是你保管自己钥匙的问题.

这件事情的意义就是,不要随便通过认证.不要乱点确定(yes).
舞间道
千年狐狸
千年狐狸
  • UID41
  • 注册日期2004-11-22
  • 最后登录2022-12-14
  • 发帖数1839
  • 经验-150枚
  • 威望0点
  • 贡献值-352点
  • 好评度-180点
  • 社区居民
5楼#
发布于:2005-08-26 00:24
楼上这么一说,说明FF还是安全的。

自己要有防范意识才能保证安全,是吗?
Skype  支持  Linux  |  MacOS  |  Windows  |  Pocket  PC
Philharmania
小狐狸
小狐狸
  • UID3061
  • 注册日期2005-02-16
  • 最后登录2006-08-08
  • 发帖数34
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2005-08-26 00:24
实在不放心的,装个 noscript 的插件,碰到陌生人不要开门肯定是安全的。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2005-08-26 00:24
问题是,要用户分辨什么时候可以点 "Yes",什么时候不可以,几乎是不可能的。

个人认为,浏览器不应该具有这类能力;网上银行这类应用,应该是独立的客户端,或者至少是特殊的定制浏览器。这才是对用户负责的态度。

最后,现在的电脑从根本上毫无安全性可言,plug-ins 也好,ActiveX 也好,反正我绝对不在上面处理任何需要保密的东西,不仅仅是金钱。也许安装上 TPM 以后我会考虑一下。

我运行 Firefox  的时候,装有 NoScript 脚本,禁止一切 JavaScript。
ccbbs
千年狐狸
千年狐狸
  • UID3450
  • 注册日期2005-02-28
  • 最后登录2012-08-24
  • 发帖数2857
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2005-08-26 00:24
即使你安装了可以杀所有病毒的软件,你关掉他的实时监控仍然会中毒,那是软件的错吗?是用户的错

要是FF默认关闭javascript,普通用户又会有意见了……怎么人家IE可以看这个我们不可以呢~
 
 
 
drsu
狐狸大王
狐狸大王
  • UID1387
  • 注册日期2004-12-25
  • 最后登录2008-12-20
  • 发帖数367
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2005-08-26 00:24
嗯,还不如在网页上放个木马程序,然后说这个是最新破解的超级好玩的纯3D的现在最流行人手一份的游戏。下载后不用注册码就能玩。

或者说网站里面有“美女丰胸欲喷色诱人 女优裸体风骚秀”,“偷情糗事曝光 动物性生活 钢管舞偷拍 爆笑男女同厕 处女鉴别法 名著性描写”,但是要点击左侧的连接下载个小软件才能正常进入浏览。

这样既方便,成功率还高。

(note:部分描述词语摘自www.sina.com.cn)
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2005-08-26 00:24
ccbbs:即使你安装了可以杀所有病毒的软件,你关掉他的实时监控仍然会中毒,那是软件的错吗?是用户的错
回到原帖


不能简单地归咎于用户。给你一个 1500 页的员工守则,你能保证一条都不触犯?

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

"默认按取消"应该成为一条金科玉律根植在用户脑海中.
当你正在申请网上银行操作过程中,你当然知道这个时候是需要确定的.但这样的时候,一年也未必有一次.但是许多小破烂网站倒是经常会弹个东西希望你按确定.所以除非你确实知道,否则一概按取消.
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
12楼#
发布于:2005-08-26 00:24
宇宙火星:不是说了,这个问题不是软件的问题.这是正常的应用模式,现实需要这样的应用模式.但是你因为正常的需要开了这个门,就无法避免恶意者也利用这个门.
你把钥匙给陌生人,就不要推说是锁头不够牢固不够好的缘故.即使你装什么指纹锁视网膜锁,别人也可以砍你的手,伪造视网膜.并不存在绝对安全的东西.

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


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

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

如果 90% 的用户都不能正确操作,那么写程序的人应该去面壁思过。
宇宙火星
非常火狐
非常火狐
  • UID182
  • 注册日期2004-11-26
  • 最后登录2006-04-19
  • 发帖数660
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
13楼#
发布于:2005-08-26 00:24
东拉西扯非要定个罪有什么意思.
觉得这不好,不合理,就说说看怎样才是正确的.

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

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

你觉得这不对.是程序的错,程序员有罪.那你说说看怎样做才是合理正确的.浏览器应该怎么做.程序员去面壁思什么?
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
14楼#
发布于:2005-08-26 00:24
东拉西扯非要定个罪有什么意思.
觉得这不好,不合理,就说说看怎样才是正确的.


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

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

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



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

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

我不知道。这是写程序的人的职责,我要是知道我也是程序员了。
上一页
游客

返回顶部