如何防止黑客入侵[5-…]

2012年8月31日 | 分类: 翻墙相关 | 标签: ,

如何防止黑客入侵[5]:Web相关的防范 (上)

由于俺比较懒,导致本系列已经中断了2年之久。上星期有读者留言,希望俺尽快把本系列补上。再加上昨天看到新闻,说 Java 7 爆出全系列的高危漏洞。凡此种种,促使俺补上了本系列的第5篇,关于 Web 的防范。这部分的内容比较长,为了避免大伙儿阅读疲劳,俺把《Web相关的防范》分为上下两部分。

★Web安全的重要性

在聊正题之前,先给大伙儿强调一下”Web 安全”的重要性。
如今互联网非常普及,大部分的家用电脑和商业电脑,都具备联网功能。而且大部分电脑只要一开机,就处于联网状态。作为电脑的使用者,有相当一部分时间 是花在 Web 浏览(俗称网上冲浪)。在这样的环境中,Web 就成了恶意软件(病毒、木马、蠕虫、等)最理想的一种传播媒介。据说如今大部分电脑中招,都和 Web 有关。
正因为如此,才把 Web 相关的内容,单独汇总一篇。接下来,俺先介绍一下攻击者常见的招数,然后再介绍一下各种应对措施。

★Web 相关的攻击手法

 

◇嗅探(Sniffer)

所谓的”嗅探”,就是攻击者利用某些技术手段,截获你的网络数据流并进行分析,从而获取某些有价值的信息。通常来说,”嗅探”只是入侵的初始阶段(准备阶段)。攻击者通过”嗅探”获取到的信息,通常用来进行辅助后续的入侵行动。

举例:
很多人喜欢通过公共场所的 WiFi 热点上网。假如你使用的 WiFi 热点没有设置为强加密。那么,某个攻击者就有可能利用 WiFi 嗅探工具,截获你的上网流量。如果你正好在收发Web邮件,而且没有通过 HTTPS 加密(好多国内的 Web 邮箱不支持全程 HTTPS 加密)。那么,攻击者就可以看到你的收发的邮件内容。

不过捏,关于嗅探的防范,不是本文的重点。因为俺之前写一个系列博文《如何隐藏你的踪迹,避免跨省追捕》,里面介绍的各种招数(比如加密代理的使用),已经足以帮你对抗”嗅探”了 :)

◇钓鱼

“钓鱼攻击”包括很多种,基于 Web 的钓鱼是其中之一。
由于”钓鱼攻击”属于”社会工程学“的范畴,也不是本文的重点。今后有空的话,单独写一篇”关于钓鱼攻击的防范”。

◇利用浏览器自身的安全漏洞

本系列前一个帖子里,俺已经扫盲了”漏洞”、”补丁”等概念以及相关的一些常识。健忘的同学,可以再去温习一下。
在软件行业中,几乎每一款软件都会有漏洞——浏览器自然也不例外。浏览器的漏洞有很多种,其中一类叫做”安全漏洞”。顾名思义,就是会导致安全问题的漏洞。
如果某款浏览器的安全漏洞被攻击者发现,而浏览器厂商自己还不知晓。那么攻击者就可以利用该漏洞,发起广泛的攻击。

举例:
假设某个黑客研究 IE 的内核,首先发现 IE 存在一个”渲染图片导致缓冲区溢出”的漏洞。由于该漏洞是独家发现,只要该黑客不公开漏洞的信息,连微软(也就是 IE 浏览器的厂商)也会蒙在鼓里。因此,也就没有针对该漏洞的补丁。那么,这个黑客会如何利用该漏洞捏?
1. 首先挑选一张图片(为了吸引人,通常会选一张美女图之类的照片),然后精心地嵌入一段攻击代码在图片内部。
2. 把这张图片放到网上(比如张贴到某个大型论坛,再配上一个吸引人的标题)。
3. 过不了多久,就会吸引到很多网友来围观。如果围观的网友用的浏览器不是 IE,那么他仅仅是看到一张美女图而已,不会有啥异样。如果围观的网友用的正好是有漏洞的 IE 版本,当 IE 打开那张图片的瞬间,攻击代码就会被激活(被运行)。然后,攻击代码会悄悄地在这台电脑中安装一个木马(行话叫”植入木马”)。之后,这台电脑就成为攻击 者的肉鸡了(攻击者可以远程控制肉鸡,为所欲为)。
4. 攻击者控制了肉鸡之后,既可以拿去卖钱(有专门的地下肉鸡交易市场),也可以偷窥机主的隐私(看看有没有网银、裸照、QQ靓号)。如果控制的肉鸡数量巨大,还可以搞 DDOS 攻击……

◇利用浏览器插件或扩展的安全漏洞

如今大部分浏览器上,都安装了插件。最常见的插件就是 Flash 插件。另外还有 PDF 插件, Java 插件,等等。
浏览器的插件也属于软件,也会存在安全漏洞,因此也可以被攻击者利用。一般来说,攻击者对插件漏洞的利用,类似于对浏览器漏洞的利用。

举例1:
2011年,美国大名鼎鼎的安全公司 RSA 遭到入侵并且被深度渗透,连看家产品 SecureID 的密钥也被偷了。
攻击者之所以能得手,就是利用了 Flash 插件的一个未公开的漏洞。洋文好的同学,可以看”这里“的详细报道。

举例2:
同样是在去年,有不少 Gmail 用户遭到入侵。但实际上,Gmail 本身并没有出问题。攻击者是利用 Flash 的漏洞,伪造跨站请求,然后在 Gmail 的转发列表中加入一个攻击者的邮箱。之后,被害人收到的所有邮件,都会自动转发给攻击者。相关报道请看”这里“。

