渗透用户名
去年十月,渗透我帮一个做外贸的用户朋友查他公司邮箱的登录记录。翻到第三页,渗透看到一个来自越南IP的用户登录,时间是渗透凌晨两点十七分。他皱眉说那会儿自己在睡觉。用户再往下翻,渗透同一IP在接下来四天里登录了十一次,用户每次停留不超过三分钟。渗透这不是用户盗号,这是渗透有人在"踩点"。
渗透测试这行有句话:最危险的用户漏洞不在代码里,在用户名上。渗透很多人以为黑客攻破系统靠的用户是零日漏洞或者暴力破解,实际情况是渗透,大多数入侵的第一步简单得让人失望——他们只是猜到了你的用户名。
我见过一个案例。某中型企业的VPN入口,管理员账号用的是"admin",密码是十六位随机字符,理论上暴力破解需要几百年。但攻击者没碰密码。他们用"admin"这个用户名去尝试密码重置功能,发现系统会返回"该用户不存在"或"重置邮件已发送"两种不同提示。这就等于告诉攻击者:哪些用户名是真实存在的。
拿到有效用户名之后,事情就变得容易了。很多人在不同平台复用同一个用户名,攻击者拿这个用户名去撞库,去社工库查询,去社交媒体搜索。一个用户名就像一把钥匙的齿形,密码可以换,齿形很难改。
更隐蔽的是用户名枚举。有些系统的注册页面会实时提示"该用户名已被占用",登录页面会区分"用户名错误"和"密码错误"。这些设计对普通用户来说是便利,对攻击者来说是信息泄露。我做过一个实验,用Python写了个脚本,对着某网站的注册接口每秒发二十个请求,四十分钟就枚举出了三千多个有效用户名。全程没有触发任何告警。
企业内网里这个问题更严重。域环境下的用户名往往有规律:姓的全拼加名的首字母,或者工号加部门代码。攻击者拿到一个用户名,就能推测出整个公司的命名规则。我见过最离谱的,某公司的VPN用户名直接就是员工手机号。手机号在暗网上是公开的,等于把大门钥匙挂在门把手上。
那怎么办?技术上其实不复杂。登录和注册接口统一返回模糊提示,别告诉用户到底是用户名错了还是密码错了。加个速率限制,别让脚本随便跑。内部系统的用户名别用可预测的规则生成。这些措施不高级,但能挡住九成以上的自动化攻击。
不过说实话,最有效的办法往往最笨:别在多个平台用同一个用户名。我知道这很难做到,我自己也做不到。但至少,别用"admin"当管理员账号,别用手机号当登录名,别在社交平台上晒工牌照片。这些事听起来像废话,可每年被撞库成功的账号里,大部分都栽在这些"废话"上。
那个外贸朋友后来换了用户名,把所有平台的登录名都改成了随机字符串,记在密码管理器里。麻烦是麻烦了点,但他说现在睡觉踏实多了。凌晨两点十七分那个越南IP,再也没出现过。
本文地址:http://www.79wt.cn/news/1099c1099880.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。