去年有个朋友找我,破解说他前女友的网站微博小号把他拉黑了,他想知道那个号发了什么。登录他问我能不能“搞到密码”。密码我说不能,破解也不该。网站他沉默了一会儿,登录说那算了。密码这件事让我意识到,破解很多人对“破解密码”的网站理解停留在电影层面——敲几下键盘,进度条跑完,登录密码就弹出来了。密码现实完全不是破解这样。
网站登录密码不是网站存在某个地方等着你去“取”的。正规网站存的登录是密码的哈希值,一种单向加密的结果。你输入密码,系统算一遍哈希,跟数据库里存的比对,对了就放行。这个过程不可逆,你拿到哈希值也推不回原始密码。所以“破解”这个词本身就不准确,更接近“猜”或者“撞”。
最常见的路子:撞库
攻击者手里有一批从A网站泄露的账号密码,拿去B网站挨个试。很多人所有平台用同一个密码,A站泄露,B站就遭殃。2019年某次大规模撞库事件,黑客用8亿条泄露数据横扫各大平台,成功率大概在0.1%到0.5%之间。看着不高,但基数大,绝对数字很吓人。这种方式不需要任何技术含量,纯粹靠数据量堆。
暴力破解为什么基本行不通
假设密码是8位纯数字,组合有一亿种。听起来不多?服务器每次验证要几十毫秒,一亿次就是几十天。而且网站通常有频率限制,试错几次就锁账号或者弹验证码。真正能跑暴力破解的场景,是你拿到了数据库的离线哈希文件,在自己机器上本地跑。显卡集群每秒能算几十亿次哈希,弱密码几小时就出来了。但前提是你先得拿到那个文件——这本身就是另一个层面的入侵,跟“登录页面输密码”完全两回事。
钓鱼才是最高效的方式
与其破解,不如骗。做个跟目标网站一模一样的登录页,域名差一个字母,发封邮件说“您的账号存在异常,请点击链接验证”。用户自己就把密码打进去了。2022年某安全公司统计,钓鱼攻击的成功率大约是传统技术攻击的3到5倍。因为技术手段要对抗的是系统,钓鱼对抗的是人。人比系统好骗多了。
社会工程学的杀伤力
我知道一个真实案例。某人想进前同事的公司邮箱,他没写一行代码。他打电话给那家公司的IT支持,说自己叫某某,工号多少,出差在外地,手机丢了,急需重置邮箱密码。IT问了一个安全问题——“你的入职日期”。他从LinkedIn上查到了。十分钟后,密码重置链接发到了他控制的备用邮箱。整个过程没有“破解”任何东西,只是利用了IT流程的漏洞和公开信息。
那普通人该做什么
别用同一个密码。这是最有效的一步,没有之一。密码管理器生成随机字符串,每个站不一样。就算某个站泄露了,其他账号安然无恙。其次,开两步验证。就算密码被猜到了,没有手机验证码或者硬件密钥,照样进不去。最后,别点邮件里的登录链接。手动输域名,多花三秒钟,省掉一堆麻烦。
回到开头那个朋友。我后来跟他说,你要真想知道她发了什么,不如直接发条短信问她。他笑了笑,没接话。技术能解决很多问题,但有些问题,技术解决不了,也不该用技术去解决。