小言_互联网的博客

“短信轰炸”克星 ,“无感”AI立体防御完美解决方案

331人阅读  评论(0)

"短信轰炸”克星 ,“无感”AI立体防御完美解决方案

一 “短信轰炸机”何以如此嚣张

本是用于身份验证、防止垃圾注册的手机短信验证码,摇身一变反倒成了骚扰手机用户的帮凶。

近期,不少用户投诉,反映自己手机突然“抽风”:在非本人操作情况下,每分钟都收到几条用自己手机号登录注册的验证码短信,一天能接收数百条这样的短信,不胜其扰。

1 月收3万余条骚扰验证码

9月19日,有陈先生向记者透露,当日17时至18时30分,手机突然接到40余条手机短信验证码,短信号码以“106”开头,发送短信的平台全是正规机构,包括支付宝、腾讯科技、高德地图、大众点评、新浪新闻、饿了么、阿里巴巴、美团网、途牛旅游网、58同城、百果园等。

根据陈先生反映的问题,咨询移动公司得知,这属于黑客程序“短信轰炸机”的恶意攻击。这种软件利用网站或APP的“发送手机验证码”接口,可实现海量网站给同一个手机号码发送多条验证码信息。最厉害的“短信轰炸机”能1分钟内给同一个手机号发送超过100条短信。

不法分子用垃圾短信恶意骚扰并不鲜见。几年前,就有浙江和广东的手机用户,因网购中给商家“差评”遭对方用垃圾短信报复。公安机关接到报案后,曾挖出“短信轰炸机”背后的黑色产业利益链条,并逮捕了相关涉案人员。

如今,网上虽然赤裸裸的“短信轰炸”软件不见踪影,但不少刷好评、点赞、粉丝数量等刷单软件具备短信轰炸功能。记者在软件论坛,下载了多款用于淘宝、新浪、陌陌等网站用户账号注册、验证的小程序,这些软件在“参数设置”选项上,都具备自动复制手机号、自动复制短信、每5秒自动获取验证码等功能。

一位网站维护工程师告诉记者,对专业人士而言,制作“短信轰炸机”程序非常简单,集成海量网站短信验证码接口链接,再循环利用指定手机号发送用户注册、密码修改等正常验证码请求,便可达到骚扰的目的。

2 束手无策,运营商只能暂停用户验证短信接收功能

对于广告推销类垃圾短信,通信运营商已有应对之策。

通信管理局数据显示:2007年,垃圾短信问题开始在我省“冒泡”。随后,在主管部门要求下,运营商将原来3分钱至5分钱一条的广告营销类短信,价格升至0.1元一条,并设置了每小时短信发送条数限制(不得超过500条)等技术门槛。

2015年以来,运营商与腾讯、360等企业合作,建立了垃圾短信拦截系统,通过关键字、多音字、谐音字、特殊符号等关联分析,将短信来源列入黑名单,实现垃圾短信自动拦截。

移动公司一位技术专家表示,通过价格杠杆和技术手段,可逐步解决广告推销类垃圾短信,但验证码短信基本来自运营商监控“白名单”里的平台(微博、支付宝等),运营商很难甄别用户手机是正常登录验证行为,还是不法分子用“短信轰炸机”的恶意骚扰行为。

不堪其扰的陈先生通过咨询,编辑短信502发送给10086,开通“短信炸弹防护功能”后,验证码骚扰短信才得以终止。但是,该防护功能是把“双刃剑”,相当于运营商关闭用户验证短信接收功能,这会影响用户的银行交易、电商购物等正常验证码使用。

“目前,业界还没有有效的拦截手段。” 电信公司技术专家表示,运营商服务器不可能被“短信轰炸机”攻击,类似陈先生这样被骚扰的用户,一般是因手机号码泄漏,遭到不法分子非法利用导致。在未经过用户许可的前提下,运营商不敢擅自关闭用户的短信接收功能。

3 加强端口管控,验证码防护体系亟待建立

通信管理局专家认为,阻止“短信轰炸机”攻击,可借鉴拦截骚扰电话经验,通过大数据主动识别特征,主动标记问题手机号的异常登录注册行为,系统再根据拦截标准,进行机器干预或人工干预。

