特洛伊木马:一个传了三千年的骗局与一类以它命名的程序
一个拆开的快递箱
假设你在网上买了一台二手路由器,卖家说刷好了固件,插电就能用。价格比新的便宜一半,评价也不错,快递两天就到了。
你插上电,它确实能用。设置界面正常,网速正常,说明书也对得上。唯一不正常的地方在你看不见的那一层:它把你家宽带的账号密码,连同同一网段里其他设备的名称,一起发到了某个陌生邮箱。
整个过程里没有人撬门,没有人猜你的密码。是你自己把它请进屋,还给它插上了电。
这个套路很老。三千年前,地中海东岸有一座城,也是这样丢的。
那匹木马
故事发生在小亚细亚西北角的特洛伊。古代把这座城陷落的时间定在公元前一一八四年。希腊联军为了一个叫海伦的女人围攻这座城,打了十年没打下来。城墙很厚,守军很顽强,正面强攻的代价谁都付不起。
第十年,希腊人里有个叫奥德修斯的人想了一个办法。他们造了一匹巨大的木马,把一批士兵藏在里面,然后烧掉营帐,把舰队开到附近的海岛后面躲起来,只在海岸上留下一匹马和一个人。
留下的人叫西农。他的任务是让特洛伊人相信:希腊人认输了,这匹马是献给女神的祭品,把它拉进城就能得到庇佑。
特洛伊人信了。有人提醒过他们。祭司拉奥孔跑过来喊,说哪怕希腊人送礼也要提防,还拿长矛往马身上戳。城里的公主卡珊德拉也说过同样的话,但她的预言一直没人信。
那天晚上特洛伊人喝酒庆祝。夜深之后,西农点起火把给海上的舰队发信号,马腹里的士兵爬出来打开城门。十年围城在一个晚上结束了。
图一:木马进城的四个阶段。木马本身不攻城,它负责把人和武器送进城墙以内。
这个故事里,木马不是武器,是运输工具。真正起作用的是两件事:特洛伊人自己拆了城墙把它运进去,以及他们在庆祝的时候没有人守城门。
这个故事是谁写的
上面这段是标准版本,但它不是一个人写的,也不是一次写成的。
很多人以为木马出自荷马的《伊利亚特》。这是个误会。《伊利亚特》一共二十四卷,写的是围城第十年里大约五十天的事,从阿喀琉斯的愤怒写起,到赫克托耳的葬礼结束。整部史诗里没有木马,也没有城破。
木马出现在别的地方。《奥德赛》第八卷里,盲诗人德摩多科斯在宴会上唱过这段;第四卷里,海伦自己提起过。后来罗马诗人维吉尔在《埃涅阿斯纪》十二卷中的第二卷里写了一个最完整的版本,拉奥孔那句「我害怕希腊人,哪怕他们带着礼物」就是从这儿来的。
所以准确的说法是:木马是特洛伊传说的一部分,不是《伊利亚特》的一部分。今天我们熟悉的细节,像木马的尺寸、藏了多少人、西农怎么说服特洛伊人,大部分来自维吉尔和后来的作者,不是荷马。
城里到底发生过什么
特洛伊这座城,考古学家一般认为在今天土耳其的希萨利克。一八七一年起,德国人谢里曼在这里挖出了多层叠压的城址,一共九层,从青铜时代早期一直叠到罗马时期。其中被称为特洛伊七世a的那一层,大约在公元前一千一百八十年左右被毁,遗址里有火烧的痕迹、散落的人骨和武器。
这跟传说里的时间大致对得上。但「大致对得上」不等于「证实了木马」。
木马到底是什么,学界没有定论。几种说法都有支持者。
一种认为它原本是攻城器械。古代攻城确实用过带轮子、外包兽皮的高塔,推近城墙之后从顶部放人上去。这类器械在口耳相传中被写成了动物,是可能的。
一种认为是地震。特洛伊的城墙在传说里是波塞冬帮着修的,而波塞冬同时是地震之神。这一层遗址的破坏,有人归给地震而不是战火。
还有一种认为就是内应。城不是被攻破的,是有人从里面开了门,木马只是把这个过程讲成了一个具体的东西。
这三种说法都没法用实物验证。木马如果是木头的,早就烂没了;如果是攻城塔,残骸也同样留不下来。所以这一段的证据强度要分开看:城址被毁是考古事实,木马是文学叙事,两者之间的连接是推测。
计算机里的木马
上世纪七十年代起,计算机领域开始用「特洛伊木马」这个词,指一类程序:它看起来有用,实际在做别的事,而且是用户自己安装、自己运行的。
这个定义里有两个要点。
第一,它不靠自我复制传播。病毒要把自己塞进别的文件,蠕虫要自己扫描网络找下一台机器,木马两样都不做,它等你来装。2017 年 5 月的 WannaCry 属于中间那种,靠一个漏洞在几天里感染了二十多万台机器;木马做不到这一点,它一次只能骗一个人。所以它把大部分精力花在伪装上:界面要正常,功能要真能用,安装流程要和正经软件一样。
第二,它必须真的有用。这是很多人想不通的地方:为什么一个所谓的破解版软件能骗到那么多人。因为它真的破解了,真的能打开,真的省了钱。如果它只是个空壳,用户三分钟就删了。
图二:病毒、蠕虫、木马三者的传播链条不同,防御手段也不同。
一个典型的木马可以拆成三层。
外壳是给用户看的部分。一个计算器、一个视频播放器、一个游戏辅助工具。它要经得起基本检查,图标正常,能启动,点按钮有反应。
载荷是真正要干的事。窃取文件、记录键盘输入、下载更多程序、接受远程指令。这类程序有个专门的叫法,RAT,也就是远程访问木马。这部分用户通常看不到,也不会有任何提示。
持久化是保证它活得久的部分。写注册表、加开机启动项、注册成系统服务、加计划任务。电脑重启之后它还在,用户以为删干净了其实没有。
图三:一个木马拆开来看,是外壳、载荷、持久化三部分。
判断标准
既然外壳可以做得和正常软件一样,那判断就不能靠「看起来像不像」。
能用的判断有四个。
看来源。官网、系统自带的应用商店,和网盘链接、群文件、论坛附件,风险完全不是一回事。前者有审核和下架机制,后者没有。安装包通常是 exe 或者 msi,文档是 docx 或者 pdf,后缀对不上就要多问一句。
看签名。Windows 和 macOS 都要求程序带数字签名,签名里写着发行者。Windows 10 之后默认开启的 SmartScreen、macOS 的 Gatekeeper,就是在这一步拦截的。右键看属性,签名缺失或者发行者对不上,就要停下来。
看权限。一个手电筒应用要读通讯录,一个计算器要访问摄像头,这种要求本身就不合理。
看行为。装完之后有没有多出开机启动项,有没有连上陌生的地址,有没有在你没操作的时候占用网络。这三件事普通用户也能用系统自带的工具看到。
这四条里,来源最有效。绝大多数木马不是靠技术骗过检测的,是靠人懒得去官网下载。
这个词为什么能活三千年
木马这个比喻能留下来,是因为它描述的结构一直没变:一方有墙,另一方打不进去,于是想办法让墙里的人自己开门。
特洛伊的木马是木头的,今天的木马是代码。攻城塔、地震、内应这些说法至今没有定论,但「让人自己把东西搬进来」这个套路,从青铜时代一直用到了现在。
防守的重点也因此不在墙有多厚,而在进门的那一下有没有人问一句:这东西是谁送来的,为什么要送。









