这是怎么回事?

是的,很遗憾,你可能给别人充值了。但是,叫天天不应,叫地地不灵,运营商也没收到你这笔钱。

专注移动应用安全的娜迦信息公司 CTO 阎文斌(花名:玩命)告诉正在阅读的读者你,不要不相信,这是最近一年来支付、游戏行业 App 最常见的 bug 。

【阎文斌在2017中国移动支付年会上】

一款 App 如何安全地来到你面前

这是支付行业最敏感的地带,在 2017 移动支付年会的演讲中,他没好意思当众揭伤疤,只好在采访中和雷锋网提出了这一现象。

除了上面这种和人们息息相关的漏洞。在游戏行业,有些可以使用虚拟金币的游戏 App,在程序设计时被预留了一些接口,这些接口一旦被黑客发现,就可以做外挂、刷金币。

每个 App 都不一样,但多多少少会有可利用的点,能够达到不公平的效果,尤其像金币这些东西。以前我和厂商说过,我们只是不想搞,这种东西是没钱搞的,太累了,不想花时间在这上头,但是我们只要想花,你们没有任何一款东西能防得住我们。

只要你敢把自家的 App 拿给玩命试一试,在网络安全江湖闯荡近 10 年,曾担任 2008 奥运会网络安全技术顾问的他就敢开干,攻下你家看似严丝密合的“堡垒”。

玩命太了解 App 的薄弱地带了,正因为太了解攻击手段,所以他才想要研究如何给 App 穿上铠甲,走向明枪暗箭的战场 。

在一款 App 正式上战场前,玩命和他技术团队会先对 App 进行一次“全面体检”,就像入职一家新公司,你需要交一份体检报告,只不过玩命做的并非提交体检报告,而是在App 要被相关机构检阅,能提交合格的体检报告前先为 App 查漏补缺;或者在一款 App 版本迭代时,实时跟进检测,充当忠实的卫兵。

玩命采用静态和动态相结合方式针对客户端 App 进行分析。

所谓静态分析,就是分析应用源代码中存在的安全风险,检测包含 Android 组件安全、应用程序安全、数据安全;

动态分析,就是运行应用于安卓模拟器中,检测包含客户端自身安全,Android 组件增强检测,应用通信安全,数据安全。动态分析还要模拟用户和手机交互行为,检测交互过程中应用存在的通信安全风险,抓取应用通信过程中的资源地址,检测应用与服务器通信接口是否存在 SQL 注入,XSS 跨站,中间人攻击等安全问题。

静态分析就像解剖,研究 App 的程序编写是否规范,审核相应权限,它也像新手学车,先在驾校操练,没有面对车水马龙、真枪实弹的环境。

对玩命而言,动态分析才是“练车”的关键:把 App 放在电脑虚拟机和真实手机两个环境中“演练”,考察是否其是否能在真实的环境中正常运行,安全通信。

但是,动态分析会消耗极大的资源,因此,对玩命而言,目前大量开展的还是利用自家服务器进行线下部署。

除了让 App 能够以符合标准的姿态面对这个枪林弹雨的市场,对待一些银行、游戏领域的 App ,玩命还要为其加固,套上一层又一层的铠甲。

在 2016 年的 XPwn 未来安全探索盛会上,一个黑客团队对国内 20 家银行提供给消费者的、基于安卓系统的 20 个手机银行 App 进行攻击,发现 17 家银行的 App 存在漏洞,消费者的手机一旦被黑,无论转账给“张三”还是“李四”,在输入正确账号与密码的情况下,钱最终都会转给“王五”。

在该会议上,攻击者还表示,全国 90 %多的银行 App 都可被劫持,由此可见,互联网金融漏洞对用户造成影响。所以,当时会上专家建议厂商能够避免 App 中存在低级错误,重视产品加固,重视逻辑漏洞,不定时的进行渗透测试。

玩命的烦恼

在娜迦的官网上,雷锋网(公众号:雷锋网)发现了近 20 种加固种类。雷锋网宅客频道的编辑很疑惑:这么多服务项目,到底哪些才是玩命主推的项目?

玩命坦诚地告诉雷锋网,

很多很多,但是很多我们后来都放弃了,因为教育成本太高了。技术好实现,更难的是,教育用户这段时间很难,用户市场不接纳。

