业务角度
单纯的从业务安全角度去看这个问题,可能没有什么意义,就算能够成功登录进去,最多也就是获取一些用户信息, 如果想要进行动账操作还要支付密码和手机验证码。
但从用户的角度来分析危害性很大,这里指的用户包括但不限于一些安全意识较弱的中老年人。在爆破的过程中,用户会收到如下信息:
1. 您正在尝试网银登录,已经输错两次密码,错误五次后将锁定用户。
2. 您的账户已被锁定,请到柜台办理解锁。
一些中老年人收到该信息后会很害怕自己的钱会丢失,而去银行询问有很麻烦,这就会有如下流程:
老年人收到信息--------报警--------公安部-------通知银行解决问题
这样的流程会导致两点问题:
1. 用户不信任银行,感觉钱放在银行是不安全的,导致资金流失。
2. 银行被银监会通报,造成恶劣影响。
安全角度:
我们打开网银界面基本都要安装输入控件,这个控件的功能让我们输入的密码加密并且一次一密,从而保证传输过程中被截获不会丢失密码,主要防中间人攻击,而不是防止爆破,登陆界面层次防止爆破的手段是验证码。
爆破的方式:
1. 人工手动。你没看错,就是通过人力来做。但是通过这种方法的目的并不是想要爆破出成果,可能只是恶心一下行方运维人员。感觉有攻击,但是分析流量感觉又很正常。或者是为了封停几个账号,对于部分银行,知道银行卡号是可以做到银行卡常锁状态的(每天手动输错几次密码就做到了)。
2. 脚本爆破。对于网银登录的爆破并不是简单的 burpsuite 跑一下就能够实现的。基本所有网银都有输入控件,这些控件并不需要去破解,自己构造页面单纯调用即可。而验证码可以通过脚本识别或者打码平台来实现。
防止爆破的方式:
登录方式
网银的登录方式其实不多:
1. 银行卡号/密码登录。
2. 自定义用户名/密码登录。
3. 扫描二维码登录。(比较安全)
安全的验证码
所谓安全,也就是每次登录后服务端口都返回给客户端一个新的验证码且旧的作废。
还有就是验证码的种类,可以使用简单数字加减,图片识别拖动等。
复杂的登录帐号和密码
登录帐号如果是卡号的话,还是比较容易获取的。可以实行权限控制,如果用卡号登录权限较低,或者无动账权限。
登录密码应进行大大于 7 位的设定。
硬件防护
这里说的就是一些硬件防护设备,防火墙、IDS 的之类,可以设置访问的阈值,如超过可以暂时封锁 ip。
通过以上几种方式真的能防止爆破攻击吗?
传统的登陆方式只有很少几家银行不在使用,验证码可以通过打码平台进行识别,复杂的密码也会人用弱密码,封 ip 可以调用代理。
从不计成本来看,这种防护措施不是绝对安全。
通过对各个银行的了解,以下几种方式比较安全:
1. 使用 app 扫描二维码登陆网银。
2. 使用短信验证码验证,验证方式为:使用银行卡预留手机号给银行发送一条固定格式短信,银行收到后返回给客户验证码。登陆时候先验证此验证码和卡号是否符合,如果符合再验证密码。
结论
系统是给用户使用的,只从安全的角度来看对用户负责,也是对用户不负责。要在安全的角度上再考虑用户的体验性,还要根据不同行方的行情来看,有的行方代码迭代比较多,而且一些语言版本较低,不能从代码方面进行根本修改,只能加强某些设备策略。有的行方对网络安全需求较强,并且接收新技术可以从多方面进行防护。
*本文作者:一只耗子,转载请注明来自FreeBuf.COM