在网络安全领域,我们习惯于寻找漏洞。

一个开放的端口、一段存在缺陷的代码、一个配置错误的服务,都可能成为入口。我们通过扫描、审计、测试和修复,不断缩小技术系统中那些可以被利用的薄弱环节。

但如果一个系统没有明显的技术漏洞呢?

服务器经过加固,身份认证已经启用,安全设备持续运行,日志也在被实时监控。此时,一个人收到了一封看似正常的工作邮件,接到了一个自称来自管理部门的电话,或者面对一项要求立即完成的任务。

他没有破解密码,没有绕过防火墙,也没有执行任何看起来明显危险的操作。他只是相信了某个身份,接受了一个解释,并按照自己认为合理的方式完成了工作。

问题可能就从这里开始。

把这类事件归结为安全意识不足是最省事的做法,也是最没有用的一种。它的潜台词是:只要员工足够谨慎、足够专业,就能避免。但现实中的人不是始终保持高度警觉的分析仪器。我们依赖经验理解世界,依赖信任维持协作,也会在时间压力和信息不完整的情况下作出判断。这些能力让日常生活得以正常运转,却不意味着每一次判断都能得到正确的结果。

社会工程学研究的,就是人与信息、信任和行为之间的关系。它提醒我们,安全风险不只存在于代码和配置之中,也可能存在于一个请求被接受、一项身份被相信、一次异常被忽略的过程里。

「人性的漏洞」这个说法指的是什么

这三个字容易被误读,先把它说清楚。

它不是指人天生脆弱。上面那些机制,在日常生活里每一条都在正常工作,而且是必要的。如果人不能凭经验快速判断、不能对熟悉的人放松警惕,日常协作根本无法进行。

它也不是用来归咎受害者的。一次事件成立,往往需要好几个条件同时满足,其中大部分条件不在当事人手里。

真正值得研究的,是这几个条件的叠加方式。

图一 一次事件是怎么叠加出来的

一次看起来合理的决定,通常由四个东西叠出来:当事人的认知机制、对方按他处境设计的信息、当时的紧迫情境,以及组织流程里的缺口。写成一句话:

说人话:四个条件里去掉任何一个,事件都很难发生。只有第一个在人身上,而且它本身没有坏。

这个拆法有一个实际用处:它把「加强安全意识」从一个笼统的口号,变成了四个可以分别动手的位置。

十条常被借用的机制

下面这 10 条按它借用的东西分成 4 组。分组的意义在于,同一条防线常常可以同时挡住一组里的好几条。每条后面配一个具体过程,人名是化名,情节是把同一类情形里反复出现的部分合起来写的。

图二 十条机制分四组

第一组:对损失的回避

恐惧心理

财务部的小陈那个月特别忙,月末付款和一份审计要的材料赶在一起。下午 5 点 40 分,她正在核一张付款单,手机响了一下。

短信来自一个 106 开头的长号码,说公司结算账户存在异常登录,为保障资金安全,两小时内未处理将暂停非柜面业务,后面跟一个链接。她手上有第二天要发的工资,付款账户就在这家银行,账上一百多个人等着这笔钱。她点开了。

页面和公司网银的登录页几乎一样,连行标的位置都对。她输入了账号和密码,页面转了半分钟,提示「身份核验中,请稍候」。她觉得银行系统就是慢,关掉页面继续做手上的单子。

第二天上午她接到银行电话,问前一天晚上那两笔各 12 万的转出是不是她操作的。她当时其实知道有钓鱼这回事,培训考过。她没先打银行电话的原因很简单,她觉得来不及。

机制:对损失的担忧一旦上来,核验就会被排到后面。怕的是已经拿在手里的东西要丢,这比「可能得到什么」急得多。

紧迫感

一个市政项目的投标负责人姓周。开标前一天下午 3 点 20 分,他收到一条微信,对方的备注名是「招标办李工」,头像是政务公众号常用的那种徽标。