从最近几年的趋势来看,插件漏洞导致的安全问题,要多于浏览器漏洞导致的安全问题。

◇跨站脚本攻击(XSS)

最后再来说说”跨站脚本”的问题。
大部分 XSS 攻击,都是利用网站本身的漏洞。所谓的网站,其实就是若干 Web 服务器,上面运行若干软件。前面说了,只要是软件,就可能存在漏洞(包括安全漏洞)。所以,Web 服务器上的软件自然也不例外。
基于 XSS 的攻击有很多种类型,具体的技术原理也有所差异。考虑到大部分读者不是搞技术的,俺就不深入展开了。仅举一例,让大伙儿有个感性的认识。

举例:
比如某个 BBS 论坛存在漏洞——没有对用户发布的帖子内容(此处的”内容”,不是指文字内容,而是指特殊字符)进行严格的检查。如果某个攻击者发现了此漏洞,就可以精心 构造一个帖子,在帖子的正文中包含一段攻击脚本(通常是JavaScript)。接下来,攻击者把这个帖子发布到该论坛上。
然后捏,如果有人浏览了这篇帖子,这段攻击脚本就会被激活,然后干坏事……

★如何选择浏览器?

对于用户来说,浏览器是 Web 的根基。所以,谈 Web 的安全防范,首先得聊一聊如何选择浏览器。
挑选浏览器有如下几个指标供参考:
1. 浏览器的质量好不好(是否经常出安全漏洞?)
2. 浏览器的更新快不快(爆出漏洞后,是否及时出补丁或新版本)
3. 浏览器的功能强不强

根据上述指标,俺把市面上常见的浏览器,根据靠谱的程度,划分为如下三类:

◇第一类:Firefox 和 Chrome

俺个人强烈建议用 Firefox 或 Chrome 进行网上冲浪,因为这两款浏览器很符合上述指标。
质量好
10年前,浏览器市场被 IE 一统天下。但如今捏?IE 在全球的市场份额已经被 Firefox 和 Chrome 占去一半。这充分说明 Firefox 和 Chrome 的质量很好。另外,在安全漏洞方面,Firefox 和 Chrome 也优于 IE。
更新快
说到快速更新,这是 Chrome 的首创。从去年开始,Firefox 也学 Chrome 采用快速版本更新。顺便提醒一下,这两天刚推出的 Firefox 15.0 开始采用后台静默更新。
功能强
说到功能,Firefox 刚出道时,利用丰富的扩展吸引了足够多的用户。如今,无论是扩展的种类还是扩展的下载量,Firefox 是最多的;至于 Chrome,由于出道时间晚,这扩展方面不如 Firefox,但显然比 IE 强多了。

除了上述这几条,这两款浏览器还具有如下优点:
支持的平台很多
支持三大主流的桌面系统(Windows、Mac、Linux),支持两大主流的移动系统(Android、IOS)。
开源项目
由于开源而且参与的程序员也多,所以软件中的漏洞容易被及早发现。
支持 SPDY
SPDY 是 Google 提出的下一代 HTTP 协议的候选标准(相关介绍在”这里“)。SPDY 不但性能更高,而且所有传输内容都采用 SSL 进行加密。如此一来,不但让 GFW 头痛,而且也可以很好地避免攻击者的嗅探。
既然是 Google 发明的协议,Chrome 自然是第一个支持的浏览器。至于 Firefox,跟进也很及时,从 Firefox 11.0 就开始支持 SPDY。
顺便说一下:要使用 SPDY,光浏览器支持是不够滴,还需要服务端支持。如今 Google 所有的服务,都已经支持 SPDY 了。其它一些大型网站(比如 Facebook)也已经开始迁移到 SPDY 协议。希望不久的将来,是 SPDY 的天下。

以上就是俺推荐 Firefox 和 Chrome 的理由。在本文的后续章节,俺会以这两款浏览器为主,进行介绍。

◇第二类:IE、Safari、Opera

先说 Safari 和 Opera。这两款的出道时间早于 Firefox 和 Chrome。忙活这么多年,如今的市场份额依然很低,这已经说明某些问题。另外,俺个人觉得 Safari 和 Opera的扩展和插件不够丰富,更新速度也不够快,所以俺不推荐。

至于 IE,好歹也是市场份额最大的浏览器,为啥俺把它放到第二类捏?有两个原因:
1. IE 跟 Windows 集成得太紧密。IE 如果爆漏洞,通常要等微软发布 Windows 补丁来修复。而 Windows 补丁是按月发布的——太不及时了。
2. 相比 Firefox 和 Chrome,IE 是闭源项目,而不是开源项目。闭源项目由于源代码不公开,而且参与的人不够多,导致潜在的漏洞难以被发现。

说到这儿,可能有同学会问:天朝的好多网银都只能用 IE(很多网银客户端依赖于 IE 的 ActiveX 控件),咋办捏?别担心,在本系列的下一篇《Web相关的防范 (下)》会谈到此问题的解决方法。

◇第三类:五花八门的国产浏览器