用户为什么不接纳?一是涉及到 App 安全加固项目,尤其是金融类,服务对象相当谨慎;二是有些项目实在很难解释,就算是经过专业技术培训的销售人员,除非直接派出纯技术研发人员。

于是,很多不错的加固项目不得不在“性价比”下被舍弃。

玩命还有一个烦恼,自己是“出卖安全技术而生”,是一家安全技术公司,而非提倡“免费”的互联网公司。

玩命说,

如果论打架,我们没在怕的,就是防御力不敢说,因为大家都是差不多的产品嘛,你自吹自擂就没意思了。

这些都属于“防守”范畴。一个严峻的形势是,如果大家产品真的都“差不多”,压价怎么办?

在这种情况下,一些大型的互联网公司也有相应的提供安全服务的部门,他们不以此技术为生,可能仅服务自己的企业。

比如,它也做加固市场,就是维护一个小团队去来做这块,服务于自己的市场或开发部门就行了,但我们就是自己要去拼这个企业市场,一定要拿下某个单子时,这个市场上就会出现可怕的压价行为,这个东西本身价值一万元,现在卖一百,按正常来讲我就不服务来了,但是我们这个行业不服务还不行,你不服务,别人会服务,并不利于安全企业的生存与发展。

“把一个2B 的市场做成一个走量的市场,它现在肯定是畸形的。”玩命感叹。

玩命的实验

在玩命的烦恼下,有一个优势,他从未忘记过。

娜迦公司的创始人团队都是做技术出身,他们很了解安全研发或者检测人员自身的需求,虽然玩命多次强调,就这个领域而言,甚至称不上“市场”,只能说是小众的需求。

比如,一个成熟的逆向人员平时工作量很大,技术要求高。而且,培养一名逆向人员的成本比开发人员高,有没有可能让初级的逆向人员能迅速做到和成熟逆向人员一样的事情?

玩命和团队成员试图为这部分人员研发一款辅助工具——自动逆向辅助工具。

一个白帽子分析一个目标,可能出于两种目的:

1.纯研究功能如何实现、支付规则等,但是原始的汇编代码实在太多,上千类别,一时间根本找不到要的东西,如何撇开无用的部分,找到最关键的线头?

2.找bug。一个逆向人员挖漏洞,从输入到结尾,数据流怎么走,支付发到服务器,要做哪些东西?如何找到一个关键点来修改?

黑客的艺术包括两个:第一,劫持,第二,篡改。无论找什么 bug,主要考虑如何劫持它,在哪劫持它,这是最主要的,其次再考虑如何修改它,修改成什么。所以,开发这项工具最主要的目的是把主线梳理出来,让逆向人员可以顺着这条主线,来找需要的点。

虽然,这款工具还需要几个月才能上市,但玩命已经在娜迦内部开始试用,比如,在为某个客户服务防盗链时,玩命需要研究当前已经对该客户造成影响的 App。这次,应用自己研发出来的“武器”,他派出去“作战”的就可以是“经验不那么丰富的人”。

也许,这款看起来受众面不是那么大的工具,正是玩命的一块试验田,这个自认为“攻无不克”、攻击力极强的 CTO 相当了解他所属的这个人群需要什么,他的实验能否成功?未来娜迦是否还会按照这个思路走,研发出“打架、防御都不怕”,同时还能不让他这么烦恼“拼走量市场”的工具?值得期待。

本文作者:李勤
本文转自雷锋网禁止二次转载,原文链接