消息说他们提交的资质材料里有一页签字不清楚,评标委员会要求当天 17:00 前重新提交高清扫描件,过期按放弃处理。他手上正好压着这个项目,从收到消息到截止不到 2 个小时。他先回了一句「马上」,然后打开标书翻那一页。

他觉得备注名对得上,之前也确实跟招标办通过电话。他没有再打电话核实,因为按他的经验,那个时间点打过去也没人接。他把营业执照、法人身份证扫描件和盖了章的材料按对方给的路径传了过去,还道了谢。

第二天他到开标现场才知道,招标办从来没有发过这条消息。那份材料里带着公司的全套证照和公章样式。

机制:时间窗口把他从「要不要做」直接推到了「怎么赶紧做完」。被压缩掉的是比较的余地。

第二组:对收益的期待

贪小便宜

公司群里转来一条消息,说是员工福利,某视频平台会员免费领 3 个月,用微信登录授权就行,名额有限。发消息的是隔壁部门的同事,配了一张领取成功的截图。

有人顺手就领了。整个流程不到 40 秒,授权页面只有一行小字,写的是「获取你的公开信息」,下面还有两行他没细看。会员也确实到账,当天晚上他就用上了。

一个月后,几个朋友陆续问他「你发的那个链接是什么」。他打开微信才发现,那个小程序在拿到头像、昵称和绑定的手机号之后,开始以他的名义给他的联系人发同样的消息,开头还带着他的名字。他有点尴尬,但没有被骗的感觉,因为会员是真的。

真正的问题在后面。那条链接是给每个人定制的,带着名字转发到别的群里,可信度完全不一样了。

机制:对收益的期待盖过了隐含成本。代价那一栏当时是空的,等它填上内容,已经是几周之后的事。

好奇心理

技术部的小王收到一封邮件,标题是「二季度部门绩效排名(初稿)」,发件人是一个不认识的邮箱,后缀看着像外包公司,发出时间是凌晨 2 点 14 分,正文只有一句「附件是初稿,先别外传」。

他知道这份排名跟他的岗位关系不大,也知道这封邮件来路可疑。但他确实想知道自己在不在那份初稿里,尤其是刚做完一次项目复盘。这个念头很具体,压过了前面那两个判断。

附件里有一个 PDF 和一份「查看说明」。说明写着文档加密了,需要先登录核对工号。打开的页面是一个邮箱登录页,他填的是公司邮箱的账号和密码,页面提示「验证失败,请联系管理员」。他以为是文档出了问题,关掉了。

三天后,从他的邮箱发出去了一批钓鱼邮件,收件人是整个部门。

机制:好奇心不区分信息来源。对结果的期待会让人先把动作做出去,再考虑这个动作该不该做。

虚荣与认同需求

他在技术社区写了几年文章,粉丝不多但很稳定。某天一个自称行业媒体的账号私信他,说在做「年度最有价值技术人」的评选,他被提名了,需要提供一段 300 字的个人简介和一张证件照,用于制作公示页。

他填了,简介改了三四遍。3 天后对方说还差一步「身份核验」,要身份证正反面和一张手持照片,理由是站方要求实名、避免刷票。

他犹豫了。他也知道手持照这种东西不该随便给。但公示页上已经挂了他的名字和照片,同批提名的人里有一半交了材料,这时候退出来,等于前功尽弃。他还是发了。

半年后他的身份材料被用来注册了 3 家公司的对公账户。而那个公示页,他从头到尾没有见到过。

机制:对认可的渴望提高了接受可疑条件的意愿。更麻烦的是,前面的配合会变成继续配合的理由,这一步往往比第一步更容易迈出去。

第三组:对社会信号的依赖

从众心理

一个 200 多人的离职员工群里,有人发了一条消息,说公司要统一更换门禁卡,老卡月底失效,没登记的刷不进来,后面跟了一个在线表格的链接。发消息的人用的是群昵称,头像没见过。