说到国产的浏览器,有必要谈一下浏览器的内核(也就是浏览器的引擎)。绝大部分国产的浏览器,都不是自己开发内核,而是基于老外现成的内核。常见的浏览器内核有三款,分别是:
Gecko 内核(来自于 Mozilla 开源组织,主要供 Firefox 使用)
Trident 内核(来自于微软,主要供 IE 使用)
WebKit 内核(独立的开源项目,Chrome 和 Safari 使用此内核)
几款常见的国产浏览器(360浏览器、傲游浏览器、QQ浏览器),使用的是 Webkit + Trident 的双内核模式。
某些国产浏览器把双内核作为吹嘘的亮点。但在安全层面,双内核反而会带来安全问题。假如你手头的国产浏览器采用了 Webkit + Trident 双内核。只要这两款内核中,有一个爆出安全漏洞,你就有可能中招。也就是说:双内核会增加你中招的概率。
俺极力反对国产浏览器,还有另一个原因——政治层面的安全问题。朝廷为了监控屁民在互联网上的一言一行,会跟国产浏览器厂商合作,通过浏览器记录网民的行踪。

举例:
腾讯当年的TT浏览器,会把用户上网行踪记录在某个文件中。
至于 360,名声更是臭不可闻。360 浏览器本身就存在收集用户隐私的问题,居然还好意思自称是”安全浏览器”。而且大伙儿别忘了,奇虎公司跟 GFW 一直保持着暧昧的关系哦。

综上所述,俺个人非常不建议使用国产浏览器。

★如何选择插件和扩展?

说完浏览器的选择,再来聊聊如何选择插件和扩展。

◇插件和扩展的区别

首先说说插件和扩展的区别(很多人经常把这两者混为一谈)。所谓的插件,洋文叫 plugin 所谓的扩展,洋文叫 extension
两者区别如下:

插件
在功能上,插件通常是用来渲染页面里的 <object> 或 <embed> 标签;不会增加浏览器自身的功能。
插件通常实现比较底层的功能,通常以平台相关的代码(本地代码)编写,可以调用操作系统的 API。形式上,插件以动态库(Windows 上就是 DLL 文件)的方式,加载到浏览器的进程内。由于使用本地代码编写,插件通常依赖于特定的操作系统(不同系统的插件不能混用)。

举例:
Flash 插件
媒体播放器插件
PDF 插件
Java 插件

扩展
扩展,顾名思义,是用来扩展浏览器自身的功能。所以,扩展可以调用浏览器自身的 API,但是大部分扩展不能调用操作系统的 API。
一般来说,扩展是跟操作系统无关的。比如 Firefox 的大部分扩展,既可以用于 Windows 平台的 Firefox,也可以用于 Linux 和 Mac 的 Firefox。

举例:
俺去年推荐的 GreaseMonkey,就属于扩展。

◇插件和扩展在安全方面的差异

由于插件比较底层,一旦出现高危漏洞(比如能够执行本地代码的漏洞),攻击者就可以在操作系统中植入木马。可以这么说,插件出现漏洞,其危险性类似于浏览器出现漏洞。
相对而言,扩展出现漏洞,其危险性往往不如插件严重,通常也不会导致攻击者植入木马。

◇尽量使用大众化的扩展

虽然扩展出漏洞导致的危险性不如插件那么高,但也不能掉以轻心。
俺的经验是,尽量使用知名度高,用户数众多的扩展。这样的扩展,相对来说比较靠谱,成熟度比较高。即使出了漏洞,更新也比较及时。
反之,对于某些很少人用的扩展,最好敬而远之。顺便提一下。某些层次低的入侵者,甚至会把木马伪装成浏览器扩展,再忽悠一个很花哨的功能,然后放到网上给大伙儿用。

◇尽量避免使用插件

从上述对比可知,插件如果出现漏洞,危险性很高。所以,俺的建议是:尽量避免使用插件
不过捏,避免使用插件,说起来简单,但是做起来有点难度。其它插件,说不用就不用了。但是 Flash 插件,实在是用得太广泛了(视频网站用到它,网页休闲小游戏也用到它),估计大伙儿难以割舍啊。
不幸的是,Flash 插件又最危险。一方面是因为 Adobe 的程序猿,安全意识太差;另一方面是因为 Flash 是用得最多的插件,成为攻击者的重点研究对象。根据2011年的统计数字,去年一年,光是高危漏洞,Flash 就爆了4次——当之无愧地坐上漏洞排行榜的头把交椅。
面对 Flash 插件,该咋办捏?列位看官,请听下回分解。(下一篇会尽快发布)

回到本系列的目录


版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
http://program-think.blogspot.com/2012/08/howto-prevent-hacker-attack-5.html

==========

如何防止黑客入侵[6]:Web相关的防范 (中)

在本系列的前一篇聊了些基础性的东西,包括:常见的攻击手法、如何选择浏览器和插件。今天,俺继续介绍几个相对高级一点的话题。

★如何防范浏览器和插件的漏洞?

在前一篇已经告诉大伙儿”如何选择浏览器”。但是光知道这个是不够滴!因为浏览器也是软件,只要是软件就可能会出现漏洞(包括安全漏洞)。
即使你按照俺的建议,选择 Firefox 或 Chrome 作为日常的浏览器,也无法完全避免“浏览器自身出漏洞”的问题。而且浏览器的漏洞中,有一些是没有补丁的高危漏洞(包括”未公开漏洞”和”零日漏洞”,俺在前面的帖子里介绍过)。因为没有补丁,所以这类高危漏洞就特别危险。这就引出了第一个问题:如何防范浏览器的漏洞?
另外,在浏览器插件中,Flash 插件既是最危险的插件,也是使用最广的插件。这就引出了第二个问题,如何安全地使用危险的插件?
要解决上述2个问题,可以使用同一个原则,那就是:对浏览器进行隔离。具体的隔离方式有很多种,今天俺由浅入深,分别介绍一下。

★”多浏览器”的方案

 

◇操作步骤

