找回密码
 立即注册
首页 安全领域 安全板块 简析移动客户端安全

移动安全 简析移动客户端安全

2023-3-2 15:02:52 评论(0)
网站移动客户端的使命
1、首先,做移动客户端,这是一个商业行为,其本质和动力是一种商业诉求,而不仅仅是一个技术开发和用户体验的考量;
2、对于网站来说,竞争的本质是抢夺用户的时间,由于移动硬件的丰富和普及,用户的时间从PC端分离出来很大一部分给移动端,所以,从抢用户时间的角度来讲,移动端是一个新战场,必打。
3、避免被浏览器绑架流量入口,降低对搜索引擎的依赖度,同时APP可以做到快捷、安全、界面的一致,用户使用APP的时候不会受到第三方的任何干扰。

移动APP面临的威胁
在海量的应用中,APP可能会面临如下威胁:
从黑客攻击角度来分类。简单介绍一下手机中最常见的威胁方式

手机病毒。手机中的软件,嵌入式操作系统(固化在芯片中的操作系统,一般由J**A、C++等语言编写),相当于一个小型的智能处理器,所以会遭受病毒攻击。而且,短信也不只是简单的文字,其中包括手机铃声、图片等信息,都需要手机中的操作系统进行解释,然后显示给手机用户,手机病毒就是靠软件系统的漏洞来入侵手机的。手机病毒要传播和运行,必要条件是移动服务商要提供数据传输功能,而且手机需要支持 Java等高级程序写入功能。现在许多具备上网及下载等功能的手机都可能会被手机病毒入侵。

手机病毒可能造成的危害主要表现在以下五个方面。
危害一:侵占手机内存或修改手机系统设置,导致手机无法正常工作。手机的工作原理与电脑类似,有专家认为手机就是经过简化的电脑设备,手机的正常运转必须依赖一定的软件和硬件环境。
危害二:盗取手机上保存的个人通讯录、日程安排、个人身份信息等信息,对机主的信息安全构成重大威胁。
危害三:传播各种不良信息,对社会传统和青少年身心健康造成伤害。
危害四:攻击和控制通讯“网关”,向手机发送垃圾信息,致使手机通讯网络运行瘫痪。
木马病毒。是一种计算机黑客用于远程控制计算机的程序,一旦进入就会驻扎在计算机里,随着计算机的运行而自动运转,对目标计算机进行特殊的操作,一般是窃取密码和重要文件,对控制计算机实施监控和资料修改等操作。

手机病毒的预防
1)乱码短信、彩信,删。乱码短信、彩信可能带有病毒,收到此类短信后,立即删除,以免感染手机病毒。
2)不要接受陌生请求。 利用无线传送功能比如蓝牙、红外接收信息时,一定要选择安全可靠的传送对象,如果有陌生设备请求连接最好不要接受。因为,手机病毒会自动搜索无线范围内的设备进行病毒的传播。
3)保证下载的安全性。 现在网上有许多资源提供手机下载,然而很多病毒就隐藏在这些资源中,这就要求用户在使用手机下载各种资源的时候确保下载站点是否安全可靠,尽量避免去个人网站下载。
4)选择手机自带背景。 漂亮的背景图片与屏保固然让人赏心悦目,但图片中带有病毒就不爽了,所以用户最好使用手机自带的图片进行背景设置。
5)不要浏览危险网站。 比如一些黑客,非法网站,本身就是很危险的,其中隐匿着许多病毒与木马,用手机浏览此类网站是非常危险的。

APP总体性安全
一、接口安全
1. HTTPS
HTTPS不再像以前那样是少数金融APP的专利了,特别是iOS从9.0开始默认采用HTTPS,HTTPS基本成为了标配。
2.加密算法
如果光用HTTPS还不够放心,那你也可以用自己的密钥再对接口中的敏感信息进行加密。加密时非对称、对称加密算法最好配合使用,这样既能利用到非对称加密算法的安全性,又能避免其加密内容太长时的性能问题。一般做法是用RSA算法加密传输AES算法的密钥,然后用AES算法加密具体信息。
3. deviceID和Token
大多数情况下,我们需要获取唯一设备号,方便数据统计,以及和用户名密码关联生成token。iOS因为安全原因,已经无法正确获取uniqueIdentifier和MAC地址,而安卓因为生态过于繁杂,在某些机型上取imei、mac也经常会存在问题,所以在两个平台都可以用一个非常偷懒的方法,即直接在本地生成一个UUID作为deviceId并缓存起来。
服务器结合deviceID、用户名密码、时间戳等生成一个token,返回给客户端,之后客户端每次请求必须把token放在http头里返给服务器,这样服务器才会受理请求,返回信息。此外token还应根据自身情况设计一个失效机制,比如2周内没访问过就失效

