ARP 攻击
这种攻击大家几乎都听出老茧了,即使不懂电脑的人也知道装个 ARP 防火墙 保平安,其危害之大可想而知。简单的说,ARP 就是广播查询某个 IP 对应的 MAC 地址,在用这个 IP 的人回个声。知道这个 IP 对应的 MAC 地址,就可以链路通信了(链路层只能通过MAC地址通信)。
ARP请求
如果有人冒充回复,并抢在正常人之前,伪造的答案也就先入为主。IP 被解析到错误的地址上,之后所有的通信都被劫持了。
ARP 劫持
事实上,早期的系统还有个更严重的BUG:直接给用户发送一个 ARP 回复包,即使对方从没请求过,系统也会接受这个回复,并提前保存里面的记录。这种基于缓存的投毒,让劫持成功率更上一层楼。
ARP回复
防范措施:由于这种攻击太过泛滥,以至大部分路由器都带了防 ARP 攻击的功能。客户端的 ARP 防火墙也数不胜数,似乎成了安全软件的标配。当然,系统也支持强制绑定 IP 与 MAC 的对应,必要时可以使用。
很多教程都是用 Wireshark 来演示,事实上当年有一款叫 Iris 的软件非常好用,可以修改封包再次发送,用它可以很容易搞明白各种攻击的原理。不过N年没更新了还不支持64位的。
DHCP 钓鱼
现实中,并不是每个人都会配置网络参数,或者出于方便,让网络系统自动配置,自动分配IP地址设置DNS等。出于这个目的,DHCP 服务诞生了。
由于没有配置IP地址、网关、DNS 等,在网络上是寸步难行的,因此首先需要从 DHCP 那获得这些信息。然而,既然连 IP 地址都没有,那又是如何通信的?显然,只能发到广播地址(255.255.255.255)上,而自己则暂时使用无效的IP地址(0.0.0.0)。(事实上,链路层的通信只要有 MAC 地址就行,IP 地址已属于网络层了,但 DHCP 由于某些特殊需要使用的是 UDP 协议)
因为是发往广播,内网环境里的所有用户都能听到。如果存在多个DHCP服务器,则分别予以回复;用户则选择最先收到的。由于规则是如此简单,以至于用户没有选择的余地。
DHCP 广播
尚若黑客也在内网里也开启了 DHCP 服务,用户收到的回复包很可能就是黑客发出的,这时用户的网络配置完全听天由命了,不想被劫持都难了。
DHCP劫持
防范措施:如果是用网线上网的话,最好还是手动的配置。当然,管理员应该严格控制 DHCP 回复的权限,只允许交换机特定的接口才有资格发送回复包。
只要是这类提问/抢答模式的,都面临被冒充回答的风险。很多原理都类似。
DNS 劫持
如同 ARP 将 IP 解析成 MAC 地址 一样,DNS 负责将域名解析成 IP 地址。作为网络层的服务,面对的用户更广泛,当然面临的风险也大的多。一旦遭到入侵,所有用户都倒霉了。近些年的重大网络事故无不和 DNS 有关。
DNS 服务一旦被黑客控制,用户发起的各种域名解析,都将被暗中操控。将正常网站解析成黑客服务器的 IP,并事先开启了 HTTP 代{过}{滤}理,用户还是能正常上网,并且几乎看不出任何破绽;只不过所有流量都是经由黑客的代{过}{滤}理服务器收发的,因而黑客可以轻易获取各种明文传输的密码,比如各种网站账号信息都将一览无余。
DNS 劫持
由于 DNS 服务器的重要性,现实中通常有着较高的安全防护,想入侵它系统不是件易事。但实际未必如此兴师动众,一些 DNS 程序本身就存在着设计缺陷,导致黑客能控制某些域名的指向。其中最恶名昭彰的当属 DNS 缓存投毒。
大家或许已发现,域名->IP->MAC->接口,只要是动态查询的就会多一个环节,风险自然增加。灵活性与安全性始终是不可兼得。
防范措施:手动设置一些权威的 DNS 服务器,例如谷歌的 8.8.8.8,4.4.4.4 会靠谱的多。
公网上的 DNS 劫持很少发生,但家用路由器的 DNS 劫持已泛滥成灾了。开头报道的路由器漏洞,最终的利用方式也就是修改了 DNS 地址。
CDN 入侵
CDN 能加速大家都知道,但其中原理不少人都不清楚。其实,CDN 本身就是一种 DNS 劫持,只不过是良性的。不同于黑客强制 DNS 把域名解析到自己的钓鱼 IP 上,CDN 则是让 DNS 主动配合,把域名解析到临近的服务器上。这台服务器同样也开启了 HTTP 代{过}{滤}理,让用户感觉不到 CDN 的存在。
不过 CDN 不像黑客那样贪心,劫持用户所有流量,它只『劫持』用户的静态资源访问,对于之前用户访问过的资源,CDN 将直接从本地缓存里反馈给用户,因此速度有了很大的提升。然而,只要是有缓存的地方,都是大有可为的。一旦 CDN 服务器遭受入侵,硬盘上的缓存文件就岌岌可危了,网页被注入脚本,可执行文件被感染,一大波僵尸即将出现。
CDN 入侵
防范措施:感觉运营商不靠谱的话,换个第三方不带加速的 DNS,或许就不会解析到 CDN 服务器上了。
不少 CDN 黑白通吃,为了省流量不按套路出牌,超过了缓存时间也不更新,甚至还有忽略 URL 问号后面的,导致程序猿们在资源更新的问题上头疼不已。
路由器弱口令
当电脑价格一再下降,到了大家打算买第二台的时候,路由器市场也随之火热起来。但由于繁琐的配置,差劲的用户体验,至今仍有相当部分的用户不明白如何配置路由器。192.168.1.1 和 admin/admin 几乎成了国内路由器的常量。多少回,用这毫无技术含量的方法进入网吧或图书馆的路由器后台。
如果有人恶搞重启路由,或者给他人限速,你得感谢他的仁慈,这都算不严重。要是把路由器的DNS给改了,那就相当严重了!公网的 DNS 劫持一般不会持续太久,但路由器的 DNS 劫持也许长年累月都不会觉察到。
事实上,不乏一些安全意识强的用户也使用默认密码。理由很简单,目前的路由器有两道门槛:一个 WiFi 连接密码,另一个才是管理密码。很多人设置了复杂的 WiFi 密码就高枕无忧了,心想都连不到我的网络里怎么可能进的了后台?
之前我也有过这观念,但总觉不对劲:万一家里其他电脑或手机中毒了,自动尝试用弱口令爆进路由器后台怎么办。城门都被占领了,城墙再牢固又有何用。
路由器弱口令
事实上,黑客除了修改 DNS 配置外,还有更恐怖的行为:升级路由器的固件 —— 替换成一个看似完全相同但植入了恶意程序的固件!尽管这目前还尚未普及,然而一旦流行,大批路由器将成为潘多拉魔盒。
防范措施:千万别轻视路由器的密码,其实它比你所有账号都重要。
不改默认密码的用户,神都保佑不了你~
路由器 CSRF
回到本文开始所说的,为什么有那么多路由器会出现这个漏洞呢?也许是路由器的开发人员太高估用户了,认为绝大多数用户都会去修改了默认密码,因此 CSRF 几乎难以产生。事实上,国内网民的安全意识远超他们的想象。加上刚才说的,只设置了 WiFi 密码而忽略了管理密码,导致一个恶意程序就能悄悄进入路由器后台。没想到现在这种病毒还真出现了,而且居然还是 Web 版的!
路由器 CSRF
CSRF 漏洞让病毒木马都用不着了。用户直接访问一个网页,甚至是一帖子,浏览器就会自动向路由器发起修改配置的请求。由于国产路由器的网页开发是如此的差劲,登录基本都是用既不安全又丑陋的 HTTP 401 弹框。这种登录只需在 URL 里填上『用户名:密码@』即可自动通过,即使登录失败也不会有什么提示。
防范措施:绝对要看管好路由器密码,并且定期去检查配置是否被篡改。
看过路由器页面源代码会发现,那简直是惨不忍睹,甚至还是 IE5 时代的风格。路由器芯片都是采购的,内核也有开源的,所谓的『自主研发』就是做了那几个页面?
PPPoE 钓鱼
好了,不吐槽路由器了,下面说说再高级的路由器也无法避免的事。除了一些大公司或学校,用的是固定的专线接入上网,个人或者小组织很少会使用这种土豪级套餐,只能老老实实的拨号上网 —— 无论是电信,还是网通铁通各种通。
不少人都存在误区,认为拨号是物理信号的建立过程,在没有拨上之前,点对点是不通的。如果真是这样,那么拨号时账号密码是如何传过去的呢?显然不可能。事实上,终端之间时刻都是畅通的,只不过不拨号就无法得到IP、网关、会话等参数,即使强制把包发给网关,人家虽能收到,但没有认证的会话是不予理睬的,你自然没法上网。
PPPoE,大家经常在拨号时看到这词。Point-Point Protocol over Ethernet,故名思议,就是点对点的协议:用户发送账号密码认证给终端(BRAS),并得到上网 IP、网关地址、会话等。而且协议是基于以太网的,哪怕线路不是,也得想办法把数据封装进去。
传统的 ADSL 是通过电话线上网的,于是需要一个『猫』来把以太网数据调制成电话信号,最终通过电信交换机传输。这种设备保障每家每户都是独立的,以免电话信号被窃听。
然而,后来兴起的各种通就不一定了。不少打着的『千兆到楼,百兆到家』的宽带,就是建了N个小区局域网,然后合并到一个大的城域网(MAN)里。所谓的『百兆』,无非就是拖进你家的那根网线插在楼下一个 100Mbps 的交换机上而已。
用过网通的都知道,百兆带宽并没有快到哪里,甚至在一些南方地区网速慢如蜗牛。但在下载的时候,却能轻松飙到数兆每秒。这时局域网的作用就发挥出来了,如果附近有多个人在看同样的视频,P2P 就直接在内网里共享流量了,大幅减轻了节点的压力。
但是,整个小区成了一个局域网,是多么的不安全。有时甚至不合理的 VLAN 划分,导致多个小区成一内网。要是有人开启 DHCP 服务,其他用户插上网线就能上网了,连拨号都不用,难道天上掉馅饼了?如果敢吃,那可能就落入黑客的陷阱了。
当然,现在直接插网线的并不多,基本通过路由器自动拨号了。但他们的协议都是一样的 —— PPPoE,一种极不安全的协议。
类似 DHCP 协议,PPPoE 也是通过广播来探寻有哪些可用的终端,意味着整个小区的内网用户都能收到;同时探寻包一直往上冒泡,直到被城域网的终端们收到,然后开始纷纷回应。
PPPoe广播
如果小区里有人私自开启一个 PPPoE 终端服务,显然是最先被收到的。真正的回应包还在大街小巷里传递着,用户和黑客已经开始协商认证了。
PPPOE钓鱼
不过或许你会说,这必须有人拨号才能上钩,现在都用路由器,长年累月不会断开。如果不想耐心等,也有很简单的方法:来一次集体掉线。刚刚说过,可以用短路的网线,引发一场广播风暴。不过这太过暴力了,甚至会引起流量异常的报警。我们可以使用更简单有效的方法:MAC 欺骗,不停伪造终端服务器的 MAC 地址,就可以将小区用户的数据包统统吸过来了。
PPPoE 使用的是一种隧道方式,将任何数据都封装在其栈下,因此捕捉到用户任意一个包,即可得到 PPPoE 栈上的会话 ID。然后冒充终端,向用户发送一个『断开连接』的指令,用户就乖乖下线了。使用这种方法,分分钟就能让整个小区的用户重新拨一次号,于是可以快速钓鱼了。
还有更糟的是,PPPoE 绝大多数时候都是明文传输用户名和密码的,因此还能额外获得用户发来的认证账号。
前面吐槽了大学寝室楼 1000 多机器还不划 VLAN 的,于是写一个简单的 PPPoE 模拟器,就能轻松抓到整个网络环境里的上网账号。(还支持一键全都拨上,集体下线的恶作剧功能~)
(责任编辑:安博涛)