这招是最简单的——就是在一台电脑上安装多款不同内核的浏览器。具体步骤俺就不多说了,节约点口水。

◇优点

1. 解决网银的问题
前面提到了国内网银依赖于 IE 的问题。但是 IE 的安全性又不如 Firefox 和 Chrome,咋办捏?最简单的办法就是同时安装两款浏览器(比如 IE + Firefox)。平时你上网的时候,用 Firefox,需要用网银,则改用 IE。
由于你仅仅在使用网银的时候,才开启 IE,大大降低了 IE 被入侵的机会。

2. 解决跨站脚本(XSS)的问题
使用多种浏览器,还可以帮你解决跨站脚本攻击的问题。
单纯的XSS攻击,主要是依赖 JavaScript。而 JavaScript 只能在浏览器进程内起作用,无法跨浏览器进程。所以,如果你同时使用 A B 两款浏览器。如果 A 浏览器发送 XSS 攻击,通常不会影响到 B 浏览器。除非这个 XSS 攻击结合了浏览器漏洞或插件漏洞。那么,多款浏览器是否能防范浏览器漏洞和插件漏洞捏?请看往下看。

3. 部分解决高危插件(Flash)的使用问题
俺在上一篇提到了利用 Flash 入侵 Gmail 的案例。
比方说,你同时用 Firefox 和 Chrome。其中 Firefox 安装 Flash,用来上普通的网站;而 Chrome 禁用 Flash,专门用来上 Google 的相关服务器(比如 Gmail)。
某天,你收到一封恶意的邮件,该邮件会利用 Flash 的漏洞来入侵用户的电脑。幸运的是,你用来访问 Gmail 的 Chrome 上没有 Flash 插件(被禁用),于是攻击者的阴谋没有得逞 :-)

◇缺点

1. 无法彻底解决浏览器漏洞和插件漏洞的问题
细心的读者会注意到,刚才那个小节的标题是”部分解决高危插件(Flash)的问题”。为啥俺要特地强调”部分解决“捏?因为浏览器的漏洞和插件的漏洞有很多种。有些漏洞只是让浏览器崩溃,无伤大雅;而有些漏洞可以导致在本地执行代码,并且能进一步植入木马。一旦你碰到后者,即使你采用”多种浏览器”的方式,也抵挡不住。
某些天真的网友可能会问:浏览器厂商和插件厂商不是会升级补丁吗?但是问题在于,有少数一些漏洞是没有补丁的。为啥会这样捏?请看本系列上一篇《安全漏洞的基本防范》,里面介绍了”未公开漏洞”和”零日漏洞”。
不过别担心,俺后面还会介绍更高级的招数,来防范这种情况。

2. 灵活性不够
对于”多浏览器”的方案,还有一个缺点是不够灵活。
因为你要为每一种用途安装一款浏览器,如果你的用途比较多(比如:上网银、普通浏览、上Gmail、看视频),就要装好几款。
另外,有些用户就喜欢某一款浏览器,你让这些用户装好几款浏览器,他们会觉得不爽。
对于”灵活性不够”的缺点,大伙儿可以参考接下来要介绍的第二招——”多实例”的方案。

★”多实例”的方案

 

◇什么是浏览器的多实例?

所谓的浏览器多实例,有时候也称之为 “Multiple Profiles”。
不论是 Firefox 还是 Chrome,默认安装的时候,只有一个实例(Profile)。和浏览器相关的各种信息,包括:插件、扩展、外观(皮肤)、页面缓存、cookie、等等,都存储在这个实例中。
反之,如果使用多实例,每个实例都具有独立的插件、独立的扩展、独立的外观(皮肤)、独立的页面缓存、独立的cookie、等等。不同实例之间是相对隔离的,不会互相影响。
对于 Chrome,再特别提醒一下:
Chrome 同时支持 “Multiple Profiles” 和 “Multiple Accounts”。但别把这两者搞混了。即使你配置了多个Accounts,依然在同一个实例里。

◇操作步骤

多实例的配置,很多人不晓得。所以俺详细说一下。考虑到 Windows 用户居多,俺以 Windows 举例。Linux 和 Mac OS 的操作步骤大同小异。

多实例的 Firefox

对于 Windows 上的 Firefox,Profile 都放置于 %APPDATA%\Mozilla\Firefox\Profiles 目录下。
假设你想创建一个新的 Firefox 实例,专门用来访问你的 Web 邮箱。那你可以通过如下命令行来启动 Firefox。
{PATH}\firefox.exe” -P “Mail” -no-remote
上述命令中,{PATH} 表示你的 Firefox 的安装目录。Mail 表示你要创建的实例名(实例名可以是任意字母组合,你也可以换其它名称)。
运行完上述命令,Firefox 会启动出一个名叫 Mail 的实例。与此同时,在 %APPDATA%\Mozilla\Firefox\Profiles 下会多出一个名叫 Mail 的目录。
按照上述方式依样画葫芦,你就可以启动出任意多个 Firefox 实例。为了省事,你可以把上述命令行做成一个快捷方式,放到桌面上,免得每次都敲键盘。
另外,Firefox 还提供了一个多实例的管理界面,用如下命令可以调出该界面。
{PATH}\firefox.exe” -p

多实例的 Chrome

Chrome 类似于 Firefox,也可以通过命令行启动新的实例。
对于 Windows 上的 Chrome,由于 Chrome 安装的时候没让选安装目录,所以其安装目录固定如下

