惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
O
OpenAI News
WordPress大学
WordPress大学
P
Proofpoint News Feed
J
Java Code Geeks
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Register - Security
The Register - Security
Engineering at Meta
Engineering at Meta
H
Help Net Security
人人都是产品经理
人人都是产品经理
Vercel News
Vercel News
N
Netflix TechBlog - Medium
F
Full Disclosure
U
Unit 42
Latest news
Latest news
N
News and Events Feed by Topic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
InfoQ
L
LINUX DO - 最新话题
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
K
Kaspersky official blog
Google Online Security Blog
Google Online Security Blog
小众软件
小众软件
I
Intezer
V
V2EX
S
SegmentFault 最新的问题
C
CERT Recently Published Vulnerability Notes
阮一峰的网络日志
阮一峰的网络日志
Security Archives - TechRepublic
Security Archives - TechRepublic
Recent Announcements
Recent Announcements
C
Check Point Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Recorded Future
Recorded Future
博客园 - Franky
Project Zero
Project Zero
S
Securelist
Attack and Defense Labs
Attack and Defense Labs
Spread Privacy
Spread Privacy
The Hacker News
The Hacker News
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
博客园 - 叶小钗
NISL@THU
NISL@THU
云风的 BLOG
云风的 BLOG
S
Secure Thoughts
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测 505游戏母公司现已收购《明末:渊虚之羽》IP | 机核 GCORES 基石 手动杂谈12|格斗游戏也能讲好故事 | 机核 GCORES I Love You Mr Snowball 我的向日葵小姐 会比GTA6先发售吗?最硬核的生存游戏《DAYZ》要推新DLC了 周记02:在2026遇到新怪谈 什么硬件,能让游戏Loading界面快速消失? | 机核 GCORES GadioSpec《百年风云世界杯》免费试听集 | 机核 GCORES 百年风云世界杯Vol.1丨足球崛起 | 机核 GCORES 100年前,一群人提前替我们经历了AI恐惧 | 机核 GCORES 《呼啸山庄》2026 ——一辆当代艺术的大卡车冲撞了我的大脑 手游《天穗之咲稻姬:日之香巡灵传》宣布将于7月27日停服 | 机核 GCORES 集结梦之队,征战世界杯,《最佳球会ONLINE》上线Steam 山水绝景随心拼 休闲建造游戏《千里山河录》Steam商店页公开 巫师帽、法袍、魔杖,为什么它们是影视、游戏里的法师必备三件套? 《无鞘信使》-第一章 复古风自动战斗肉鸽《终结之终结》Steam商店页面现已上线 电脑里有一款不破不立的MMO,录音笔VOL.688 | 机核 GCORES 《生化危机》30周年纪念周边发售,这次是真的“保护伞” 可靠耐用+AI全能,惠普战66 2025锐龙版深度体验 《时之书:无尽终章》关卡“大航海时代”全球首次公开 经典名作《乌龙派出所》改编经营模拟游戏《乌龙派出所~阿两的商店街物语~》正式宣布支持简体中文 明日开冲,解锁反套路三国互动影游《代号三国:龙起》即将上线 独立游戏《这是我的宝藏!》已发售~ 降低难度不是唯一解,无压力死亡也是好体验 Netflix官宣新片《普通人》:讲述韩国现代史上的权力风暴 《生化危机:安魂曲》全球销量现已突破700万份 《绝地鸭卫》PC版5月15日正式发售 亡妻回忆录?女性向情感叙事游戏《S-mail》现已正式发售 全新酷黑风格,酷睿Ultra 200S PLUS的高性价比搭档!七彩虹BATTLE-AX B860M-PLUS S WIFI7 V20 超级黑刃主板测评 胖狗 索尼发布了港台地区PS5产品价格调整公告,将于5月1日起实施 二次元怪猎+性感美女!《碧蓝幻想:无尽黄昏》开启Beta公测 这款怪谈类型中式恐怖游戏居然更新了?! 《百日战纪 -最终防卫学园-》改编漫画将于今年冬季开启连载 《如被附身,请致电我们》:匈牙利黑色幽默恐怖小说 《竹屿山房杂部卷五》(译文) 大树 超越引擎 摄影分享丨四月 碎片杂记vol.72 当老式FPS与老式动画技术碰撞出新时代的火花—《神探杰克鼠》 想做独游,如何避免首个项目就褒姒? 在线多人动作游戏《OCTOPinbs》将于5月12日上线Steam! 《酒鬼女神的酒诡》确定将于2026年登陆Steam 《CRYMELIGHT》将于11月5日(周四)正式发售!4月25日开始预购! 钢铁国度MKI部落Evolution,蛮兵部分 【钢铁国度】部落-Primal MK I,蛮兵部分 这是一个高中生用ai跑出来的作品,我自称他为物理神话 钢铁国度MKI部落Metamorphosis,蛮兵部分上 钢铁国度MKI部落Metamorphosis,蛮兵部分下 INDIE Live Expo于4月25日举办:首发9款新作,超200款独立游戏亮相 暗黑卡牌策略新作《魔忌:穷鼠啮狸》发布全新中文试玩版和发售预告片,4月30日正式上线在即 战锤40K长篇小说:变节者・苦难主宰(三)(全书完) 战锤40K长篇小说:变节者・苦难主宰(二) 战锤40K长篇小说:变节者・苦难主宰(一) 英语语言学习丨短语专题1:短语的特点 唯一的EVE战争 【少前同人】【M200】战术人形会梦见音乐会吗 【昏迷3】即将发售,前作主角悉数到场!“恶灵”宋老师化身可操控角色 业内人士:游戏公司“十有八九”使用生成式AI,包括卡普空 欢庆一周年:《光与影:33号远征队》全新纪念艺术图、超值折扣与免费更新同步上线 才刚刚开始呢 【抽奖】《星际卡车司机》推出免费大型更新,四折平史低折扣进行中 四人合作FPS游戏《佣兵猎手》抢先体验重大更新 1 现已上线 Raw Fury新作《深馅地牢 Deep Dish Dungeon》将于今秋加入 XGP 塔防幸存者游戏《魔怪来袭》推出首个 DLC 《饿狼传说:群狼之城》1周年纪念!新DLC“沃尔夫冈·克劳萨”今日参战 猫狗相伴 欢乐闯关 双人合作平台跳跃游戏《猫狗同行》上线Steam商店页 《同行:月球逃脱》(Together: Moon Escape)上线将于明日上线Steam
计算机和网络安全简史:第一期
Beta-TNT · 2024-11-22 · via 机核

