某网站被曝“信息泄露”事件,使拖库、撞库这两个黑产中的专有术语再次呈现于公众舆论面前。上次绿盟君从攻击实现角度,对拖库、撞库攻击进行简单分析;从安全防护设计、建设运维角度,给出针对这两种攻击实践总结的安全防御40条策略。本文主要从拖库角度出发聊聊。
1、用户密码的防拖库设计
(1)加盐法
大多数主流互联网网站,对账号密码等信息都采用加密存储,(明文存储的不在本文讨论之内),为了防止拖库后被破解,采用加盐 (+salt)的加密已经被广泛认可,笔者认为这的确是一种极好的创新,因此将其列在第一位,同时建议salt位数至少6位。
难易程度: 1颗星 防范效果:4颗星
(2)混淆法
账号密码的登录认证方式由来已久,随着互联网交易的发展,为了加强认证,出现了二次认证的密码。基于此启发,笔者认为是否 可以将一个账号在数据库存储时,一个UID 用户名对应多个密码保存,只有一个为用户真实的密码密文,而其他作为混淆项,混淆项的 值为用户注册系统时由系统自动生成。当认证时,系统通过算法匹配与数据库真实的密码密文来验证完成认证。如图:
这样设计数据库账号密码存储的优点、缺点是:
- 发生拖库时,攻击者无法从数据库中识别出哪一字段为真实密码,只能将所有字段全部“拖走”,同时增加了破解的难度和撞库的难度。
- 对数据库运维而言,此举便于数据库读取的监控,在建立一定的读取监控策略后,能轻易发现拖库行为,及时告警处置。
- 认证时,系统的匹配算法或实现的匹配机制需要设计隐蔽,不能被轻易分析识别。
- 混淆密文的生成算法需合理,被解密后,不能轻易区分出哪一个是真实的密码。
难易程度: 4颗星 防范效果:3颗星
(3)陷阱法
陷阱法顾名思义就在数据库敏感的地方设置陷阱,使拖库行为容易被发现、识别并跟踪。笔者设计了两种基本的陷阱法场景供读者参考。
场景一:账号数据表的陷阱
在同一个数据库中至少创建两套与认证相关的账号数据表,一真一假,二者实时更新、同步数据。对假账号表进行读取控制的监 控和告警。因为攻击者无法区分哪一个表是真正在用的账号表,所以多数情况会一并拖走,这样监控便能及时发现非法行为。如图:
场景二:账号数据值的陷阱
在同一个数据库账号表中,可以随着系统用户的注册增加,按照一定策略“内建”一些“假”(假并不是不能使用,是与网民注册 的真实用户相对)的账号数据。同场景一一样多数攻击者会将数据全部拖走,这样监控便能及时发现非法行为。如图:
陷阱法设计认证数据表的优点、缺点是:
- 攻击者无法知道具体策略,多数情况会拖走全部数据,这样便于数据库读取的监控。在建立一定的读取监控策略后,能轻易发 现拖库行为,及时告警处置。
- 场景二若设计合理的构建陷阱策略,可以便于追查时间点,便于追踪数据。
- 场景二由于插入陷阱数据,不便于真实用户数据数量的统计。
难易程度: 3颗星 防范效果: 4颗星
2、数据库系统的防拖库识别
除了对数据库结构的防拖库设计,对数据库的访问控制识别、安全运维,也是降低拖库风险的有效措施。
(1)数据库系统的访问控制
笔者强烈建议有能力的企业提高对数据库系统设计、维护、管理方面的重视程度,根据自身业务特征、自身IT 技术实力,保障数 据库系统的安全,防范拖库。在数据库系统与前台交互中,建议设计统一查询接口,便于管理和监控,如图是针对数据库系统访问控制方面的防范思路供参考。
- 严格通信访问控制,后台DB 只允许与“统一查询接口”通信。
- 统一数据库查询接口,制定SQL 查询的黑、白名单,并实时监控。
- 数据库可采用库内、库外甚至专用硬件加密设备。
- 防非法拷贝数据文件,如采用软指纹技术、加密卡等。
难易程度: 4颗星 防范效果: 4颗星
(2)数据库的运维
在数据库系统维护中,建议使用专用接口维护工具、堡垒机等方式,如图是针对数据库系统运维方面的防范思路供参考。
- 数据库管理员与系统管理员权限分离。
- DBA 使用专用数据库维护工具进行维护,具备加/ 解密能力。
- 采用加密备份/ 恢复策略维护数据库,数据不脱密。
- 备份数据具备时间有效期,过期后自动销毁、删除等。
难易程度: 3颗星 防范效果: 2颗星
3、运维监控的防拖库监测
在运维监控中,可以从网络、主机、接口、数据库、审计等多维度进行全面监控,如图是针对运维监控方面的防范思路供参考。
- 对数据库和查询接口进行读写监控、数据标记甚至数据路径追踪。
- 对操作系统进行性能、文件、IO、进程、端口等监控,特别是特定文件的读取、变化。
- 对基础网络进行流量、协议、访问控制、蜜罐等监控。
- 进行全面审计,包括访问行为、危险操作、异常行为等。
难易程度: 4颗星 防范效果: 4颗星
相关链接:https://blog.nsfocus.net/information-leakage-thinking-library-collision/
如果您需要了解更多内容,可以
加入QQ群:486207500、570982169
直接询问:010-68438880-8669