钓鱼网站:详解 hosts 文件
1、背景
hosts文件想必好多人都会听说过吧,大多数情况下,或许是你在安装某些软件的时候,软件在自动在线更新时无法正确及时链接时,往往就需要修改hosts文件啦。例如,更新AndroidADT时。那么究竟hosts文件是什么东东呢?
2、概念
hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。
hosts文件一般(Windows系统)都是在C:\Windows\System32\drivers\etc\,如果找不到,显示隐藏文件就可以啦。不同系统下一般存放目录都是不同的,不过可以简单搜索下就可以找到了吧。
3、工作方式
让我们来看看Hosts在Windows中是怎么工作的。
我们知道在网络上访问网站,要首先通过DNS服务器把要访问的网络域名解析成XXX.XXX.XXX.XXX的IP地址后,计算机才能对这个网络域名作访问。
要是对于每个域名请求我们都要等待域名服务器解析后返回IP信息,这样访问网络的效率就会降低,因为DNS做域名解析和返回IP都需要时间。为了提高对经常访问的网络域名的解析效率,可以通过利用Hosts文件中建立域名和IP的映射关系来达到目的。根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有这个网络域名映射关系。如果有,则调用这个IP地址映射,如果没有,再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。
4、作用
来看一下Hosts文件的工作方式以及它在具体使用中起哪些作用。
4.1 加快域名解析
对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。
4.2 方便局域网用户
在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务器时,要输入难记的IP地址。这对不少人来说相当麻烦。可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个服务器的名字就行了。对于各位大神,这样一弄是不是觉得更加方便了吧,也提高工作效率了哦,上司会看好你哟。
4.3 屏蔽网站(域名重定向)
有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,其中有些说不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域名映射到错误的IP或本地计算机的IP,这样就不用访问了。在WINDOWS系统中,约定 127.0.0.1 为本地计算机的IP地址, 0.0.0.0是错误的IP地址。
如果,我们在Hosts中,写入以下内容:
127.0.0.1 # 要屏蔽的网站 A
0.0.0.0 # 要屏蔽的网站 B
这样,计算机解析域名A和 B时,就解析到本机IP或错误的IP,达到了屏蔽网站A 和B的目的。
4.4 顺利连接系统
对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。
5、hosts文件与钓鱼网站
hosts文件有时也会被一些木马程序恶意的修改,使你访问某些网站时却被在毫不知情的情况下跳转到指定的钓鱼网站啦。类似很多的钓鱼网站就是这么实现的,接下来我们验证一下吧。
举例:把【百度】网站给跳转到我本地的路由器登陆页面
百度:www.baidu.com 路由器ip:192.168.1.1
(1)修改hosts文件前,我们ping一下百度,可知百度的域名和ip对应情况:
※有的网站根据ping是无法查到其域名对应的DNS解析的IP地址,因为它们出于安全性考虑,屏蔽了ping来查找器IP地址的。
记得以前ping百度是找不到其IP地址,今天不知怎么就能找到啦。
-------------------------------------------------------------------------------------------------
C:\Users\ThinkPad>ping baidu.com
正在 Ping baidu.com [220.181.111.86] 具有 32 字节的数据:
来自 220.181.111.86 的回复: 字节=32 时间=119ms TTL=49
来自 220.181.111.86 的回复: 字节=32 时间=116ms TTL=49
来自 220.181.111.86 的回复: 字节=32 时间=180ms TTL=49
来自 220.181.111.86 的回复: 字节=32 时间=124ms TTL=49
220.181.111.86 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 116ms,最长 = 180ms,平均 = 134ms
---------------------------------------------------------------------------------------------------
由此,可知百度的真实ip是220.181.111.86。
(2)接下来就修改hosts文件,把百度跳转到我的路由器登陆页面,修改如下:
192.168.1.1 baidu.com
(3)再次ping一下百度吧,是不是修改成功啦
--------------------------------------------------------------------------------------------------
C:\Users\ThinkPad>ping baidu.com
正在 Ping baidu.com [192.168.1.1] 具有 32 字节的数据:
来自 192.168.1.1 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间=31ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间=10ms TTL=64
192.168.1.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 31ms,平均 = 10ms
----------------------------------------------------------------------------------------------------
此时,说明成功将百度解析到了192.168.1.1(钓鱼网站)
(4)现在我们访问下百度吧,是不是跳转到其它页面啦,钓鱼成功啦。
注:举这个例子,并不是教大家如何来钓鱼的哦,而是到遇到类似钓鱼网站的时候,不妨可以查看写hosts文件是否有额外的记录,防止被钓哦。
版权声明: 本文为 InfoQ 作者【xcbeyond】的原创文章。
原文链接:【http://xie.infoq.cn/article/0feb53e2cff6e05d8bc6203d5】。文章转载请联系作者。
评论