题图:美国国家航空航天局格伦研究中心配备的IBM 370 Mainframe计算机,1981年

虽然在机核社区里大部分时候以尼龙佬的形态出现,但其实我本人在此前的十几年来一直都从事网络安全相关工作,而且长久以来有一个愿望,希望能在这里和大家聊聊当今计算机和网络安全相关的内容。

这系列文章原本作为播客稿件编写,由于一些客观因素未能完成录制,现将稿件重新编辑整理之后作为连载文章发布。讲解技术历史无可避免地会涉及讲解具体的技术原理,这部分我会安排在连载的最后,读者可自行选择是否阅读。

从公众认知角度来看,提到计算机和网络安全,第一个浮现在脑海中的可能就是计算机病毒,连载的第一期咱就聊聊有关计算机病毒的历史。

病毒、蠕虫和木马

概念

计算机“病毒”(Virus)这个概念显然是从微生物学里借鉴过来的,在计算机领域里指的是一类具有自我复制能力和破坏性的程序或代码。有一个观点认为计算机病毒的理论来自冯·诺依曼在1966年发表的论文《可自我复制的自动机理论》(Theory of Self-Reproducing Automata),这篇论文基于他在1949年的一篇演讲。在论文里冯诺依曼设想了一种可以实现自我复制的自动机。而计算机病毒的传播行为就是在软件层面实现的“可自我复制的自动机”。冯·诺依曼这个名字在后边还会继续提到。

而后在1969年。美国科幻作家Gregory Benford发表了一篇名为《The Scarred Man》的科幻小说。在这个小说里第一次明确提到了“计算机病毒”(Computer Virus)这个词以及它可以自我复制的特性。这个作家写计算机病毒可不是瞎写的,和后来那些写赛博朋克的作家不同,Benford在科幻小说作家之外的另一个身份是物理学家。

