【南方周末官网及APP注册/登录安全分析报告】

前言
由于网站注册入口容易被黑客攻击,存在如下安全问题:

  1. 暴力破解密码,造成用户信息泄露
  2. 短信盗刷的安全问题,影响业务及导致用户投诉
  3. 带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞

所以大部分网站及App 都采取图形验证码或滑动验证码等交互解决方案, 但在机器学习能力提高的当下,连百度这样的大厂都遭受攻击导致点名批评, 图形验证及交互验证方式的安全性到底如何? 请看具体分析

一、 南方周末官网 注册入口
简介:《南方周末》创办于1984年,由南方报业传媒集团主管主办,以“在这里,读懂中国”为追求,以“正义、良知、爱心、理性”为基本理念,是一份在中国有着广泛影响、深具公信力的严肃新闻大报。

在这里插入图片描述

二、 安全性分析报告:

采用的是一家短信服务商云片的滑动验证码,容易被模拟器绕过甚至逆向后暴力攻击,滑动拼图识别率在 95% 以上。
在这里插入图片描述

三、 测试方法:

前端界面分析, 南方周末采用的滑动验证码比较小众,是一家短信服务商提供的,名字叫云片,和极验不同,这家的网上几乎没有破解教程及源码,不过也没有难度,我们还是采用模拟器的方式,关键点主要模拟器交互、距离识别和轨道算法3部分

在这里插入图片描述

  1. 模拟器交互部分

在这里插入图片描述

2. 距离识别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 轨道生成及移动算法
在这里插入图片描述
在这里插入图片描述

  1. OpenCv 轮廓匹配测试样例:

    在这里插入图片描述

四、 南方周末App 端注册入口

app 端点击获取验证码,没有图形验证及交互验证机制,估计是后台有加密。

在这里插入图片描述

APP安全分析:
App端经过加固, 采取MD5签名措施,经过脱壳后逆向出源码,手机号签名保护算法暴露
在这里插入图片描述

加密算法复原后的算法

/**
	 * input:list,return:json
	 */
	@Override
	public RetEntity send(CloseableHttpClient httpclient, String phone) {
		try {
			String type = "4";
			String urlPrefix = "type=" + type + "&platform=ireader&device=iPhoneX&version=7.4.2&system_version=13.3";
			urlPrefix += "&machine_id=2107B72E-73E4-40FD-9BB1-74099067C72B&format=json&user=" + phone + "&phone_prefix=%2B86";
			Map<String, String> hashMap = new HashMap<String, String>();
			hashMap.put("user", phone);
			hashMap.put("type", type);
			hashMap.put("phone_prefix", "+86");
			hashMap.put("platform", "ireader");
			hashMap.put("version", "7.4.2");
			hashMap.put("machine_id", "2107B72E-73E4-40FD-9BB1-74099067C72B");
			hashMap.put("format", "json");
			hashMap.put("system_version", "13.3");
			hashMap.put("device", "iPhoneX");
			String link = createLinkString(hashMap);
			StringBuilder sb = new StringBuilder();
			sb.append(link);
			sb.append("v6NesIGMIBGbmKq5");
			String sign = MD5Util.getMD5Str(sb.toString());
			String url = "https://passport.infzm.com/api/mobile/send_verify_code?" + urlPrefix + "&sign=" + sign;
			String response = BasePost.httpGet(httpclient, url, null, null);
			RetEntity retEntity = new RetEntity();
			retEntity.setRet(-1);
			JSONObject jsonRet = (response != null && response.startsWith("{") && response.endsWith("}")) ? JSON.parseObject(response) : null;
			String code = (jsonRet != null) ? jsonRet.getString("code") : null;
			String msg = (jsonRet != null) ? jsonRet.getString("msg") : null;
			if ("200".equals(code)) {
				retEntity.setRet(0);
				retEntity.setMsg(msg);
			} else {
				retEntity.setMsg(response);
			}
			return retEntity;
		} catch (Exception e) {
			System.out.println(e.toString());
			return null;
		}
	}

	private String createLinkString(Map<String, String> map) {
		List<String> arrayList = new ArrayList<String>(map.keySet());
		Collections.sort(arrayList);
		String str = "";
		for (int i = 0; i < arrayList.size(); i++) {
			String str2 = (String) arrayList.get(i);
			String str3 = (String) map.get(str2);
			StringBuilder stringBuilder;
			if (i == arrayList.size() - 1) {
				stringBuilder = new StringBuilder();
				stringBuilder.append(str);
				stringBuilder.append(str2);
				stringBuilder.append("=");
				stringBuilder.append(str3);
				str = stringBuilder.toString();
			} else {
				stringBuilder = new StringBuilder();
				stringBuilder.append(str);
				stringBuilder.append(str2);
				stringBuilder.append("=");
				stringBuilder.append(str3);
				stringBuilder.append("&");
				str = stringBuilder.toString();
			}
		}
		return str;
	}

报文测试结果:

在这里插入图片描述

五丶结语

南方周末作为有着广泛影响、深具公信力的严肃新闻大报, 采用的是短信服务商云片的滑动验证产品, 在一定程度上提高了用户体验, 不过随着图形识别技术及机器学习能力的提升,图形验证方式无法应对以人工智能为基础的人机识别,虽然还有文字点选、逻辑推理等更多复杂的交互验证方式,但本质就是牺牲用户体验来提高安全,并且同样无法应对人机识别。
App 端虽然采用了360加固, 但懂技术的都知道, 客户端无论如何都有可能被逆向,靠加固是否无法保证安全的,
脱壳后的算法就如同皇帝的新装,暴露在黑客面前。

很多人在短信服务刚开始建设的阶段,可能不会在安全方面考虑太多,理由有很多。
比如:“ 需求这么赶,当然是先实现功能啊 ”,“ 业务量很小啦,系统就这么点人用,不怕的 ” , “ 我们怎么会被盯上呢,不可能的 ”等等。

有一些理由虽然有道理,但是该来的总是会来的。前期欠下来的债,总是要还的。越早还,问题就越小,损失就越低。

所以大家在安全方面还是要重视。(血淋淋的栗子!)#安全短信#

戳这里→康康你手机号在过多少网站注册过!!!

谷歌图形验证码在AI 面前已经形同虚设,所以谷歌宣布退出验证码服务, 那么当所有的图形验证码都被破解时,大家又该如何做好防御呢?

>>相关阅读
《腾讯防水墙滑动拼图验证码》
《百度旋转图片验证码》
《网易易盾滑动拼图验证码》
《顶象区域面积点选验证码》
《顶象滑动拼图验证码》
《极验滑动拼图验证码》
《使用深度学习来破解 captcha 验证码》
《验证码终结者-基于CNN+BLSTM+CTC的训练部署套件》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值