目前“骚扰电话预警系统”可监控用户的通话行为,当发现一个号码1小时内通话次数超过100次,且多数通话时长不超过10秒钟,系统就能智能分析,自主生成骚扰电话号码库,实现系统主动拦截。“现在的难点在于确定标准,如同一手机号在单位时间内接收多少验证码属于骚扰等,这需要行业主管部门与运营商协同完成,目前公司已启动专题技术调研。”湖北移动公司技术人员透露。

目前,全国每年各类APP、网站发送的短信验证码条数在1000亿至2000亿条,接收短信的用户虽然不用掏钱,但这些APP、网站的运营企业需要向通信运营商缴纳每条3分钱至5分钱的费用,若有“短信轰炸机”恶意发送验证码,不但骚扰了用户,也增加了企业不必要的资费开支。

目前APP、网站的运营企业在收到攻击后,在用户输入手机号发送验证码前,增加数字、图片、行为等“二次验证”,以及限制单IP请求次数、发送验证条数等,但这些无疑会降低用户的体验,北京新昕科技有限公司联合各大短信服务商推出的“企业短信防火墙”在不影响用户体验的前提下,可以有效拦截短信轰炸。

4 “变态”验证能防“短信轰炸”?考验人类智商和毅力?

注重用户体验的互联网,出现“变态”验证码是为安全让步 ,AI技术的提高,使各种验证码如同“皇帝的新装”,更无法防“短信轰炸” 。



谷歌图形验证码在AI 面前已经形同虚设,所以谷歌宣布退出验证码服务, 那么当所有的图形验证码都被破解时
《腾讯防水墙滑动拼图验证码》
《百度旋转图片验证码》
《网易易盾滑动拼图验证码》
《顶象区域面积点选验证码》
《顶象滑动拼图验证码》
《极验滑动拼图验证码》
《使用深度学习来破解 captcha 验证码》

有没有更好的防护手段呢?
新新科技研发的下一代隐藏式验证安全产品

二、企业短信防火墙实现AI立体防御

1.1 简介

新昕科技在交易反欺诈核心上, 通过AI快速学习机制,结合国际领先的设备指纹技术,首次推出无需图形验证码机制的企业短信防火墙,三步完成下载对接。

1.2 第一步:获取防火墙帐号密钥

进入 防火墙控制台,在左侧导航栏选择【网站管理】,进入网站管理页面,单击【发到邮箱】接收密钥。

1.3 第二步:下载防火墙服务器

前往新昕科技官网,在顶部导航栏选择【解决方案】>【下载中心】,进入下载中心页面,找到短信防火墙服务器安装包,点击【下载链接】即可下载。

1.4 第三步:业务系统前后端接入

web 前端接入:
前端接入:
Web前端接入文档
Java 在页面合适的位置(标签内)加入以下代码引入JS文件:

<script type="text/javascript" src="/NxtJsServlet"></script>

PHP 在页面合适的位置(标签内)加入以下代码引入JS文件:

   <script id="finger" type="text/javascript" src="/nxt_inc/nxt_front.php"></script>

后端接入:
Java
修改配置(和业务系统同系统不需要修改):
newxtc.ini (存放位置:"/WEB-INF/classes/newxtc.ini")
修改参数(fireWareUrl)–> fireWareUrl=http://localhost:7502
短信下发

public RetMsg smsSend(HttpServletRequest request, HttpServletResponse response, String clientMobile) {
   
    RetMsg retMsg = new RetMsg(-1, "系统异常");
    FwClient fwClient = new FwClientImpl();
    try {
   
        // 1 调用【短信防火墙】短信发送请求
        HashMap < String, Object > paramMap = fwClient.getSendReq(request, clientMobile);
        String jsonReq = fwClient.execReq(paramMap);
        String smsSendRet = fwClient.getRetVaule(jsonReq, "riskResult");
        if("REJECT".equals(smsSendRet)) {
   
            retMsg.setRet(3);
            retMsg.setMsg("请求过于频繁");
        }
        else {
   
            // 业务 TODO
            // 业务调用短信接口 TODO
            // 调用短信接口 结束
            if(smsRetMsg != null && smsRetMsg.getRet() == 0) {
   
                // 2 调用【短信防火墙】成功结果
                fwClient.execSucc(paramMap);
                logger.debug("send succ");
                retMsg.setRet(0);
                retMsg.setMsg("发送验证码成功");
            }
            else {
   
                // 2 调用【短信防火墙】失败结果
                SmsVerifyCache.getInstance().remove(clientMobile);
                fwClient.execFail(paramMap);
                retMsg.setRet(-1);
                retMsg.setMsg("发送验证码失败");
            }
        }
    }
    catch(Exception e) {
   
        for(StackTraceElement elment: e.getStackTrace()) {
   
            logger.error(elment.toString());
        }
    }
    return retMsg;
}