1969年他写The Scarred Man这篇小说时正在加州的劳伦斯放射实验室(Lawrence Radiation Laboratory,现劳伦斯伯克利国家实验室,奥本海默也曾经在此工作)当博士后,使用Fortran语言编写程序来模拟等离子体现象。当时还在使用打孔卡片作为数据和程序的介质,计算机还是中心化架构(即Mainframe),用户使用终端机访问中心大型计算机。当时他在想,如果有人写代码的时候不小心写错了,这段代码就会执行非预期的指令。但如果万一有人故意这么做呢?甚至为了扩大影响,让这些“故意的”代码具有传播功能呢?

1 / 2

为了验证这个想法,他在自己写的Fortran代码里加了几行,功能很简单:将这些附加代码再附加到其他的代码里。然后只过了几个小时,这段附加代码就开始传播,等到第二天的传播就已经失控了,一些毫不相关的文件也被“感染”了。于是他不得不联系其他受到影响的人,将影响消除。事后他把这次事件报告给了计算机专家,提醒他们这种行为可能会被用于更有恶意的用途。而后他继续思考,如果另外有一个“疫苗”程序可以处理这种传播,那是不是可以从中牟利呢?他把这些想法写进了小说《The Scarred Man》,并在1970年五月发表在科幻杂志《Venture》上。

