LONG-FORM TECHNICAL WRITING

信息安全最难修补的漏洞,是人

当安全设备越来越成熟,攻击者会越来越倾向于绕过技术、利用人性。真正成熟的安全体系,不是要求所有人永不犯错,而是让一次人的判断失误不至于演变成企业级事故。

谈到信息安全,我们很容易想到设备。

下一代防火墙、EDR、WAF、IPS、NDR、邮件网关、零信任、MFA、堡垒机、SOC、SIEM、DLP……

今天企业能够购买和部署的安全技术,已经比十年前成熟得多。

恶意文件可以被检测,异常流量可以被分析,终端行为可以被监控,账号登录可以被二次认证,敏感数据可以被识别,攻击路径可以被追踪。

从技术能力上看,我们已经拥有了一整套越来越完善的防御体系。

但一个令人不安的事实是:

很多真正成功的攻击,并不是因为攻击者突破了最强的安全设备,而是因为有人替他打开了门。

有人点击了链接。

有人相信了一个电话。

有人把验证码告诉了“技术支持”。

有人因为“领导很着急”,绕过了正常审批。

有人因为对方准确说出了几个内部信息,就默认对方“应该是自己人”。

有人收到一封格式、措辞、签名都极其逼真的邮件,于是修改了供应商收款账户。

防火墙没有失效。

EDR 没有失效。

MFA 甚至可能也没有失效。

真正被攻击的,是一个更加古老、也更加复杂的系统:

人。

这也是为什么,读完凯文·米特尼克的《欺骗的艺术》以后,我一直觉得,信息安全真正值得长期研究的,并不只是漏洞、协议和攻击工具。

还有人性。


一、攻击者为什么越来越喜欢绕过技术

如果一扇门安装了越来越复杂的锁,一个聪明的攻击者未必会继续研究怎么撬锁。

他可能会想另外一个问题:

谁有钥匙?

这是社会工程学最核心的思维之一。

技术安全通常试图回答:

如何阻止未经授权的人进入系统?

社会工程攻击则换了一个问题:

如何让一个已经获得授权的人,主动替我完成这件事?

两者之间的差别非常大。

传统攻击可能需要寻找漏洞、构造 Exploit、绕过防护、维持权限。

而社会工程攻击可能只需要:

“您好,我是信息部的,系统正在升级,请您确认一下验证码。”

或者:

“我是某某领导,正在外面开会,这笔款比较急,你先帮我处理。”

如果对方相信了,攻击者就不需要真正突破安全系统。

因为:

合法用户本身,就是系统授权链的一部分。

从这个角度看,安全技术越成熟,“攻击人”反而可能变得越有吸引力。

不是因为技术安全已经不重要。

恰恰相反。

而是因为当一道防线越来越坚固时,攻击者自然会寻找成本更低的路径。

而人,往往就是那条路径。


二、所谓“人的漏洞”,并不是因为人愚蠢

我其实不太喜欢一句非常流行的话:

“人是信息安全中最薄弱的一环。”

因为这句话虽然有一定道理,却很容易把所有问题简单归结成:

员工安全意识不够。

然后发生一次钓鱼邮件事件,企业就组织一次培训。

发生一次账号泄露,就要求所有人重新学习制度。

最后安全治理变成:

只要员工足够小心,问题就可以避免。

我认为这是不现实的。

因为社会工程攻击之所以长期有效,并不是因为所有受害者都缺乏常识。

而是因为攻击者利用的,恰恰是很多非常正常的人类心理。

例如:信任、服从权威、紧迫感、帮助他人的倾向、好奇心、恐惧、利益、疲劳。

这些并不都是人的缺陷。

很多甚至是一个正常社会能够运行的基础。

所以社会工程最危险的地方就在这里:

攻击者不是在寻找一个“愚蠢的人”,而是在寻找一个合适的情境,让一个正常的人做出错误的判断。


三、安全设备识别的是异常,而欺骗制造的是“正常”

技术安全特别擅长发现异常。

某个 IP 在一分钟内登录了一千次。

异常进程尝试读取浏览器密码。

未知程序修改系统文件。

终端突然产生大量外联流量。

这些都具有明显的技术特征。

但社会工程最可怕的地方是:

它努力让一切看起来都很正常。

