谈到信息安全,我们很容易想到设备。
下一代防火墙、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。
信任依然存在。
恐惧依然存在。
权威依然会影响判断。
人在压力下依然会犯错。
人依然会好奇。
依然希望帮助别人。
也依然会因为一句“这件事很急”而降低警惕。
这些东西不会因为企业购买了一套新的安全设备就消失。
所以我认为,信息安全真正长期的命题,并不是:
如何消灭人的漏洞。
而是:
如何设计一套体系,使人的正常弱点不再轻易演变成企业级事故。
技术负责建立边界。
制度负责约束例外。
流程负责分散风险。
审计负责留下证据。
而人,仍然负责最后的判断。
也正因为如此,信息安全最终不仅是一门计算机科学。
它也是一门关于:
信任、行为、组织以及人性的学问。
如果《欺骗的艺术》给我们留下了一个长期仍然有效的提醒,我想它并不是:
人很容易被骗。
而是:
只要一个系统仍然需要人与人之间的信任,攻击者就永远会试图利用这种信任。
真正成熟的安全体系,不应该因此不再相信人。
而应该做到:
可以信任人,但绝不把全部安全建立在一次人的判断之上。
这大概也是我希望在这个信息安全专题中始终坚持的一条原则。