关于Benford最后多说一句,他的作品翻译和引进的不多,主要写硬科幻。1980年凭借《Timescape》获得星云奖和约翰·坎贝尔奖。他和大卫·布林是好朋友,两人曾经合作写过小说并发表。国内读者能接触到他的作品可能是阿西莫夫《基地》系列的《第二基地》三部曲,这三部曲是阿西莫夫去世之后他的遗孀委托其他三位作家续写的,另外两位作家是葛瑞格·贝尔(Greg Bear)和我们都很熟悉的大卫·布林(David Brin)。Benford编写的那本叫《基地的恐惧》(Foundation's Fear,1997年出版,国内好像还没有引进),计算机病毒以及病毒传播的情节也出现在这一部小说里。

“蠕虫”(Worm)这个概念也起源于科幻小说,出自1975年的一本题为《The Shockwave Rider》(冲击波骑士)的科幻小说。书中提到的“Worm”的概念上类比的是现实中的猪肉绦虫,这种恶意程序由一个负责总控的头部和渗透传播进入网络各个角落的海量的破坏性程序构成。而现实中的猪肉绦虫由一个头部和成百上千个节片(也叫妊娠节)构成。正如绦虫的妊娠节从母体分离的时候会生出更多的绦虫一样,每一段破坏程序都有自传播能力。

在小说中,这种蠕虫几乎是不可能被清除的,因为即便可以将单个节点下线清理,但只要网络上还有一个蠕虫存活,它就仍然可以在短时间内再传染遍整个网络。甚至书中还提到了另一个人用和蠕虫相同的方式去杀死蠕虫。而所有以上这些事情后来在现实中全都发生过。所以现在我们用“蠕虫”这个看起来有些奇怪的名字来指代这一类通过网络传播的高传播性的恶意程序。

最后是特洛伊木马(Trojan Horse),这个词更多的是描述恶意程序的伪装方式:通过伪装或者潜藏在正常的程序里的方式骗取用户的信任,从而获得执行的机会。1974年“特洛伊木马”这个术语在就已经出现在美国空军对于计算机系统安全性和漏洞分析的报告中。

现在”木马“这个概念一般特指远程控制木马(Remote Access Trojan,RAT),作为曾经的行业从业人员,远控木马闭着眼都能报一堆菜名:netspy、灰鸽子、中国菜刀、冰蝎、哥斯拉、蚁剑、Cobalt Strike……这些木马不仅有针对Windows系统的,还有基于Web服务的,后者也被称为Webshell。

病毒、木马和蠕虫,在当今时代它们的边界变得模糊了,一般都会被统称为”恶意软件“(Malware)。一般认为,无法独立运行,需要感染操作系统或者附加到其他可执行程序的恶意程序是病毒;着重通过网络大量复制传播,而且可以独立运行的是蠕虫;使用伪装手段骗取用户信任或绕过检测手段,在目标系统里运行并接收来自外部指令的被称为木马。这种分类方式是根据恶意程序的传播方式进行区分的,而现在恶意软件的形态几乎完全取决于其目的,不再拘泥于特定传播方式,传统分类方式现在也逐渐不再使用了,现在主要根据恶意软件的目的进行分类。

接下来我打算聊聊一些开创性或者有影响力的恶意程序。

Creeper

内容因剧透、敏感不适等原因被隐藏

点击查看

首先是公认的世界上第一个蠕虫,名叫Creeper(爬行者),它诞生于1971年,通过ARPANET传播。ARPANET就是当今互联网的前身,由美国国防部高级研发计划署资助,最初用于连接军事目的(连接北美防空网络)研发的。

Creeper有两个版本,最初的版本只是通过ARPANET在各个大型机之间移动。计算机学家Ray Tomlinson对它进行了一些修改,让它不仅能够移动,还会在经过的大型机上留下一个自己的副本并继续传播,这个改进的版本被认为是世界上第一个计算机蠕虫。Creeper是为了研究计算机程序自我复制和传播可能性而被创造出来的(这又回到刚开始冯·诺依曼的自我复制自动机理论),它只会在经过的计算机的终端上留下一行字,叫“I'M THE CREEPER : CATCH ME IF YOU CAN”,除了留下一行字之外并没有破坏性。

因为是用于研究目的,Creeper的传播是受到控制的。它只感染了最多28台计算机,而且是经过管理员许可之后才这么做的。Creeper还催生了世界上第一个反病毒程序。第二年,也就是1972年,还是Ray Tomlinson,编写了一个叫Reaper程序,专门用来在ARPANET上清除Creeper程序。

关于Ray Tomlinson这个人还可以再多说两句,他现在主要以电子邮件之父的身份被大众认知。现在我们用的电子邮件地址的格式“用户名@主机名”就是他发明的。2022年美国设立了一个纪念日叫“电子邮件国家纪念日”(National Email Day),定为每年的4月23日,也就是Ray Tomlinson的生日。除此之外,他对于计算机和网络领域另一个贡献更为重要,但可能并不为公众广泛认知,那就是他设计了TCP建立连接时的三次握手机制(SYN-SYN/ACK-ACK)。

无名的“空间占据者”

然后是第一个被有意开发出来的恶意计算机程序,它没有名字,是1971年一名伊利诺斯大学的研究生写的。它的作用就是循环检测计算机上的可用存储空间,然后建一个和这块空间一样大的文件,把可用空间全部占满。如果此时用户往磁盘上写文件,系统就会报告存储空间不足,请删除部分文件。而用户要是真的删除了一些文件腾出空间,它会立刻继续把这部分空间也占满。但这个恶意程序它没有传播能力和驻留能力,系统重新启动它就不再运行了。

无限繁殖的“兔子”

时间来到1974年,这一年诞生了一个名叫“兔子”(Rabbit,或者Wabbit)的恶意程序。它只做一件事:利用操作系统的fork指令在死循环里创建海量的进程分支,直到把系统资源耗尽。这个恶意程序取名“兔子”寓意其像兔子那样可以快速增殖。

fork是unix系统里创建进程分支的命令,Windows操作系统不支持这个功能。我年初在机组发过一个类似原理的玩意,也是通过递归的方式无限创建进程,可以在一分钟之内把计算机的资源耗尽。

1 / 2

恶作剧“麋鹿”

就目前我查到的资料来看,事实上的第一个同时具备传播能力和破坏功能,也就是真正意义上的“计算机病毒”,已经不太可考了。但第一个在大学和科研机构之外的社会面传播的计算机病毒是知道的,叫Elk Cloner,是由一个15岁的高中生在1982年写的。这是一种感染APPLE II电脑的APPLE DOS操作系统的引导区病毒。

它的原理大概是这样的:由于APPLE II电脑没有硬盘,依靠操作系统软盘启动。系统启动完毕之后再换其他的软件软盘。而Elk Cloner运行之后会常驻计算机内存,一旦检测到插入了没有被感染的软盘,就感染这张软盘的引导区。而如果这张软盘后来再被用于引导计算机,它又可以继续运行并常驻内存,感染其他软盘。这小孩最初就是为了好玩,把自己写的这个病毒和一个游戏捆绑到一起,当这个游戏累计运行了50次的时候病毒就会触发,在电脑屏幕上显示一首他写的诗。这个病毒本身除了感染引导区和显示这首诗之外其实并没有更进一步的破坏行为,但感染引导区的行为会覆盖软盘的保留扇区,导致数据丢失。这个病毒的历史意义在于它是第一个社会面传播的计算机病毒,再加上当时根本就没有所谓杀毒软件这个玩意,导致Elk Cloner病毒造成了相当大范围的传播。

“欺骗”计划

计算机病毒也被用于政治对抗。1982年,CIA主导了一个名为“欺骗”的计划(The Deception Program)。CIA利用了KGB渗透到北美的间谍,任由他盗取了由加拿大开发的包含逻辑炸弹的天然气管道控制软件。这个逻辑炸弹的作用是在特定的条件下会将管道的压力提升一倍,但依然显示正常读数。1982年六月,西伯利亚天然气管道发生了严重的爆炸事故,这起爆炸事故被认为是当时“有史以来最猛烈的非核爆炸和火灾事故”(据说甚至可以从太空轨道上看到爆炸的火光)。美国方面一些人认定这次事故是“欺骗”计划的成果,但CIA并未对此予以证实,苏联方面则予以否认,相关人士表示当时苏联境内的天然气管道全部都是人工控制或者模拟系统控制的。并且苏联方面称爆炸并未造成严重后果,而且在一天内得到修复。不过无论成功与否,这次行动标志着针对计算机系统的攻击和计算机病毒早已被用于政治目的。

意外泄漏的“大脑”

第一个能够感染现代个人电脑的计算机病毒诞生于1986年,名为Brain(大脑),它可感染IBM PC安装的MS-DOS操作系统。在一些资料里称Brain是世界上第一个计算机病毒,但实际上它只是世界上第一个感染IBM PC个人电脑的病毒。Brain也是一种引导区病毒。根据编写者的说法,它最初是用作一款医疗监控软件的防盗版措施,本应只感染使用了盗版软件的电脑。但可能是程序逻辑不严密,导致发生了意料之外的传播。

十三号星期五

DOS时代早期的另一个知名的计算机病毒叫耶路撒冷,我们更熟悉的是它的别名:黑色星期五。顾名思义,病毒的触发条件是当前系统时间是13号而且是星期五,首次发作是在1988年5月13日,效果是用户每运行一个文件,病毒就会删除这个文件,还会大幅拖慢系统运行速度。

1 / 4

风靡一时的“CIH”

然后就是我们熟悉的“CIH”病毒。这个病毒一般被提到的时候会被称为“第一个可破坏计算机硬件”的病毒。最初版本的CIH被设定为每年4月26日触发恶意行为,和切尔诺贝利核电站事故是同一天。它感染Windows95/98/Me系统下的可执行文件,并采取了一个规避检测的手段:它将自己分成若干片段,写入PE文件的全零字节的填充段里,因此被感染的文件的长度不会发生变化。CIH有两种破坏手段,首先是用零字节覆盖硬盘0号扇区的前1MB内容,直接将分区表抹除;其次就是“恶名远扬”的破坏BIOS芯片的功能。它会用垃圾数据填充BIOS芯片的FLASH ROM存储,直接导致计算机无法启动。但实际上CIH抹除FLASH ROM的功能仅限特定的芯片,并非在所有的硬件上都可实现。

内容因剧透、敏感不适等原因被隐藏

点击查看

Office宏病毒的始祖

时间来到1995年。这一年微软的办公软件Word 6.0的新版本Word 95随着Office 95正式发布,同一年也诞生了世界上第一个广泛传播的Office宏病毒(Macro virus):Word concept。先说说什么是宏(Macro),这是一个自动化功能,在1989年被引入Word 5.0版本。它可以“录制”并“回放”用户的操作,宏的底层实现是一套基于BASIC语法的Office应用专用的编程语言,就像Quake C那样。在Office 97之前这个语言被称为WordBASIC,Office 97开始更名为Visual Basic for Applications(VBA)并一直使用至今。

说回到Word Concept,这个病毒没有恶意或者破坏行为,只会在文档打开的时候弹出一个消息框,显示一个数字“1”。如果打开这个病毒的代码,会发现在主函数里只写了一行注释:“That's enough to prove my point”(这足够证明我的想法)。它的传播方式是感染Word的模板文件normal.dot,这样任何通过“另存为”功能保存的doc文档都会携带这个病毒。由于之前没有先例,Word Concept在当年造成了相当广泛的传播,甚至曾经出现在微软发送给其他公司的Windows 95兼容性测试光盘里,1997年还一度占了报告的病毒事件总数的一半。从这里开始,一直到今天,使用VBA实现并通过Office文档传播的宏病毒成为病毒类型中的一个大类,在其后造成了很多重大的病毒传播事件,或者作为攻击渗透的重要环节。

“冲击波”和“反冲击波”蠕虫

随着互联网的普及,千禧年前后诞生了很多传播范围很广造成很大危害的蠕虫,比如爱虫、求职信、HAPPY99等,但我想挑其中我认为最有意思的一个来说。可能一些“老网虫”还有印象,2003年的时候有一个很有名的蠕虫病毒叫“Blaster”(冲击波)。

1 / 4

“Blaster”蠕虫是一个很典型的“N-day”漏洞利用范例:它利用的其中一个漏洞是通过对微软发布的Windows补丁包进行逆向分析发现的(也就是说,通过对补丁进行逆向分析,查找补丁所修补的对象,对比补丁替换之前和之后的库文件的差异发现的),这是一个DCOM RPC服务的可实现远程执行(Remote Code Execution,RCE)的缓冲区溢出漏洞。也就是说,在蠕虫传播的时候,它利用的漏洞实际上已经被官方修补过了。但大家也都知道,2003年的时候网络远没有现在这么发达,一般用户不太会用宝贵的拨号上网时长去微软官网下载补丁,所以互联网上还有大量的主机存在这个漏洞。

“Blaster”蠕虫会利用这个漏洞将自己上传到受害主机上并运行,将自己加入注册表开机启动项实现驻留。和当时广泛利用邮件传播的蠕虫不同,“Blaster”蠕虫通过扫描本地局域网的其他主机实现传播。它的危害主要是会控制受害主机在设定的时间段向微软的Windows Update网站发起DDoS攻击,导致网站无法访问,从而进一步阻止用户获得能修补漏洞的更新。

有意思的地方在于这件事的后续,国内有人利用和“Blaster”完全相同的漏洞和传播手段,做了一个“反制Blaster”的蠕虫。这个“反Blaster”蠕虫首先会清除本地已经感染的“Blaster”病毒,从指定的网站下载一个简易的修补程序,然后尝试从微软官网下载漏洞修补补丁。之后它也会像“冲击波”病毒那样,扫描本地网络,使用相同的漏洞传播到其他主机,做完这些之后这个反制程序会删除自身。在编写本文期间我找到了这个“反Blaster”蠕虫的业务控制部分代码。

听上去很美好,但实际并非如此。原版的“Blaster”病毒的攻击功能有所节制,仅在每天下午发动DDoS攻击,而且会设置长达数分钟的间隔;而这个反制修补程序会开300个线程疯狂PING扫描内网网段以及尝试从微软官网下载补丁,造成了比原“Blaster”蠕虫更严重的网络带宽占用和DDoS流量,这一点明确写在了代码里。而“利用和蠕虫病毒相同传播方式的反制蠕虫”精确应验了1975年那本小说里提到的情节。

内容因剧透、敏感不适等原因被隐藏

点击查看

还有一个有趣的事情是,在“反Blaster”蠕虫的代码里有一句带有拼写错误的英文:“Welcome Chia”,作者想写的其实是“Welcome To China”。所以这个蠕虫在英文世界里被命名为“Welchia”而不是“Anti-Blaster”“Kill Blaster”之类的。

熊猫烧香

2007年初,在国内的网络上有一个现在我们很熟悉的蠕虫开始流行,那就是熊猫烧香。受到感染的计算机的图标都变成了一只烧香叩拜动作的熊猫。熊猫烧香蠕虫在当时造成了相当范围的传播,但它其实并没有利用任何系统漏洞(所以当时的黑客圈子都很鄙视这个病毒的作者)。

熊猫烧香使用三种方式实现感染和传播:

  1. 在驱动器根目录建立autorun.inf文件设置自启动,如果在资源管理器里直接双击点开硬盘,病毒就会自动运行,这也是最常用的U盘病毒传播方式;

  2. 病毒运行后会利用Windows共享服务在局域网内横向移动。用自带的口令字典扫描局域网内的其他主机。如果能够使用弱口令成功登录,就将自己复制到远程计算机上实现扩散;

  3. 病毒除了感染本地的可执行文件,还会感染.html和.asp等Web页面和Web应用文件,将病毒的下载链接注入到这些文件中,实现“挂马”。如果被感染的主机是一台Web服务器,那么所有访问该服务器的客户端都会被感染,这也是熊猫烧香最为强力的传播方式。

此外,熊猫烧香还采用了多种手段对抗杀软。比如在操作系统中搜索运行中的杀软进程并尝试将其关闭。病毒作者还架设了专门的升级服务器用于更新,每当杀毒软件捕获了病毒特征,他就在服务器上部署新的免杀版本,最频繁时一天更新八次。

今天,计算机和互联网较千禧年那会儿已经发生了很大变化,病毒、木马、蠕虫等这些能够破坏计算机系统的程序,其目的也不再仅仅是破坏,而是有了更复杂的目的。在后边我们还会再提到这些。

反制措施

杀毒软件

首先要明确一个事情,就是“杀毒软件”和“防病毒软件”本质是两个东西,在行业早期只有杀毒软件,它只能清除已经感染的病毒,并且在一定程度上修复病毒造成的破坏(比如修复被感染的可执行文件以及被破坏的引导区)。早年用过江民KV200或者KV300的朋友可能还有印象,这套软件分为两张软盘:一张盘用于启动系统,另一张盘是杀毒工具以及病毒库。后来软盘空间不够,增加了一张光盘。之所以需要用自带的软盘启动,就是为了消除可能的潜在的引导区病毒的影响。

杀毒软件实际上的工作原理很简单:比对文件内容是否匹配已知的病毒库特征,一旦匹配,就使用相应的清理功能将病毒代码删除,修复被感染的文件,或者使之失能。而这个特征大多数情况下是一段有独特性的数据或者字符串,也可能是整个文件的哈希。

这里还有个有意思的事。2003年,初中时候的我拿VB6写了一个恶作剧小程序,作用是将自己复制到system32文件夹下,并加上/d的启动参数添加到开机启动项里。功能就只有一个:关机。写完之后我拿exe捆绑机把它和当时很流行的皮卡丘打排球的小游戏捆绑到一起,发到论坛上去了。

然后过了一阵子,我发现升级完自己电脑上的KV3000病毒库之后杀毒软件把我硬盘上编译好的这个恶作剧程序当做病毒杀了,还给了一个分类码:joke.vb6.destroy(destroy是当时我给这个玩意起的名字,但没用作文件名,只出现在模块名里)。想来应该是有人把它作为样本上报给杀毒软件了。我就忽然很好奇杀毒引擎的原理,因为自己就有这个程序的源码,我就在其中随便添加了几行无关的垃圾代码,再编译之后杀毒软件就认不出来了。现在看来当时杀毒软件扫描这个文件时应该是通过整个文件的哈希来判断是否是病毒的。现在的杀毒软件一般会从多个维度做判断和检测(例如PE文件的导入表哈希),减少误报和漏报。

防病毒软件

在说防病毒软件之前可以先聊一聊七月份微软整的大活儿。7月19日,在世界范围内的Windows系统开始批量蓝屏。导致这一现象的是一个名为csagent.sys的驱动文件,这是企业版(主要是外国企业使用的)Windows预装的CrowdStrike公司出品的主机防护软件Falcon的监控驱动。而错误代码是PAGE_FAULT_IN_NONPAGED_AREA,我一看再熟悉不过了。十年前我们做Windows主机监控驱动的时候经常遇到这个问题,这是由于驱动在内核层读写了错误的内存地址造成的。

但是这就有了一个问题:为什么防病毒软件的监控一定要运行在内核层呢?这出了问题电脑直接蓝屏连用都没法用了不是耽误事么?我们日常用的Windows以及大部分操作系统分为用户层和内核层两层。绝大多数正常的应用程序运行在用户层(在Windows里也叫ring3),一般情况下无需关心系统底层原理和硬件层的资源是什么样的,只需要通过系统提供的编程接口(API)调用就行了。但这也限制了应用程序的权限以及能够获取到的信息。如果需要获得系统更底层的状态,或者需要和硬件打交道,那就需要进入内核层,或者也叫驱动层(在Windows里也叫ring0)。

以窗口服务打比方的话,应用层程序相当于来窗口办理业务的顾客,所有的请求都需要通过窗口业务员(也就是应用层API)沟通,通过他们调配所需的资源和信息,窗口业务员能够提供的服务和内容是相对有限的,而且会屏蔽一些细节,比如操作系统的内部状态;而驱动层程序则相当于顾客跑到柜台后边,想要什么直接自己拿,这样就可以获得更多应用层API无法获得的操作系统内部信息以及其他顾客的信息。

由于在应用层难以获得同时运行的其他进程的信息以及操作系统内部状态信息,杀毒软件必须进驻操作系统的内核层才能获取到维护系统安全所必须的监控数据,比如应用程序的网络连接、域名访问、文件操作、注册表操作以及对其他进程的行为(是否存在可疑的进程注入等)。而恶意软件也同样会通过各种手段进入操作系统的驱动层,以获取更大的控制权和敏感信息。

由于杀毒软件的存在,使得病毒的开发者也要想办法避免被查杀(现在一般叫“免杀”),比如通过变换、加密、压缩以及“加壳”等方式抹除数据层面的静态特征,让杀毒软件无从判断。因此防病毒软件应运而生。这类软件会监视系统的运行状态,并且会对重要的目录、文件和内存空间实施保护,一旦有进程产生了危险或者可疑行为就会触发告警。

这里可以做一个实验:试着在电脑上用浏览器访问这个URL:

https://iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com

如果你的电脑装的是卡巴斯基,访问的时候很可能会提示你检测到恶意行为或者访问可疑网站。这个域名是在2017年爆发的利用“永恒之蓝”漏洞的勒索软件Wannacry的kill switch,目前已经被网络安全公司接管,不包含任何有害内容。第一版Wannacry病毒会先尝试请求解析这个域名,如果无法解析成功,就会实施接下来的加密勒索行为。

当时英国的一名安全研究员在分析样本的时候发现了这个行为特征,于是就自己把这个域名注册了下来,让它能够被解析成功,缓解了wannacry的第一波破坏行为。这个实验的目的是想告诉大家,防病毒软件的监控是全方位的,在本例里就是通过对DNS请求内容的监控捕获到带有病毒特征的域名请求行为。在wannacry病毒刚刚爆发,漏洞还没有修补的时候,各大杀毒软件公司都临时更新加了类似这条域名请求特征触发的检测规则。后来随着漏洞修补和病毒特征进一步明晰,大部分安全厂商都撤掉了这条规则,但少数厂商的病毒特征库中还保留着。

下期预告

第一期我们介绍了关于计算机病毒的发展史,第二期将关注网络攻防相关的知识,敬请关注。

参考资料

  1. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Computer_virus

  2. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Computer_worm

  3. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Trojan_horse_(computing)

  4. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/ARPANET

  5. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Gregory_Benford

  6. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/The_Shockwave_Rider

  7. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Creeper_and_Reaper

  8. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Ray_Tomlinson

  9. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Fork_bomb

  10. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Elk_Cloner

  11. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Morris_worm

  12. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/ILOVEYOU

  13. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Happy99

  14. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Melissa_(computer_virus)

  15. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://en.wikipedia.org/wiki/Welchia

  16. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://www.youtube.com/watch?v=u3k-8kJ54sg

  17. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://tech.sina.com.cn/soft/2000-04-14/141.html

  18. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://tech.sina.com.cn/i/2007-09-25/02191759477.shtml

  19. 内容因剧透、敏感不适等原因被隐藏

    点击查看

    https://www.secrss.com/articles/72594