前言
随着企业业务和规模的不断增长,所受到的攻击也呈指数上涨,其中账号越有价值的网站所遭受的攻击也相对频繁。本篇文章会从账号体系为中心围绕常见业务场景进行分析,从攻击和防御的角度进行展开。
我们拿常见的业务场景来说会有注册、登录、忘记密码等。每个场景都会碰到不同姿势的攻击,考虑篇幅原因这里不对因漏洞原因造成的影响进行展开。接下来针对每一种场景做讲解。
1.注册场景
注册在账户安全中往往是攻击的第一道门,常见的攻击情况有恶意注册和短信轰炸。
先说恶意注册:
通过注册大量的账号来达成一些不可告人的目的,这些目的是根据企业业务来的,拿我们的业务场景来说,就会存在薅新人优惠,商家刷单,刷好评,爬虫等等目的。其中部分是个体羊毛党,自己会根据一些教程去少量的注册薅个几单,当然最多的还是职业的羊毛党选手,就目前的反溯情况来看,这个产业已经十分的成熟了,完整的上下游体系并且有着明确的分工。不同的团队技术能力都不尽相同,之前也发现技术比较好的团队自动化流程已经非常的成熟了。
那么面对这种恶意注册,企业应该如何去预防呢。
这里首先提一点,抛开活动规则问题或者活动存在漏洞的情况,活动的初衷目的都是吸引更多的用户来使用,安全人员的目的是在安全和业务中找平衡,我们更多的是通过技术手段去提高攻击的成本,和黑灰产做攻防对抗,当攻击成本大于收益的时候攻击的人也就会少很多了。
从防御角度来说可以对注册前和注册后做风控措施。注册前一般会判断注册时的IP,手机号,UA等参数是否有异常。IP是否为云主机IP,IP是否在短时间内大量注册,手机号可以调用反欺诈接口来判断是否有风险,包括UA是否为脚本执行等等,这些都可以做成实时规则进行拦截。注册后可以使用离线规则进行异常捕获,比如单用户多设备,单设备多用户情况,当然,这些都是通用规则,收集的数据越全能做的规则也就越多,由于规则较为敏感这里就不进行展开了。
当发现异常注册的时候不一定就要做阻断,我们可以对异常的人打上标签,方便事后反溯其行为。这里可以说个技巧,当上规则时建议几条规则一起上增加攻击者分析成本,确认异常用户后可以在其他点进行阻断。
短信轰炸:
短信轰炸出现的原因都是因为短信接口没有做任何的限制导致的,很多小企业也因为这个问题损失了大量的金额,除了给企业带来金钱的损失对用户的体验也会大幅度下降。在中小公司中,一般发现这个情况都是市场同学事后做数据统计时发现数据异常。
采取措施:
为了防止这种情况,可以对接口加上发送频次限制,建议使用post请求代替get请求,限制每个用户每天的发送上限,同IP连续发送失败超过阈值弹出图形验证码。
2.登录场景
爆破:
登录场景碰到的攻击情况就很多了,爆破、扫号、撞库、洗库等。对于爆破来说最有效的措施就是验证码了,验证码具体的内容可以参考我之前的文章:验证码安全那些
事 http://www.freebuf.com/rookie/131542.html这里就不多描述了。
验证码在一定程度上减缓了攻击,但是同样的越复杂的验证码通用户体验也会越差,这个需要根据自身的业务场景,受众人群进行分析。比较多的网站为了让用户体验更好,一般在用户输错密码三次以后弹出图形验证码,也有很多攻击者使用大量的代理IP不断更换IP的方法来进行爆破,从而避免触发验证码机制。对于这种情况我们可以参考对撞库的防御措施。
撞库:
对于撞库的预防措施来说,通常的处理方法是判断本次登录IP是否和用户常用地一致,登录的设备是否和常用的一致,如果不是就弹出二次验证,这里的验证必须是校验真人的验证码,比如短信,语音等。之前发现有一款APP在提现处做了二次验证,但是使用的却是滑动验证码,丝毫没有启到保护的作用。这里还是要说一下,涉及到用户敏感信息变更的时候使用的验证码必须是和真人做校验,确定操作的人就是本人而不是放图形或者滑动验证码增加复杂度。
3.忘记密码场景
很多开发安全意识不高在登录和忘记密码处为了有更好的用户体验,把提示做的过于明显,类似您输入的是账号不存在等等。攻击者可以通过这个接口来洗一批用户来增加爆破的成功率。现在也有越来越多的社交网站在一些操作处增加了没有上下文的验证码,比如让用户选择好友头像,选择曾经用过的手机号等信息。
4.最后来个总结
账户安全是业务安全中的一个子类,其中大部分的时间是在和黑灰产做攻防对抗,之后的文章会对技术细节进行细化展开。