正常的员工、正常的电脑、正常的登录地点、正常的浏览器、正常的账号、正常的权限,甚至正常的业务流程。

唯一不正常的,是:

这个人为什么做出了这个操作。

这也是为什么很多安全产品面对社会工程攻击时会变得困难。

例如攻击者已经成功诱导员工本人完成 MFA。

系统看到的是:

正确账号、正确密码、正确验证码。

从身份认证的角度看,一切都是真的。

但是从人的意图看:

这个认证本来就不应该发生。

于是我们遇到了一个很有意思的问题:

机器可以验证身份,却很难验证人的判断。


四、信息安全真正难解决的,是“信任”

如果把社会工程攻击继续往深处看,我认为它最终攻击的是一个东西:

信任。

企业其实是建立在大量信任之上的。

员工相信邮件来自同事,财务相信付款申请经过了审批,IT 相信工单是本人提交的,客服相信电话那边是客户,领导相信报告中的数据来自真实系统,管理员相信拥有账号密码的人就是账号本人,供应商相信企业采购人员的邮件,企业相信自己的员工。

没有这些信任,组织根本无法运行。

但问题是:

攻击者也知道这些信任关系。

所以高级社会工程通常并不会凭空编造一个完全陌生的故事。

它会尽量嵌入现有的信任关系。

例如:

领导
秘书
财务

攻击者只需要伪装成其中一个角色。

或者:

供应商
采购
财务

攻击者只需要在某个环节改变付款信息。

因此,很多攻击本质上不是技术入侵。

而是:

信任链劫持。


五、知道得越多的人,反而越容易骗人

社会工程攻击还有一个非常值得注意的特点。

攻击者掌握的上下文越多,欺骗就越可信。

假设一个陌生人打电话说:

“您好,我是公司 IT,请告诉我您的验证码。”

大多数人会怀疑。

但如果他说:

“您好,我是总部信息部。昨天 OA 的升级以后,您销售中心的账号同步有异常。我看到您的工号尾号是 1027,刚才 8 点 43 分有一次登录失败,现在需要重新绑定 MFA。”

情况就完全不同了。

如果其中几个信息都是真的,人会自然推断:

他知道这些内部信息,所以他应该是真的。

但这其实是一个非常危险的逻辑。

因为今天大量信息可能来自公开网站、LinkedIn、招聘网站、公司公众号、组织架构、泄露数据库、邮件签名、社交平台、供应链伙伴,甚至一次普通电话。

攻击者不需要知道全部真相。

他只需要掌握:

足够多的真相,来包装一个谎言。

这也是《欺骗的艺术》给我印象很深的一点:

社会工程的核心往往不是直接“骗一个秘密”。

而是先获得一点信息,再利用这点信息获得更多信息。

最终形成一条链:

一点公开信息
获得信任
获得内部信息
建立更强可信度
获得更高权限

真正危险的从来不是某一个问题。

而是:

信息可以被逐步拼接。


六、企业最常见的误区,是把人的风险交给“安全意识培训”

很多企业意识到社会工程风险以后,第一反应是:

加强员工安全意识培训。

培训当然有必要。

但我认为,如果企业最后只剩下培训,那么治理实际上是不完整的。

因为安全体系不能建立在一个假设上:

每一个人在每一次操作时都会保持高度警惕。

这在人类社会里几乎不可能。

员工会疲劳、会分心、会赶时间、会犯错、会受到权威压力,也会误判。

所以真正成熟的安全设计应该接受一个事实:

人一定会犯错。

然后再问:

当某个人犯错以后,系统是否仍然能够阻止事故继续扩大?

这才是企业安全真正应该设计的地方。


七、不要只要求人“不被骗”,而要让被骗以后也很难造成事故

例如付款账号变更。

如果流程是:

收到邮件
财务修改账号
付款

那么整个安全体系实际上都依赖财务人员的一次判断。

只要那一次判断失败,攻击就成功。

更成熟的设计应该是:

收到账号变更申请
原有联系方式二次确认
独立人员复核
系统留痕
付款

这里最重要的变化是:

安全不再依赖某一个人永远保持聪明。

类似的机制还包括高风险操作双人审批、关键账号强制 MFA、管理员权限临时授权、敏感信息访问最小权限、密码重置必须二次验证、供应商银行信息变更独立回拨、异常付款延迟执行、重要操作完整审计。