Windows 7 或 Vista 系统
C:\Users\{USER}\AppData\Local\Google\Chrome\Application\chrome.exe
Windows XP 系统
C:\Documents and Settings\{USER}\Local Settings\Application Data\Google\Chrome\Application\chrome.exe
上述的 {USER} 表示你的 Windows 用户名

找到 chrome.exe 之后,接下来,你需要创建一个目录,用来存放新创建的实例。比方说,你用的是这个目录: X:\XXXX\
然后,通过如下命令启动 Chrome,就可以创建出新实例

Vista 或 Windows 7 系统
C:\Users\{USER}\AppData\Local\Google\Chrome\Application\chrome.exe –user-data-dir=”X:\XXXX\
Windows XP 或 Win 2003 系统
C:\Documents and Settings\{USER}\Local Settings\Application Data\Google\Chrome\chrome.exe –user-data-dir=”X:\XXXX\

按照上述方式依样画葫芦,你就可以创建出任意多个 Chrome 实例。为了省事,你可以把上述命令行做成一个快捷方式,放到桌面上,免得每次都敲键盘。

◇优点

1. 解决跨站脚本(XSS)的问题
这个优点跟”多浏览器”方案是类似的。俺就不再啰嗦了。

2. 部分解决高危插件(Flash)的使用问题
这个优点跟”多浏览器”方案是类似的。俺就不再啰嗦了。

3. 灵活性高
跟”多浏览器”的方案相比,”多实例”的方案明显灵活多了。因为 Firefox 和 Chrome 可以创建出任意多个实例(只要你的硬盘够大,想建几个实例都行)。而且,这个方案可以满足某些 Firefox 粉丝或 Chrome 粉丝的个人偏好。

◇缺点

1. 无法彻底解决浏览器漏洞的问题
在这方面,”多实例方案” 跟”多浏览器方案” 具有共同的缺陷——无法抵御具有本地代码执行的高危漏洞。包括浏览器漏洞和插件漏洞都有可能出现这类高危漏洞。
那么,该咋办捏,请看下一节——”多用户”的方案。

★”多用户”的方案

前面提到的两种方案,都无法防范某些浏览器或插件的高危漏洞。因为这些高危漏洞会导致在本地执行攻击代码,并有可能植入木马。现在,俺来介绍第三种方案——多用户方案。此方案可以防范大部分在本地执行的攻击代码。

◇某些高危漏洞为啥很危险?

俺前面反复提到”导致本地执行攻击代码的漏洞”。这样的漏洞是非常非常危险的。为啥捏?俺简单扫盲一下。
如果你的浏览器或者浏览器插件具有这类漏洞,当你访问某个恶意网页时,如果该恶意网页能够利用此漏洞,就可以在你的本地的操作系统中执行攻击代码。由于这个攻击代码是在浏览器的进程内触发的,所以该攻击代码就具有当前用户所具有的权限。
比方说,如今大部分网友都用 Windows 上网。并且,这些网友都是以”系统管理员”的身份使用浏览器。一旦碰到这类漏洞时,本地的攻击代码也同时具有了”系统管理员权限”。有了这么高的权限,攻击代码可以为所欲为。
某些网友可能会问:那不用管理员身份上网,是不是就没事了?
俺只能说,用低权限的用户身份(比如 Windows 里面的 Users 组)上网,相对于用管理员身份上网,会好一些。但是捏,还是有问题。
举个例子:
即使你用低权限用户上网,一旦遭遇这类漏洞,攻击代码还是有可能植入木马。然后捏,这个木马有可能会查找你电脑上的各种私密文件(比如你的裸照)。然后木马会把这些私密文件发送给木马的主人。

从上述例子可见,用低权限的用户上网,不能彻底解决问题。所以,俺隆重推出第三种方案——多用户方案。

◇什么是多用户方案?

如今的桌面操作系统,无论是 Windows 还是 Linux 或 Mac OS,都可以创建多个操作系统用户,并且这多个用户可以同时运行程序。如果你用过 WinXP 的快速用户切换,应该对此深有体会。
多用户方案的关键在于:
你需要创建一个或多个低权限的”上网用户“(所谓低权限,必须低于你当前使用的用户权限)。这些”上网用户”专门用来访问各种网站。
假使你不幸访问了恶意网页,遭遇本地执行的攻击代码,问题也不大。因为这些上网用户的权限很低,所以它们触发的攻击代码,权限也很低。因此攻击代码就比较难钻空子。一般来说,对”上网用户”的权限限制得越严格,攻击代码就越难有作为。

◇操作步骤

1. 创建上网用户
如何在桌面系统中创建新的用户,大家应该都会吧?不会的同学,请看《避免使用高权限用户》一文的相关章节。上网用户可以只创建一个,也可以创建多个。具体建几个,看你的需求。
举例:
假如你非常看重网银的安全,可以创建两个上网用户,一个专门用来访问网银,一个专门用来上其它网站。
提醒一下:在这些上网用户的环境中,除了浏览器,其它啥软件都不需要装。

2. 设置上网用户的权限
再啰嗦一次,上网用户的权限,一定要低于你目前使用的用户权限。
以 Windows 为例:
在 Windows 中,常见的用户组的权限大小分别是: Administrators 组 > Power Users 组 > Users 组 > Guest 组。
如果你平时用”Administrators 组”的用户,那么可以把上网用户设置为:Power User 或 User 或 Guest
如果你平时用”Power Users 组”的用户,那么上网用户就只能设置为 User 或 Guest。
以此类推……
(如果你想了解这些用户组之间的权限差异,可以参考本系列的第一个帖子《避免使用高权限用户》)