转账给张三,钱却被李四收到,如何狙击凶险的 App 漏洞?——专访娜迦CTO玩命...相关推荐

  1. python定义一个类savingaccount表示银行账户_Python实现信用卡系统(支持购物、转账、存取钱)...

    最近一直在做一个有关信用卡系统的项目,所有很少出来给大家打招呼了,今天也该告一段了,本项目是基于python编程语言做的,此信用卡支持购物,转账和存取钱,下面小编把需求及实现思路大概分享一下,仅供参考 ...

  2. python银行账户资金交易管理_Python实现信用卡系统(支持购物、转账、存取钱)

    最近一直在做一个有关信用卡系统的项目,所有很少出来给大家打招呼了,今天也该告一段了,本项目是基于python编程语言做的,此信用卡支持购物,转账和存取钱,下面小编把需求及实现思路大概分享一下,仅供参考 ...

  3. 基于python网络编程实现支持购物、转账、存取钱、定时计算利息的信用卡系统...

    一.要求 二.思路 1.购物类buy 接收 信用卡类 的信用卡可用可用余额, 返回消费金额 2.信用卡(ATM)类 接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款 其中: 1.每种交易类型不单 ...

  4. tp中怎么执行mysql事务_tp中使用事务

    是什么 事务是为了防止,多个操作,其中有失败,数据有部分被执行成功的时候使用的. 比如,银行,用户转账.张三钱扣了,结果李四钱还增加! 这个时候需要使用事务,确保张三钱扣了,李四的钱也增加,才真正的成 ...

  5. SQL Server 事务(超级简单,人人都可以看懂)

    事务(Transaction) 事务就是一个工作单元 ,如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中永久组成部分,如果事物中遇到错误且必须取消或回滚,则所有数据更改均被撤销. ...

  6. js 链接websocket马上断开_WebSocket之基于STOMP协议的广播模式实现群聊功能

    又是一个老套的古诗词赏析 不恨此花飞尽,恨西园.落红难缀.--苏轼<水龙吟·次韵章质夫杨花词> WebSocket与STOMP协议 相关简介 WebSocket WebSocket 是一种 ...

  7. Go语言操作MySQL的基础知识

    点击上方"Go语言进阶学习",进行关注 回复"Go语言"即可获赠从入门到进阶共10本电子书 前言 通常情况下,我们程序员和数据库打交道是最多的.要然我们怎么会被 ...

  8. Mysql数据库基础及高阶

    基础篇 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库.表.字段) DML: 数据操作语言,用来对数据库表中的数据进行增删改 DQL: 数据查询语言,用来查询数据库中表的记录 DC ...

  9. MySQL——DDL、DML、DQL、DCL语法总结

    文章目录 通用语法及分类 一.DDL(数据定义语言) 1. 数据库操作 2. 表操作 二.DML(数据操作语言) 1. 添加数据 注意事项 2.删除数据 3.修改数据 注意事项 三.DQL(数据查询语 ...

最新文章

  1. 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...
  2. 请求Get和Post对于utf-8字符的处理的考虑
  3. Vue iView Admin 动态路由菜单加载 前后端分离(springboot 2.x iview admin vue 前后端分离 模型设计器 动态数据权限...
  4. MySQL - 日常操作二 备份还原
  5. php 相加 机组数字,PHP-80型等压比例混合器
  6. 为什么阿里强制 boolean 类型变量不能使用 is 开头
  7. yuv图片拼接 java_java利用ffmpeg把图片转成yuv格式
  8. java计算机毕业设计基于安卓/微信小程序的个人健康打卡系统
  9. ubuntu中谷歌拼音输入法的简化字和繁体字的切换
  10. String类12个常用的方法
  11. cruzer php sandisk 闪迪u盘量产工具_SanDisk Cruzer Micro(闪迪U盘量产助手)V1.1 最新版
  12. win7家庭版升级旗舰版
  13. 即时通讯IM,是时代进步的逆流?看看JNPF怎么说
  14. 你的善良必须有点锋芒
  15. 比特大陆“众叛亲离”?
  16. OS X下的鼠标手感
  17. java号码分身_电话号码分身
  18. Suzy找到实习了吗 Day24 | 回溯算法开始啦:回溯的理论知识,77组合(有一个问题没有解决)
  19. 富人越富,穷人越穷,我为什么反对PoS
  20. AP AR mAP ROC AUC(目标检测)

热门文章

  1. __setattr__,__getattr__,__getattribute__
  2. JavaScript笔记整理
  3. python将文件数据转换成二维列表
  4. fabric node enrollAdmin.js 报错SyntaxError: Unexpected token function at createScript (vm.js:56:10)
  5. 同一个类里方法互相调用注解失效问题
  6. SpringBoot集成Maven工程
  7. Ranger-AdminServer安装(开启Kerberos)
  8. 记一次从Sql Server中图片二进制流还原回图片的开发过程
  9. python xampp mysql_php xampp mysql
  10. 并联机器人市场呈现快速增长之势