这些措施看起来不像“反社会工程技术”。

但它们实际上非常有效。

因为它们做了一件重要的事:

降低单次人的判断失误所能够造成的最大损失。


八、真正的安全设计,应该假设攻击者会成功骗过某个人

这听起来可能有些悲观。

但实际上,这是安全工程中非常重要的一种思维。

我们不会设计一个网络,然后说:

防火墙一定不会被绕过。

所以才会有边界防护、终端防护、身份认证、网络隔离、日志审计。

同样,我们也不应该设计一套业务流程,然后假设:

员工一定不会被骗。

真正合理的假设应该是:

总有一天,有一个员工会相信一封不该相信的邮件。

于是接下来真正的问题变成:

如果他点了链接,会发生什么?

如果密码泄露,会发生什么?

如果 MFA 被诱导确认,会发生什么?

如果一个普通账号被控制,攻击者还能走多远?

如果财务被骗,是否一个人就可以完成付款?

如果管理员被骗,是否可以直接获得最高权限?

安全设计到了这里,就不再是:

防止所有错误。

而是:

限制错误的影响范围。

这其实和 Zero Trust 的思想非常接近。

不要因为一个环节已经“验证过”,就无限放大信任。


九、企业真正需要建设的是“人的安全纵深”

我们很熟悉技术上的 Defense in Depth。

我认为,人和流程其实同样需要纵深防御。

例如:安全意识、身份认证、最小权限、流程复核、异常检测、行为审计、快速报告、事件响应。

这样,即使第一层失败:

员工相信了攻击者。

第二层仍然可能阻止:

攻击者无法通过身份认证。

即使第二层也失败:

账号被控制。

最小权限仍然可以限制:

这个账号能做什么。

即使攻击进入业务流程:

独立复核仍然可能发现异常。

这才是真正意义上的:

把人的风险纳入安全架构。


十、还有一个经常被忽视的问题:员工为什么不敢报告

企业在进行安全培训时经常强调:

不要点击可疑链接。

但现实中更加重要的问题可能是:

点了以后怎么办?

如果一个员工误点了钓鱼链接,他第一反应是什么?

马上报告信息部?

还是:

希望没人发现?

如果企业安全文化是:

谁犯错谁负责。

那么员工很可能选择隐瞒。

而攻击者最需要的恰恰就是:

时间。

如果一个账号在五分钟内被报告,安全团队可能迅速冻结账号、撤销会话、重置凭据。

如果员工因为害怕处罚,直到第二天才报告,那么攻击者已经拥有十几个小时。

所以成熟的信息安全文化应该明确:

及时报告一次错误,比隐瞒一次错误重要得多。

安全体系需要让员工知道:

如果你发现自己可能被骗了——立即报告。

而不是先花半个小时判断:

我是不是会被批评?


十一、社会工程最终攻击的是人的判断权

如果把这个问题再往深处看,我觉得社会工程和传统网络攻击有一个根本区别。

传统漏洞攻击的是:

系统逻辑。

社会工程攻击的是:

人的判断。

攻击者试图改变一个人的认知:

让他认为危险是安全的。

让他认为陌生人是同事。

让他认为异常操作是正常流程。

让他认为“绕过一次制度”是为了提高效率。

让他认为“不立即执行”才是风险。

于是,被控制的不再只是计算机。

而是:

人对现实的理解。

这也是为什么社会工程如此难防。

因为技术安全可以定义:

允许、拒绝。

但人的世界中有大量:

也许、应该、好像、可能、领导说了、以前也这样做过、事情很急。

攻击者最擅长进入的,恰恰就是这些灰色区域。


十二、安全制度最重要的价值,是在压力出现之前替人做好决定

很多人把制度理解成限制。

但从社会工程防御角度看,我越来越觉得,一个好的制度其实是在帮助员工。

因为真正的攻击往往发生在压力场景下。

电话那边不断催促。

领导正在等。

客户非常生气。

付款马上截止。

账号即将停用。

人在这样的情况下,很难进行复杂判断。

如果企业事先已经规定:

银行账号变更必须通过原登记电话进行二次确认。

那么员工就不需要自己判断:

这封邮件到底是真是假?

他只需要执行制度。

同样:

任何人都不能索要密码。

IT 不会索要 MFA 验证码。