提醒一下:
Guest 用户组的权限是最低,低得难以想象。所以,从安全角度而言,把上网用户设置为 Guest 组是最安全的。但是,也是最麻烦的。你需要进行好多设置——否则的话,你可能连浏览器都跑不起来。
所以,除非你对 Windows 系统比较熟悉,否则的话,俺不建议使用 Guest 组的权限。比较理想的权限是 Users 组。这个组的权限也比较低,但是用起来不麻烦。

3. 设置文件目录的访问控制权限(ACL)
每个人的电脑中,都会有某几个目录是用来存放你的敏感个人资料的。
你必须设置这些目录的访问控制权限(简称 ACL),设置为:”上网用户”所在的组不能读写。这样一来,你可以把自己那些敏感的,私密的文件(比如自己的裸照),都通过上述 ACL 保护起来。即使”上网用户”遭遇高危漏洞的攻击,本地执行的攻击代码也难以拿到你的隐私(俺说”难以拿到”,意思就是说,还是有可能滴,但是可能性很小,后面会解释)。
顺便提醒一下:对于 Windows 系统,只有使用 NTFS 格式的分区,才支持 ACL。FAT32 格式的分区是不支持滴!
如果你是个菜鸟,不懂得如何设置文件及目录的 ACL,没关系!Google 一下,你就知道。

4. 使用技巧
你可以直接用 Windows 提供的”快速用户切换”。对于 Windows 系统,从 WinXP 开始就提供了快速用户切换功能。用它来切换用户还是很方便滴。但是这招有一个缺点:你一次只能看到某一个用户运行的软件,其它用户运行的软件看不到。
不过没关系,还有一个小技巧。
假设你建了 2 个用户 A 和 B。其中 A 是主用户,用来完成你日常的工作。B 是上网用户。那么,你可以先登录 A 用户,然后在 A 用户的桌面上,以 B 用户的身份启动浏览器。至于如何启动,请看《使用高权限用户》一文的 “◇切换用户的麻烦” 这个小节。
对于习惯于命令行的 IT 专业人员,可以用命令行的方式启动指定用户的某个进程。Linux 系统和 Mac OS 系统有 su 命令;Windows 系统有 runas 命令。

◇优点

1. 解决跨站脚本(XSS)的问题
这个优点跟前两种方案类似,俺就不再啰嗦了。

2. 解决高危插件(Flash)的使用问题
这个优点跟前两种方案类似,俺就不再啰嗦了。

3. 防范各种浏览器漏洞
正如刚才提到的——前两种方案(多浏览器、多实例)无法防御浏览器及插件的某些高危漏洞(具备本地执行攻击代码的漏洞)。而”多用户方案”可以大大降低这类漏洞的危害性。使得攻击代码只能威胁到”上网用户”本身,而不会威胁到其它操作系统用户。

◇缺点

1. 初始配置稍嫌麻烦
相比前面两种方案,这个方案的初始配置比较麻烦。而且你要分清楚哪个用户是用来干啥的。不过捏,一旦用久了,习惯了,也就不觉得麻烦了。

2. 无法防范极个别高明的攻击者
“多用户方案”之所以可以隔离攻击代码,是因为如今所有主流的桌面操作系统,都能够在操作系统层面,对不同的系统用户进行隔离。因为有操作系统层面的隔离,所以才限制了攻击代码的危害性。
但是,操作系统层面的隔离,也不是百分之百可靠滴。不要忘了,操作系统本身也是软件,也可能出现安全漏洞。在操作系统的安全漏洞中,有一类漏洞叫做”权限提升漏洞”(简称”提权漏洞”)。所谓的”提权漏洞”,顾名思义,就是能够提升当前执行代码的权限。比方说,本来攻击代码没有管理员权限,通过”提权漏洞”,就可以拿到管理员权限。
如果你的操作系统本身存在”提权漏洞”,同时你的浏览器或者插件存在”能够在本地执行代码的漏洞”,那么,高明的攻击者就有可能把这两者组合起来,对你的系统进行组合攻击。
不过大伙儿别担心——要实现这类组合攻击,需要同时掌握未公开的浏览器或插件漏洞,并且还要有未公开的操作系统提权漏洞(俺在前面的帖子里 介绍过,”未公开漏洞”比”零日漏洞”更危险)。另外,攻击者还需要做很多准备工作,才能诱使你访问到恶意网页。一般的入侵者根本没有这个本事,也没有耐 心去搞这些。反之,有这个本事又有这个耐心的入侵者,根本不会拿这种招数去入侵普通网友(这么做简直是大材小用)。所以,如果你只是一个普通的网友,在前 面三个方案中挑选一个,即可。

估计有些好奇的同学会打听了。什么样的入侵者具有这种实力?什么样的人会成为他们的目标?
由于本文的篇幅已经很长了,俺稍微调一下列位看官的胃口,在《Web相关的防范 (下)》再来八卦这些,同时也介绍一下比”多用户方案”更高级的第四种方案。虽然这种方案很多人用不到,但俺还是会写出来,就当满足一下大伙儿的好奇心 :-)


版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
http://program-think.blogspot.com/2012/09/howto-prevent-hacker-attack-6.html

==========

如何防止黑客入侵[7]:Web相关的防范 (下)

本系列前一篇,俺介绍了三种隔离浏览器的方式(多种浏览器、同种浏览器多实例、多操作系统用户)。今天继续介绍第四种隔离方式——虚拟机,然后再推荐一些浏览器的安全扩展。

★”虚拟机”的方案

 

◇什么是”虚拟机”?

