六、日志安全 Logcat Security 在APP的开发过程中,为了方便调试,通常会使用log函数输出一些信息,这会让攻击者更加容易了解APP内部结构,方便破解和攻击,甚至有可能直接获取到有价值的隐私敏感信息 ×5DBA即为其十六进; 4、利用android进程附加的特性,一个进程只允许被附件一次,可以在启动app的时候开启一个进程附件app进程,导致其他动态调试进程无法附件进程,使其无法动态分析; 5、检测 Static Analysis 静态分析作为逆向分析破解app最为常见手段,如果app没有经过任何安全保护,可以说通过静态分析可以分析任何你需要的东西,导致非常严重的危害。 代码: 通过xposed框架Hook微医用户版app,可以查看到不少进程已经注入到app中,对app的安全危害极大: 图片涉密 ps | busybox grep com.xx 通过cydia substrate \4.
APP安全威胁 在App项目中都会碰到三座App安全大山。App客户端安全、数据传输安全、App服务端安全。下面以分析检测的思路进行对App安全威胁的这三座大山进行一些剖析梳理总结。 所以该App的反编译这项是相对安全的。 本地数据安全检测 App本地数据安全性问题需要关注的问题分别为:App所在目录的文件权限、SQLite数据库文件的安全性、敏感数据明文直接存储Sdcard。 App服务器安全 App服务端安全需要关注的是服务端API安全、业务逻辑安全、中间件安全、服务器应用安全。主要可以通过渗透测试的方式对App的服务器进行安全检测,通过模拟恶意攻击方式进行对服务器攻击。 从而提高App服务器的安全性。
为什么要安全 现在几乎所有App都是网络强相关的,客户端展示的很多东西都是通过接口从服务器上获取的,当然,服务器也会接收大量从客户端上传的数据,这两端在进行双向通信的时候,就很容易被第三方截获,导致数据被盗取 App的移动安全主要包括下面几种: 密钥破解,导致本地加密数据被盗取 通信密钥破解,导致接口数据被盗取 伪造接口数据上报 接口签名被破解,导致接口可以被重放攻击 那么归结起来,实际上就是这样几种模式: 成本最低,而且可以比较有效的扼杀一些在破解边缘徘徊的初级破解者,让他们能够悬崖勒马,浪子回头,然而,对于真正想要破解的人来说,混淆只等于加大了一点阅读难度而已,相信做开发的同学基本上也都反编译过别人家的App 当然Google也总是后知后觉,在各种厂商提供了TrustZone/TEE硬件加密方案后,Google也推出了Keystore,当然,最低要API26才能使用,所以在现在来说,几乎不会有App能做到最低版本 TCP加密 目前大部分的App都是通过Http来进行数据交互,但基于TCP,我们可以实现自己的通信协议,另外,利用TCP包的无序性来增加破解的难度,这样,利用TCP心跳来维持一个安全的通信通道,也是一个非常不错的方案
背景介绍 APP安全合规的监管机构:APP违法违规收集使用个人信息治理工作组(APP治理小组)、工业和信息化部信息通讯管理局(工信部)、国家移动互联网应用安全管理中心(病毒中心)、地方通信局、地方网安 APP应用安全合规需要关注问题 在开发并上架APP项目时需要重点关注:程序自身保护安全、运行环境安全、身份认证安全、数据存储安全、内部组件安全、恶意攻击安全这六大问题。 ? APP如何做好基础防护? 为了让我们开发的APP能过安全合规检测,我们需要重点关注如下五点,让我们的APP更加安全。 ? APP安全合规建设的思考 安全开发人员:熟悉负责的产品功能、了解个人 信息采集、使用和展示定制个人隐私政策,并对组员以及APP开发团队进行安全合规的要求以及做法进行做宣传以及安全合规应用和监督把控。 软件开发人员:熟悉了解APP应用客户端安全合规所涉及的技术信息,避免出现安全漏洞。 QA:根据安全合规的标准进行做验证测试,严格把控APP安全质量,守好APP应用上架的最后一道防线。
前言 随着运营商新技术新业务的发展,运营商层面对安全的要求有所变化,渗透测试工作将会面临内容安全、计费安全、业务逻辑及APP等方面的挑战。 随着运营商自主开发的移动APP越来越多,这些APP可能并不会通过应用市场审核及发布,其中的安全性将面临越来越多的挑战。 为有效的针对上述各种威胁进行有效防范,保障运营商和客户的业务安全,本手册将着重从下表所列项目针对APP应用(安卓)安全进行检测。 图4 有混淆的代码 2.2.4威胁等级 若客户端进行加固保护,此时认为无风险。 若大部分代码(包括核心代码)经过混淆,此时低风险。 :安卓系统定义了许多权限声明项,分别对应一些操作系统功能; 4.权限声明的作用:如果一个APP或组件在没有声明权限的情况下就调用相关API,会被拒绝访问;但如果声明了相关权限,安装的时候就会有提示; 5
一、数据存储安全 主要从以下几个方面考虑 Sandbox 数据存储 Keychain 数据存储 Console Log 数据 Keyboard 缓存 1. Sandbox 数据存储 (1) Sandbox 文件存储结构 SubDirectory Description AppName.app 存储 app 执行文件和静态资源文件,改文件夹为只读 Documents App的配置文件等,该文件夹的内容会被同步到backup文件中 Library Application support files Library/Preference App specific preferences ,执行相关的功能,查看log中是否包含用户敏感信息 4. :application:openURL和application:handleOpenURL 测试点: openURL的方法实现中有没有对传入的URL参数做校验 openURL有没有校验URL来源是否安全
背景 目前APP发包上架的流程前,免不了需要对APP应用安全检测这个重要且必不可少的步骤流程,APP应用安全检测大部分采用采购第三方的APP安全检测产品(因为这块技术基础储备),也有部分企业基于开源的移动安全框架 (MobSF)进行二次开发APP安全检测产品(采购第三方产品费用太高),也有部分安全团队基于团队的技术储备进行基于逆向第三方APP安全检测产品进行开发自研的APP安全检测产品(采购第三方检测产品)。 APP自身安全检测 APP自身安全检测主要检测APP是否采用第三方加固产品进行加固或者有对APP进行做保护。 4、检测APP中logcat日志函数调用风险,logcat函数作为android开发过程中重要的调试信息的,它可以进行关键功能验证及数据信息的输出,如果这个logcat被调用或在APP的发布版本上,还会进行调试信息的输出 4、检测app内存被转存(内存dump)的风险,通过利用调试工具或hook框架或者通用的修改器(例如:GG修改器、八门神器),获取APP运行时要转存的基地址和大小。
备注:allowBackup属性未配置时默认为true debuggable开启 用例风险:当debuggable标志值为true时,即表示是App可调试的,存在安全泄露风险。 本地数据库注入/文件遍历检测 安全风险:获取或者篡改app中存储的敏感信息,如手机号、账号、密码等,在业务运行操作时无法保证数据安全。 WebView组件安全测试 WebView是Android系统提供能显示Web页面的系统控件,例如混合类型的App中H5界面就是使用了WebView组件。 数据的完整性进行校验 安全风险 App向服务器提交的数据易被中间人篡改,对用户数据的完整性造成影响,如用户信息被破解利用等问题。 键盘劫持测试 安全风险: 攻击者可以通过劫持键盘窃取用户输入数据,可能带来用户账号密码、敏感数据等泄露的风险,特别是银行金融类App。
三、软键盘劫持 如果用户安装了第三方键盘,可能存在劫持情况,对此,我们在一些特别敏感的输入地方可以做检查,例如金融类APP登录界面的用户名密码输入框等,看是否支持第三方输入法,一般建议使用应用内的软键盘 3)对App的输入有效性校验、认证、授权、数据加密等方面进行检测 4)限制/允许使用手机功能接入互联网 5)限制/允许使用手机发送接收信息功能 6)限制或使用本地连接 7)限制/允许使用手机拍照或录音 4)不同的应用程序的个人身份证或密码长度必须至少在4-8个数字长度之间。 5)当应用程序处理信用卡明细或其它的敏感数据时,不以明文形式将数据写到其他单独的文件或者临时文件中。 4.人机接口安全测试 1)返回菜单应总保持可用。 2)命令有优先权顺序。 3)声音的设置不影响使用程序的功能。 4)应用程序必须能够处理不可预知的用户操作,例如错误的操作和同时按下多个键。 如果觉得有用,就请关注、点赞、在看、分享到朋友圈吧!
总结了一些APP接口安全设计的要点供大家参考,如有疏漏请在评论里面提醒补充! 4. User-Agent和Referer限制,只能一定程度上起到防范作用。 数据合法性校验:数据合法性的校验主要是为了避免异常数据和注入攻击。 1.
虽然网络与信息安全的从业者越来越多,线上、线下的活动也越来越多,但到目前为止,还没有一款真正面向信息安全专业学生、从业者、爱好者的手机APP软件。 E安全App今日迎来全新2.0越级版,让用户轻松“掌握”信息安全。E安全2.0越级版更新了全新界面。新的界面带来的新图标简单严谨,更加直观,增加了一些人性化的界面设置。 ,同时通过E安全App安全课程和安全课程栏目,用户也可以实现随时随地在线学习各类信息安全课程,为用户提供更为方便快捷信息安全资料查找的服务。 E安全APP官网:http://www.easyaq.com E安全APP下载: ? E安全App由中国信息安全测评中心和安恒信息联合开发。
前言 由于一个同学问到我如何按照一个流程走好之后回到首页,我以前看到过4个解决方案,后来发现有做个记录和总结的必要,就写了这篇博文。 以上几个例子都涉及到了 --- 如何安全退出多个ACTIVITY 这个问题。 通过大致的思维导图罗列出了以下几个知识点,来帮助你去分析学习: 1.Activity的启动模式 2.intent: Flags属性,以及其显、隐式 3.Application : 全局的使用 4. 方案4 方法:使用广播机制解决 思路:通过Activity创建的时候,设置监听广播,在注册流程最后步完成注册时候,发送广播进行遍历finish(). ); } }); 优缺点: 方案6(不推荐) 方法:方法有人说可以使用抛出异常来退出,可是这样会影响到用户体验,所以不推荐 总结 以上便是我从注册流程分析如何安全退出多个
4、源码查看 利用工具(AndroidKiller) ? android:exported Service组件的设置错误可以被第三方APP任意调用,导致敏感信息泄露,并可能受到权限提升、拒绝服务等安全风险 Content provider组件 反编译 当Content Provider组件可以被第三方app任意调用时,会导致敏感信息泄露,并可能受到目录遍历、SQL注入等攻击等安全风险。 0x02:测试框架 推荐一个:移动安全漏洞测试框架(MobSF)是一种自动化的多合一移动应用程序(安卓/苹果/PC端)可以进行静态和动态分析的安全测试,恶意软件分析和安全评估框架。 操作详细请参考 http://www.360doc.com/content/15/0228/04/21863855_451377867.shtmlhttps://www.cnblogs.com/bluesky4cn
4、源码查看 利用工具(AndroidKiller) ? android:exported Service组件的设置错误可以被第三方APP任意调用,导致敏感信息泄露,并可能受到权限提升、拒绝服务等安全风险 Content provider组件 反编译 当Content Provider组件可以被第三方app任意调用时,会导致敏感信息泄露,并可能受到目录遍历、SQL注入等攻击等安全风险。 0x02:测试框架 推荐一个:移动安全漏洞测试框架(MobSF)是一种自动化的多合一移动应用程序(安卓/苹果/PC端)可以进行静态和动态分析的安全测试,恶意软件分析和安全评估框架。 操作详细请参考 http://www.360doc.com/content/15/0228/04/21863855_451377867.shtml https://www.cnblogs.com/bluesky4cn
IOS:没有类似manifest文件来查看,IOS的用户权限只有在用户使用APP到了需要使用的权限时,系统才会弹出提示框,提示用户当前APP需要访问照片、联系人列表等组件。 日志是否存在敏感信息,一般开发在写程序的过程中会加入日志帮助高度,所有可能会写入一些敏感信息,通常APP的发布版不会使用日志,但也不排除特殊情况。 3)对App的输入有效性校验、认证、授权、数据加密等方面进行检测 4)限制/允许使用手机功能接入互联网 5)限制/允许使用手机发送接收信息功能 6)限制或使用本地连接 7)限制/允许使用手机拍照或录音 4)不同的应用程序的个人身份证或密码长度必须至少在4-8个数字长度之间。 5)当应用程序处理信用卡明细或其它的敏感数据时,不以明文形式将数据写到其他单独的文件或者临时文件中。 4.人机接口安全测试 1)返回菜单应总保持可用。 2)命令有优先权顺序。 3)声音的设置不影响使用程序的功能。 4)应用程序必须能够处理不可预知的用户操作,例如错误的操作和同时按下多个键。
今天我们来分析一下他的安全性到底如何。 经过严密的分析发现:该打车APP(司机版)主要的防护在两个地方 第一个是:登录过程中,通过传递context对象到so库中的方式去拿到apk的签名信息的md5签名信息上传。 迫使点击确定的方式退出app。 首先我们来说第一个校验:本身使用so作为获取签名信息的地方相应的比在java中获取签名信息的方式要安全。但是so获取签名信息必须给底层传递context对象。 如果是盗版会弹出提示:“请卸载该软件后再使用”,这种防护更没有安全性可言了。我们只需要把这行代码注释或者删除掉。这个校验就没有任何的作用了。
客户端程序安全 安装包签名 反编译保护 判断是否能反编译为源代码,是否存在代码保护 是否能通过用反编译工具查看源代码 建议客户端进行加壳处理防止攻击者反编译客户端,同时混淆客户端代码,并且一定要对核心代码进行代码混淆 应用完整性校验 组件安全 - 组件安全测试工具 webview - web安全 敏感信息安全 数据文件 Logcat日志 密码安全 键盘劫持 随机布局软键盘 屏幕录像 手势密码 安全策略 密码复杂度检测 账号登录限制 账户锁定策略 问题验证 - 密保问题 会话安全 界面切换保护 - 防止钓鱼界面 activity劫持 UI信息泄露 验证码安全 PKAVHttpFuzzer 安全退出 - 退出时是否正常终止会话 密码修改验证 - 验证旧密码 Activity界面劫持 - activity 界面劫持工具 进程保护 内存访问和修改 - MemSpector 动态注入 - hook 通信安全 通信加密 证书有效性 关键数据加密和校验 访问控制 客户端更新安全性 短信重放攻击 业务安全 越权操作 交易篡改 重放攻击 用户枚举 暴力破解 注入/XSS/CSRF pdf 链接: 提取码: dwnc
前言 公司的项目有安全合规方面的需求,上线前要经过安全架构师进行安全测试,安全测试通过才能上线,目前 APP 项目中涉及到的点整理如下 技术方面 打包签名 APP里面的基本操作,使用打包服务器上的签名, 防内存dump保护 防内存数据读取 使用腾讯云的"移动应用安全" -> "应用加固" 免费版基础加固内容包含 APP安全所有功能加固使用对应的付费即可 腾讯云:https://console.cloud.tencent.com 更新升级使用工作空间里的更新策略 APP 不走应用商店发布 APP中实现的强制更新和热更新功能弃用 业务方面 首次打开强制登录 登录后再次激活APP后,要输入用户手势 密码复杂度要高,长度8位以上,必须包含大小写字母 (安全软件/寻踪管家)安全策略 不支持用户使用 USB 调试及文件传输功能,USB线只能充电 不支持用户自定义手机权限 不支持用户访问手机文件系统,浏览器等常规功能 定制版的手机只支持访问当前用户的工作空间里面的工作 ,在公司的业务IT那边,关于工作空间的测试,只能拿着手机去隔壁楼的IT那边刷机,开发再运行开发模式测试, 也导致了线上问题复现排查困难增大 目前项目中的涉及到的安全策略就这些,欢迎补充 ^-^
签名校验 检查APP中自己写入的私钥hash值与当前签名中的私钥hash值是否相一致。一致则说明APP没有被改动,允许APP运行;不一致则说明APP被二次打包,APP就自我销毁进程。 https://www.cnblogs.com/lsdb/p/9340761.html 4. (比如我爱我家APP被挂博彩),我觉得这个很有必要,不仅仅是因为安全,包括微信公众号,googleplay 都在强制要求开发者必须使用HTTPS。 System.setProperty("key","value"); https://www.jianshu.com/p/4a99f524e0dc 具体解释可以看看这篇文章,这里不做过多笔墨,前辈们已经总结得很好 自定义键盘 关于这一点,其实笔者不知道此做法对安全性有多大作用,我也特意去下载了一些热门应用做调查,发现还是比较多APP应用使用手机自带的或默认的键盘,所以笔者不清楚其危害性有多大,个人觉得可有可无。
4.顶踩功能 三、滚动选项卡开发 1.选项卡动态显示 2.列表滑动实现 3.列表显示和同步 4.上拉加载开发 5.封装上拉加载组件 6.封装无数据默认组件 总结 前言 本文主要介绍了首页图文列表和滚动选项卡的开发 common目录下新建common.css保存本项目全局样式,如下: /* 本项目全局样式 */ .bg-main { background-color: #FF4A6A; } App.vue中导入CSS 现进一步实现4个图标的特效,如下: <template> <view class="p-2"> <! ; } /* 文本颜色 */ .text-main { color: #FF4A6A; } 显示: ? 4.顶踩功能 现完善顶踩功能接口。 顶踩有3种状态:顶、踩或未操作,点击顶按钮后,对应数值加1,并且颜色变为激活状态。