高额付款必须双人复核。

管理员权限必须通过正式审批。

这些规则真正的价值,就是:

在冷静的时候制定规则,让人在紧张的时候不必重新判断。


十三、所以安全意识的目标,不应该是把每个员工训练成安全专家

这是我认为企业安全培训最容易走偏的地方。

我们不可能要求每个员工都理解 DNS Spoofing、Kerberos、OAuth、Token Theft、Pass-the-Hash、Session Hijacking。

他们也没有必要理解。

安全意识真正应该训练的是少数几个非常稳定的习惯:

遇到异常请求,先验证身份。

遇到紧急请求,不因此跳过流程。

涉及密码、验证码、付款、权限时,提高一个等级的警觉。

不确定时,使用独立渠道确认。

发生误操作时,立即报告。

这些习惯的价值比让所有人记住几十种攻击术语大得多。

因为攻击方式会不断变化。

但人性的触发点变化得很慢。


十四、技术越先进,我们反而越应该研究人

今天的信息安全技术正在快速进步。

AI 可以分析日志。

EDR 可以检测行为。

NDR 可以发现异常流量。

MFA 可以减少密码攻击。

零信任可以缩小信任边界。

这些技术都值得投入。

但技术越强,我反而越觉得:

我们需要重新把注意力放回人。

因为攻击者也会使用 AI。

钓鱼邮件会越来越自然。

语音可以被模仿。

视频可以被生成。

企业公开信息可以被快速整理。

一个攻击者过去需要花几天准备的社会工程背景信息,未来可能几分钟就可以完成。

这意味着未来的社会工程攻击可能不再是:

“尊敬的用户,你的账号已经过期。”

而可能是一封语言习惯正确、组织称谓正确、项目背景正确、人物关系正确、业务时间正确的邮件。

甚至来自一个听起来很像真实领导的声音。

到了那个时候:

“看起来很真实”将越来越不能作为判断真假的依据。

这会成为信息安全未来非常重要的一条边界。


十五、企业安全真正成熟的标志,是不再把希望寄托在“所有人永不犯错”

我越来越认为,一个成熟的信息安全体系应该具有一种非常朴素的态度:

人会犯错。

这不是悲观。

这是工程现实。

操作系统会有漏洞,所以我们做补丁管理。

硬盘会损坏,所以我们做备份。

网络会中断,所以我们做冗余。

服务器会宕机,所以我们做高可用。

那么同样:

人会判断错误,所以安全架构也应该为人的错误准备冗余。

如果一个企业的安全体系只有在:

所有员工永远保持警惕。

这个前提成立时才能安全,

那么这套体系本身就不够安全。

真正好的安全系统应该做到:

即使某个人被骗了一次,企业仍然不至于因此失去全部防线。


十六、结语:最难打补丁的系统,是人性

我们可以给操作系统打补丁。

可以升级防火墙。

可以更新病毒库。

可以关闭端口。

可以强制 MFA。

甚至可以重新设计整个网络架构。

但我们很难给人性发布一个:

Version 2.0。

信任依然存在。

恐惧依然存在。

权威依然会影响判断。

人在压力下依然会犯错。

人依然会好奇。

依然希望帮助别人。

也依然会因为一句“这件事很急”而降低警惕。

这些东西不会因为企业购买了一套新的安全设备就消失。

所以我认为,信息安全真正长期的命题,并不是:

如何消灭人的漏洞。

而是:

如何设计一套体系,使人的正常弱点不再轻易演变成企业级事故。

技术负责建立边界。

制度负责约束例外。

流程负责分散风险。

审计负责留下证据。

而人,仍然负责最后的判断。

也正因为如此,信息安全最终不仅是一门计算机科学。

它也是一门关于:

信任、行为、组织以及人性的学问。

如果《欺骗的艺术》给我们留下了一个长期仍然有效的提醒,我想它并不是:

人很容易被骗。

而是:

只要一个系统仍然需要人与人之间的信任,攻击者就永远会试图利用这种信任。

真正成熟的安全体系,不应该因此不再相信人。

而应该做到:

可以信任人,但绝不把全部安全建立在一次人的判断之上。

这大概也是我希望在这个信息安全专题中始终坚持的一条原则。

SEARCH

搜索 NHRC

输入关键词开始搜索。