二、 安装包安全
1.验证包完整性
由于安卓市场的鱼龙混杂和安卓平台的开放性,很容易就被一些不法分子利用,反编译后植入后门代码再重新打包给无知群众使用,以从中牟利。所以我们很有必要去验证包的完整性。这里有几个思路,一是验证签名,二是验证dex文件,三是验证apk,具体的验证可以使用CRC32、MD5这类数据摘要算法。
一个必须要注意的点是如果把用于比对的正确值存放在本地java代码中,就很容易被黑客反编译利用,即使用接口从服务器去获取这些数据,相关的验证代码也很有可能被反编译后去除,那么比较稳妥的做法是把安全验证和必要的初始化过程捆绑起来放在so的C++代码中去处理,通过 JNI 进行调用,这样黑客就没那么方便反编译和绕过安全验证相关代码了。
2.防动态注入
比较简单省事的方案是在进行安全验证时检查手机是否root,并检查进程中是否有常见的hook工具如Cydia Substrate或者Xposed等,如有,则提醒用户并直接关闭客户端。
3.加壳
对于apk来说,只要能反编译,那么花上足够多的时间和耐心,总归可以慢慢破解,那么更有效的方案就是给apk加壳了。所谓加壳,简单说就是把要加壳的目标apk加密,然后在外面再套一层壳apk,在使用时壳apk负责解密原apk,并通过DexClassLoader动态加载。整个过程还是有点复杂的,索性网上相关的文章不少,有兴趣可以去搜来参考。

三、系统安全
1.自定义键盘
系统自带的键盘很可能会被劫持,所以大多数涉及钱的app都很有必要写一个自己的键盘组件。特别是输入密码所用的键盘,最好还能随机生成数字的位置。
2.防截屏
黑客很有可能控制手机,偷偷的给APP截屏,这样你的屏幕上有敏感信息时,比如每次输入密码会有短暂的字母显示,就会暴露,这时候就需要有防截屏的功能。谷歌自己就提供了这个功能,只需要在每个Activity的setContentView()方法前加上下面这段代码就可以了:
getWindow().setFlags(LayoutParams.FLAG_SECURE,LayoutParams.FLAG_SECURE);
3.在移动端管理session是一个比较重要的点。客户端与服务器端通信往往需要维持通信会话,而会话的保持各家公司有各家公司的做法,但是大致方法都是相同,就是首次登陆的时候从服务器端拿回一个token,而这个token有一定的过期时间。这里提供一种简单的方法,就是登陆时拿到账号密码作为参数通过接口进行登陆(https),登陆成功后会返回token,之后所有与服务器的通信都要带上这个token,至于这个token如何携带也有多种方法,可以通过请求头,也可以通过参数,不同公司不同做法。

四、APP本身存在一些安全隐患
1.SQL注入:通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。一般存在于登录界面。
2.XSS:跨站脚本攻击,恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。存在于表单标签中。
3.SSL:安全套接层协议,是为网络通信提供安全及数据完整性的一种安全协议。
4.CSRF:通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
5.敏感信息泄露:用户在使用APP的时候,设置代理抓到的包中,包含已登录用户的一些个人信息,这里有可能存在用户名、密码的明文传输。
6.会话标识未更新:已经登录的用户正常/非正常退出,往往可以通过获取正常用户登录成功后,具有唯一标识的信息,来模仿用户登录成功的操作使其在线,然后就可以使用该用户的账号。
7.任意用户注册漏洞:此类漏洞并不危害到用户信息泄露,但是别有用心的黑客可能会利用此漏洞注册任意手机号码,并利用此注册账号去社工号码主人的朋友或者家人。
8.后台弱口令:一般是由那些懒人制定的弱密码而来的。
9.越权:身份相等的同级用户。当然,也可以让自己体验更高权限的账号。
10.文件上传:在你上传文件、照片时候,更改传输信息中的文件类型。

小结
安全是极难做到100%的,更多的情况是道高一尺魔高一丈,但是尽量多的安全保障,可以让别人的破解成本指数级的提高,直至让人觉得破解你的客户端性价比太低了。还是那句话,如果你和另一个人在野外遇到一头豹子,你想要逃生,不需要跑的比豹子快,只需要跑的比另一人快就够了。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

使用道具 举报

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们(3513994353@qq.com)。
您需要登录后才可以回帖 登录 | 立即注册
楼主
海上明月

关注0

粉丝0

帖子12

最新动态