本文提到的”虚拟机”,是”操作系统虚拟机”的简称。
最近10年来,硬件水平显著提升,操作系统虚拟化的技术开始普及,出现了若干针对操作系统的虚拟化软件。这种软件可以让你在一台电脑上,同时运行多个操作系统(是不是很有趣?)。通过虚拟化软件来运行的操作系统,称之为”虚拟操作系统”;与之对应,你原先的操作系统称之为:真实操作系统或宿主操作系统。
由于”虚拟操作系统”是虚拟出来的,你可以在里面为所欲为,而不会对真实操作系统产生实质性的影响。比方说,你可以在虚拟系统中把硬盘格式化,但不会影响到你的真实系统。同样的,如果某个虚拟系统被病毒感染了,也不会影响真实系统和其它虚拟系统。

◇什么是”多虚拟机”的方案?

所谓”多虚拟机”的方案,就是在你的电脑上创建多个虚拟机,分别用来实现不同安全级别的上网行为。
举个例子:
你可以创建虚拟机A,只用来访问网银(不访问其它网站);然后创建虚拟机B,用来进行其它上网行为。那么,即使你在虚拟机B受到攻击,对虚拟机A也完全没有影响。这样一来,就可以彻底保证网银的安全。

◇为啥要用”多虚拟机”的方案?

前一篇博文提到的三种隔离方案,”多用户”比前两种方案安全。这种方案是基于操作系统提供的用户壁垒——包括:不同用户的进程隔离性、文件系统的访问控制(ACL)、等等。
但是”多用户”方案还是有缺陷的。如果攻击者同时利用了未公开的浏览器漏洞和未公开的操作系统提权漏洞,就有可能攻破操作系统的用户壁垒。不过大伙儿别担心,实现这种攻击的难度是很大的,只有足够牛B的入侵者能够做到这点。
为了满足列位看官的好奇心,稍微介绍一下所谓的牛B黑客,大都是哪些人。

御用高手
所谓的”御用高手”,也就是官方资助的入侵者(类似于武侠小说中的大内高手)。这种入侵者,往往不是一个人单干,而是一个团队群P。
“御用高手”的目标大致有如下:
1. 军事目标
军事目标主要有:外国重要的政府机构(比如五角大楼)、外国重要的军工企业(比如洛克希德-马丁公司)
俺在上一篇提 到了 RSA 被入侵的案例:攻击者首先利用零日漏洞入侵某个 RSA 公司的雇员,经过深度渗透之后,入侵者搞到了 RSA 动态令牌产品(SecureID)的种子(种子是用来生成动态口令的)。由于 SecureID 产品被许多大公司采用,所以入侵者可以利用偷来的种子算出动态口令,进而实现对美国多家大型军工企业的入侵。
计划得如此严密的系列入侵,通常只有御用黑客团队能够干得出来。
2. 经济目标
所谓的经济目标,主要都是国外知名的大公司。
通过入侵这些公司,可以窃取商业机密,从而获得巨大的经济效益。
3. 政治目标
政治目标就比较杂,比如:知名的反共网站、某些知名的政治异议人士的电脑/手机/邮箱/IM、等等。
举个例子:2009年底,Google 被来自中国大陆的攻击者深度渗透(这就是传说中的”极光行动“)。此事导致 Google 愤而退出中国市场。根据事后分析,入侵者的注意力集中在某些 Gmail 邮箱的内容。而这些 Gmail 邮箱恰恰属于中国的持不同政见者。由此可见,入侵 Google 的人很可能是朝廷的走狗。

民间高手
除了御用黑客,也不排除民间有高手。甚至不排除某个御用黑客在业余时间干点脏活。
和御用高手不同,民间高手的目标相对比较单一,大部分人是为了获取经济利益。

综上所述,能被这2类人盯上的,往往是高价值目标。如果你只是一个普通网民,不用担心被高手盯上(也就是说,”多用户”的方案基本上可以满足你的安全需求);反之,如果你自认为是一个高价值的目标,或者你对安全的要求非常非常高,不妨尝试一下”多虚拟机”的方案。

◇如何操作?

刚才已经说了”多虚拟机”的原理,还举了例子。
如果你已熟悉”虚拟化软件”(比如:VMware系列、VirtualBox、等)的使用,那么本方案对你来说其实很简单——无非就是安装若干个虚拟操作系统,然后在虚拟系统中安装软件,仅此而已。
由于本文的重点是防范黑客入侵,所以俺就不再介绍虚拟化软件本身的安装和配置。如果有空的话,俺会单独写一篇入门,扫盲虚拟化软件的使用。

◇优点

在4种浏览器隔离方案中,多虚拟机的安全性最高。即使你的某个虚拟机被病毒感染或者被植入木马,也几乎不会影响到你的其它虚拟机和真实系统。
当然,绝对的安全是不存在滴。虚拟化软件也是软件,只要是软件,就有可能出现漏洞,只要出现漏洞,就有可能被利用。但是,想通过虚拟化软件的漏洞来突破虚拟机的壁垒,难度更大(远远大于突破操作系统的用户壁垒)。这方面的技术细节,说来话长,俺就不展开了。

◇缺点

对硬件的要求高(主要是物理内存和CPU)。
具体要多高的硬件配置,取决于你同时开几个虚拟机。同时运行的虚拟机越多,就需要越大的物理内存和越多的CPU核心。

★使用浏览器的安全扩展

终于把浏览器的话题说完了。接下来再介绍几款安全方面的浏览器扩展。这些扩展可以帮你提高 Web 的安全性。

◇NoScript(Firefox)