短信验证

public RetMsg smsVerify(HttpServletRequest request, HttpServletResponse response, String clientMobile, String smsVerifyCode) {
   
    FwClient fwClient = new FwClientImpl();
    RetMsg retMsg = new RetMsg(-1, "系统异常");
    if(smsVerifyCode == null || smsVerifyCode.isEmpty()) {
   
        retMsg.setRet(1);
        retMsg.setMsg("输入验证码为空");
    }
    else {
   
        // 1 调用【短信防火墙】验证请求
        HashMap < String, Object > paramMap = fwClient.getVerifyReq(request, clientMobile); // 请求防火墙
        String jsonReq = fwClient.execReq(paramMap);
        // 报文处理
        String smsSendRet = fwClient.getRetVaule(jsonReq, "riskResult");
        if("REJECT".equals(smsSendRet)) {
   
            retMsg.setRet(3);
            retMsg.setMsg("请求过于频繁");
        }
        // 业务 TODO
        if(cacheSmsVerify != null && cacheSmsVerify.getVerifyCode() != null && !cacheSmsVerify.getVerifyCode().isEmpty()) {
   
            if(cacheSmsVerify.getVerifyCode().equals(smsVerifyCode)) {
   
                retMsg.setRet(0);
                retMsg.setMsg("验证成功");
            }
            else {
   
                retMsg.setRet(1);
                retMsg.setMsg("验证码错误");
            }
        }
        else {
   
            retMsg.setRet(-9);
            retMsg.setMsg("验证码超时");
        }
        if(retMsg.getRet() == 0) {
   
            // 2 调用【短信防火墙】成功结果
            fwClient.execSucc(paramMap);
        }
        else {
   
            // 2 调用【短信防火墙】失败结果
            fwClient.execFail(paramMap);
        }
    }
    return retMsg;
}

PHP
修改配置文件(和业务系统同系统不需要修改):
nxt_ini.php (存放位置:"\nxt_inc")
修改参数($GLOBALS [“fireWareUrl”])–>$GLOBALS [“fireWareUrl”]=“http://localhost:7502”
短信下发

require_once $_SERVER['DOCUMENT_ROOT'].
"/nxt_inc/nxt_client.php";
/**
 * 发送短信
 * @param $mobile
 */
public
function send(string $mobile) {
   
    $fwClient = new ClientApi();
    // 获取下发短信报文
    $paramMap = $fwClient - > getSendReq($phone);
    // 执行下发短信请求 
    $jsonReq = $fwClient - > execReq($paramMap);
    $fwRet = $fwClient - > getRetVaule($jsonReq, "riskResult");
    if("REJECT" != $fwRet) {
   
        // 发送短信业务 TODO
        if(发送成功标记) {
   
            //  下发短信成功
            $fwClient - > execSucc($paramMap);
        }
        else {
   
            //  下发短信失败
            $fwClient - > execFail($paramMap);
        }
    }
}

短信验证

/**
 * 短信验证
 * @param $mobile
 */
public
function smsVerify(string $mobile) {
   
    $fwClient = new ClientApi();
    // 获取短信验证报文
    $paramMap = $fwClient - > getVerifyReq($phone);
    // 执行短信验证请求 
    $jsonReq = $fwClient - > execReq($paramMap);
    $fwRet = $fwClient - > getRetVaule($jsonReq, "riskResult");
    if("REJECT" != $fwRet) {
   
        // 验证短信业务 TODO
        if(验证成功标记) {
   
            //  验证短信成功
            $fwClient - > execSucc($paramMap);
        }
        else {
   
            //  验证短信失败
            $fwClient - > execFail($paramMap);
        }
    }
}

1.5丰富可视化实时风险大盘,

防御拦截数据尽收眼底,实时查看当日数据详情与近期风险趋势。
通过风控数据看板,可查看1-30天的验证情况、风控拦截情况以及验证事件触发的AI模型情况。
进入防火墙控制台,在左侧导航栏选择【风险大盘】,进入风险大盘页面。


转载:https://blog.csdn.net/weixin_44549063/article/details/113488834
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场