老李在那家公司干过六年,去年才离职。他第一反应是这事不对劲,公司换卡从来都是行政发通知,不会在一个离职群里让大家填表。他把消息往上翻了两屏,看见半小时之内已经有 30 多个人填了,表格是公开可看的,姓名、工号、手机号一栏一栏填得整整齐齐,下面还有人在回复「已填」。

他想了想,觉得自己可能是多虑了,就也填了一份,还顺手把表格转给了一个老同事。

两天后群主撤回了那条消息,说不是公司发的。那 30 多个填过表的人后来陆续接到冒充前公司 HR 的电话,对方能准确说出他们的姓名、工号和离职时间。

机制:他判断的依据是别人填没填,那份通知本身合不合理反而没人问。信息不足的时候,群体行为会被当成真实性证据。

权威心理

下午 3 点,行政部的小刘在企业微信上收到一条消息。对方的头像、昵称、部门标签都是她的直属领导,连说话的口气都对,开头是「小刘,在忙吗」。

消息说领导在外面开会,手机不方便收付款,让她先帮忙垫付一笔 4800 元的会议场地定金,收款账号随后发了过来,还说「回头跟报销一起走,别在群里说」。

小刘打电话过去想确认账号,响了三声被挂断,紧接着微信里来了一条「在开会,发我微信就行」。她转了,转完回了一句「已付 4800,发票记得给我」,对方回了一个「好」。

第三天她遇到领导本人,顺口问了一句场地的事,对方说没有这回事。她回去翻记录才发现,那个账号是前一天新加的,头像是从公司官网的领导介绍页上截的。

小刘后来复盘,让她最想不通的是电话被挂断之后的那几秒。她为什么没有再打第二个电话。

机制:对权威的尊重替代了一次独立的身份核验,而身份本身是可以被声称的。连「被挂断」这个反常的动作,也被对方用一句「在开会」解释掉了。

信任与互惠

一家供应商的对接人姓张,跟他打了 6 个月交道。系统对不上账的时候都是张工陪着一起查,有一次为了核一笔三年前的付款记录,两个人在电话里对了两个小时,张工加班到晚上 8 点,一句抱怨都没有。

那年秋天,张工说他们公司内部系统要迁移,需要他这边先建一个同名的测试账号,用他的权限跑一遍数据,「就是走个过场,跑通了就删」。他第一反应是这事不合流程,跨公司的账号从来没人这么开过。

他想了一下张工这半年帮过的忙,觉得这点事都推,显得不近人情。账号开了,权限给的是和他本人一样的管理员。

两个月后做权限审计,这个账号被查出来,登录日志里有 10 多次在晚上 11 点以后的操作,全部来自供应商那边的出口 IP,读的是项目合同中标的明细。张工说他不知情,他的账号也被别人用过。

机制:人情压力盖过了「这个请求本身合不合理」这个问题。帮忙的请求不天然可信,熟人之间也一样。

第四组:对省力的默认

懒惰与认知省力

一个内部办公系统的登录页弹出了证书过期警告,页面挡在中间,要点「高级」再点「继续前往」才能进去。IT 部在群里答复过,说证书正在续期,先点继续使用,不影响。

大家就这么点了 2 个星期,后来连点都不用点了,很多人把那个站点设成了书签,浏览器记住了例外。

第 3 个星期的周一下午,一个仿冒的登录页出现在同一片办公区的网络里,连接用的 WiFi 名字和公司的访客网络一模一样。员工打开书签,浏览器又弹出同样的警告,这一次大家点「继续」点得很快,快到来不及看清地址栏里的域名多了几个字母。

那天下班前,有 11 个账号的登录记录来自同一个陌生 IP。

机制:省力本身是合理的,一天要做几百个决定,不可能每一个都展开分析。问题在于安全判断被划进了「不用想」的那一类,而那一类是会自动执行的。

侥幸心理

