哪种系统漏洞制作了蠕虫病毒
```html 1988年11月2日晚上,种系作蠕康奈尔大学研究生罗伯特·莫里斯在键盘上敲下最后一行代码。统漏他写了个小程序,洞制毒打算悄悄测试一下互联网的虫病规模。结果程序失控,种系作蠕六千多台计算机在几小时内瘫痪。统漏这就是洞制毒莫里斯蠕虫。它利用的虫病漏洞,说出来你可能觉得不可思议——sendmail调试模式、种系作蠕finger服务缓冲区溢出、统漏以及弱密码猜测。洞制毒三个漏洞,虫病没有一个是种系作蠕什么高深的内核提权,全是统漏当时系统管理员懒得管的基础配置问题。 蠕虫和普通病毒最大的洞制毒区别,是它自己会跑。普通病毒得等人双击exe,蠕虫不需要。它顺着网络协议自己爬,像蛆在腐肉里钻。那它靠什么爬?靠的就是系统里那些敞开的门。门没锁,或者锁是坏的,它就进去了。 莫里斯蠕虫用的第一个门,是sendmail的调试命令。sendmail这东西,当年几乎所有Unix系统都装着,用来发邮件。它的调试模式允许管理员远程执行命令,方便排错。问题是,很多系统装完sendmail后,调试模式默认开着,密码也没改。莫里斯写了几行代码,连上目标机器的25端口,发一串调试指令,对方就乖乖把蠕虫副本传过来并执行了。就这么简单。你甚至不需要什么漏洞利用技巧,就像走进一家便利店,发现收银台抽屉没锁,里面还放着钥匙。 第二个门更离谱——finger服务。finger用来查用户信息,比如你finger一下某台机器上的用户,它会告诉你这人叫什么、上次登录是什么时候。这个服务本身没什么,但它处理输入时没检查长度。莫里斯往finger端口发一个超长字符串,覆盖了栈上的返回地址,让程序跳去执行他塞进去的代码。这就是经典的缓冲区溢出。堆栈溢出这玩意儿,当年没多少人当回事。写C语言的人习惯了strcpy不检查边界,觉得“我自己的程序我自己控制”。可一旦程序要接收外部输入,这个习惯就是灾难。 第三个门,弱密码。莫里斯蠕虫带了一个小字典,里面大概四百多个常用密码:guest、root、123456、password。它连上目标机器后,用常见用户名配这些密码去试。很多系统管理员图省事,root密码就是“root”,或者干脆空着。蠕虫试几次就进去了,然后把自己复制过去,继续扫下一台。这招现在看很原始,但1988年那会儿,互联网上大部分机器都在大学和研究所里,大家默认“自己人不会乱来”。信任,成了最大的漏洞。 你发现没有,这三个漏洞没有一个是操作系统内核的bug。sendmail调试模式是配置问题,finger溢出是编程疏忽,弱密码是人的懒惰。蠕虫没攻破什么高深防线,它只是把那些没关好的窗户一扇扇推开。莫里斯本来只想数数网上有多少台机器,结果他写的代码太“成功”了,成功到把整个互联网拖垮。 后来人们修补了这些漏洞。sendmail调试模式默认关闭,finger服务被淘汰,密码策略开始强制复杂化。但蠕虫的套路没变。2001年的红色代码,利用IIS索引服务的缓冲区溢出;2003年的Slammer,利用SQL Server 2000的堆栈溢出;2017年的WannaCry,利用Windows SMB协议的永恒之蓝漏洞。每一个都是特定系统里一个具体的、可修补的缺陷。蠕虫本身不创造漏洞,它只是第一个发现门没锁,然后叫来一群同类一起往里挤。 所以回到标题那个问题:哪种系统漏洞制作了蠕虫病毒?答案是——那些被忽略的、看似无害的、管理员觉得“以后再说”的配置缺陷和编程疏忽。它们不是设计用来被攻击的,它们只是没被设计来防御。蠕虫抓住了这个空隙。莫里斯蠕虫之后,人们开始认真对待缓冲区溢出,开始默认关闭调试接口,开始强制密码复杂度。但每一次,总有人觉得“这个服务我内部用,不对外,没事”。然后蠕虫就来了。 我写这些的时候,顺手查了一下自己家里那台老路由器的固件版本。三年前的。厂商早就不更新了。里面跑着几个我根本没开过的服务,端口却开着。我没去关。因为懒。你看,三十多年过去了,莫里斯蠕虫用的那套逻辑,依然有效。哪种系统漏洞制作了蠕虫病毒
-
上一篇
-
下一篇
- 随机阅读
- 搜索
-
- 友情链接
-