简介
NoScript 是一个名气很大、功能很强的 Firefox 扩展,主页在”这里“。
通过它,你可以定制网站白名单。只有当你浏览白名单内的网站时,才启用浏览器的 JavaScript 脚本功能和插件功能(比如 Flash插件、Java插件、PDF插件、等)。
白名单只是它的功能之一,更多的功能介绍,请看它的主页。

局限性
这个扩展可以有效地避免陌生网站上的挂马。但是,如果你经常访问的网站出现跨站脚本的漏洞,NoScript有可能帮不了你。
前面的博文中, 俺曾经举了一个跨站脚本攻击的例子。比如说,你经常上某个 BBS,并且该 BBS 的界面功能依赖于 JavaScript。那么,你就必须把这个 BBS 站点加入到 NoScript 的白名单中。假如这个 BBS 本身出现了基于 JS 的跨站脚本漏洞,那你还是有可能中招 :(

◇NotScripts 和 ScriptNo(Chrome)

简介
刚才提到的 NoScript 只支持 Firefox。用 Chrome 的同学别慌!在 Chrome 上有另外两款扩展,跟 NoScript 很像(不但功能很像,连名称也很像)。
一款叫做 NotScripts,主页在”这里“;另一款叫 ScriptNo,主页在”这里“。
NotScripts 的用户数比 ScriptNo 略多。但 NotScripts 最新的一个版本是2010年底发布的——快两年了。而 ScriptNo 最新的版本是今年年初发布的。
至于要选哪个,请大伙儿自行判断。

局限性
这两款扩展的局限性类似于刚才提到的 NoScript,俺就不再啰嗦了。

◇HTTPS Everywhere

这是著名的电子前线组织(EFF)发布的扩展,主页在”这里“,同时支持 Firefox 和 Chrome。说到 EFF,顺便提一下:TOR 也是该组织发布的产品。
如今,有很多网站都同时提供明文的 HTTP 协议和加密的 HTTPS 协议(比如维基百科)。装了 HTTPS Everywhere 扩展之后,如果你浏览的网站支持 HTTPS 协议,该扩展就会强制浏览器通过 HTTPS 协议访问该网站。从技术上讲,就是把所有针对该网站的 HTTP 请求都转换为 HTTPS 请求。
为啥要强制用 HTTPS 协议捏?因为 HTTPS 是加密协议,可以保护你免受入侵者的嗅探(关于”嗅探”的案例,前面的博文提到过)。
除了上述功能,HTTPS Everywhere 扩展还可以帮你侦测有问题的 HTTPS 证书,降低”中间人攻击“的风险。

局限性
如果某个网站只有 HTTP 连接,不提供 HTTPS 连接,那 HTTPS Everywhere 也帮不了你。

◇LastPass

简介
LastPass 名气最大的在线口令管理工具。官网在”这里“,维基百科的介绍在”这里“。
该工具提供了针对所有主流浏览器的扩展(包括IE、Firefox、Chrome、Opera、Safari、等),帮你自动填写网站的登录口令,免 除你记忆诸多口令的麻烦。你本人只需要记住一个”主密码”,LastPass 会利用主密码来加密本地的密码数据库——你的其它口令都存在在该数据库中。
为了确保安全性,LastPass 进行在线同步时,传输的是加密后的数据库。因此,即使 LastPass 网站被黑,入侵者拿到的也只是加密后的用户口令数据库。同样的,如果有人偷了你的电脑,但不知道你的主密码,也无法打开你的密码数据库。

局限性
LastPass 的做法相当于把鸡蛋都放在一个篮子里,有好处也有坏处。
最大的风险在于主密码被盗。一旦主密码被盗,密码数据库中的所有密码就都暴露了。什么情况下会发生主密码被盗捏?比如你的电脑被植入木马,并且此木马具有键盘记录的功能;比如你输入主密码的时候,有人在旁边偷窥;……
每个人都有很多秘密。不过根据二八原理,真正重要的密码不到20%,大部分密码都不太重要。所以俺个人的建议是:少数特别重要的密码,还是靠自己脑子来记;大多数不太重要的密码,可以交给类似 LastPass 之类的口令管理软件。

◇BetterPrivacy

简介
BetterPrivacy 是一个侧重于隐私保护的 Firefox 扩展,主页在”这里“。
当你浏览某些网站的时候,网站可能会在你的电脑上记录 cookie。通过这些 cookie,网站可以追踪你的上网行为(比如你多久访问一次这个网站)。
有了 BetterPrivacy,你就可以配置允许哪些网站记录 cookie。BetterPrivacy 的牛B之处在于:它不光可以控制传统的 cookie,还可以控制 Flash 的 cookie(LSO)。

局限性
此扩展只针对隐私保护,无法防范扩展脚本等攻击。

浏览器的安全类扩展,细分为很多领域,数量也很多。限于篇幅,俺仅挑选出每个领域最出名的代表。如果你还有补充的,可以到本文留言

★结尾

关于 Web 的安全防范,本来只想写一篇。谁曾想,东扯西扯,居然写了三篇。可能有同学会问,为啥没提到杀毒软件和个人防火墙?俺觉得:把这两个话题放到 Web 安全防范中聊,不太合适——还是单独拿出来聊比较好。在本系列后续的博文,会说说杀毒软件和个人防火墙的那些事儿。


版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
http://program-think.blogspot.com/2012/10/howto-prevent-hacker-attack-7.html

  1. Sugel
    2012年9月6日15:21

    插件的官方下载地址为 https://chrome.google.com/webstore/detail/dpngnfpemfncmjhfhcbokalcacfocinc/ ,如果无法进入官方平台,可以通过 此链接 安装。

  2. AS
    2012年9月1日15:27