家里的路由器是装宽带时师傅留下的,后台密码还是出厂那一套,贴在路由器底部。老陈知道应该改,2 年前就知道。改起来也不麻烦,就是要爬到电视柜后面,拔掉电源重启一次,前后折腾十几分钟,还要把家里所有设备重新连一遍。

他每次想起这件事,都是在刷到一条安全新闻的时候。刷完那一下觉得该改,第二天就忘了。

3 年后,他的宽带被用来发垃圾邮件,运营商把上行限了速,打游戏开始卡。他先找运营商,运营商让他查内网设备,他这才发现路由器上有 30 多个陌生连接。前后排查了半个月,源头是自己家那台设备。

他当天晚上就把密码改了,前后用了 4 分钟。他说这三年里无数次想起要改,只是每次都想着「我家这点破网,谁看得上」。

机制:侥幸不是无知,是对自己身上发生坏事的概率估计偏低。防护措施被一次次推迟,而推迟在当时看来没有成本。

把这十条连起来看

图三 十条机制各自压缩了什么

十条机制表面上各不相同,把它们的核心机制摆在一起,压缩的东西其实只有三样:核验的时间、可用的注意力、独立判断的空间。

十条里有九条,最后都是让核验这一步没有发生,或者发生了但只剩下形式。这句话对防守方是有用的:与其逐条去记这十种心理,不如盯住一件事,核验在哪一步被取消了。

上面那十个过程里,这个规律可以逐个数出来。小陈没有先打银行电话,周先生没有打回招标办核实,小王在核对工号时填的是邮箱账号和密码,老李没有去问一句公司行政,小刘在被挂断之后没有打第二个电话。每一次取消核验的地方,都不在事情的中间,都在最开始那几秒。

为什么这不是性格问题

有几点需要说明,否则这套分析容易变成对人的指责。

每条机制在正常生活里都是有用的。相信权威让组织能运转,互惠让协作能持续,省力让一天几百个决定变得可行,对损失的敏感让人避开真正的危险。它们被利用,是因为攻击者把这些机制对准了一个具体的动作,而不是因为这些机制本身有问题。

单条机制通常不足以致事。真正出事的时候,往往是两三条叠在一起:恐惧加上紧迫感,让人没时间核验;从众加上权威,让人不需要核验;省力加上侥幸,让人推迟核验。前面那张四要素的图说的就是这个。

所以「这个人不够谨慎」这个结论既不公平,也没什么用。它解释不了为什么同一个谨慎的人在其他场合判断得很好,也指不出下一次该改哪里。

四个可以动手的地方

图四 对应四个要素的干预点

对应前面那四个要素,有四个位置可以动。

认知机制这一层,能做的是把临场判断换成事先定好的动作。规则在忙的时候也能执行,判断不能。这是个人能自己做主的部分。

信息这一层,把正规入口写死:只用内部系统、只用官方域名。凡是绕开入口来的,一律回到入口重来。

情境这一层,定一条时间压力规则:越急的请求越要复核。「10 分钟内处理」这句话本身就应当是一条拦下来的理由,而不是加快的理由。

流程这一层,把核验写成一个必填动作,而不是可选项。关键操作安排双人复核,第二个人独立看材料,不看前一个人的结论。

这四层里,越往下越有效,也越不依赖个人的记性。培训当然要继续做,但要清楚它管的是第一层,后面三层得靠组织去设计。

结语

回到最开始那个问题:当正常的认知机制遇上经过设计的信息、紧迫的情境和存在缺陷的管理流程时,为什么一个看似合理的决定,也可能成为安全链条中最薄弱的一环?

因为「合理」是在那些条件下算出来的。信息是对方按你的处境挑过的,时间是当时被压出来的,流程是没有给核验留位置的。在这些条件里,当事人做的每一个判断都是正常的,合起来的结果却不是。

所谓人性的漏洞,说的是这件事。它不是人的错,但它确实是攻击面,而且是技术加固之后剩下的那一片。

理解这一点,比记住这 10 个名字更重要。名字会忘,这个拆法可以拿来改流程。