APP本地服务安全测试

【APP本地服务安全测试】得意犹堪夸世俗,诏黄新湿字如鸦。这篇文章主要讲述APP本地服务安全测试相关的知识,希望能为你提供帮助。
一、安全测试基本分类: 1、系统安全 系统加固 安全加固:比如linux中关闭telnet端口,修改ssh端口 检测一些不必要的服务(需要卸载一个ping)--保证系统的最小集 app安全加固:加一层外壳 补丁 消息中间件:activityMQ,rabbitMQ,safMQ(关闭页面,非业务端口,默认用户) 防火墙规则(iptables) 防病毒 2、应用安全(安装包,服务,业务)----用户(人和服务)口令、敏感信息 (1)黑白名单(IP:port)----访问控制 (2)消息层面:数据加密和签名 (3)加密算法的安全性(对称、非对称) 3、管理安全 业务层面:面向普通用户 管理层面:管理节点创建虚拟机(对资源的管理,虚拟机创建成功后进行提供业务) 运营层面:对业务的处理 运维层面:针对管理员(线上,线下) 4、网络安全:关注数据传输安全(数据源头和目的),是否加密,检测数据的正确性和一致性(有无伪造) (传输)----加密(hppts+ssl) 不是重点关注的:丢包后的处理 数据一致性(udp) 5、云安全测试 A用户--安全组A B用户--安全组B (1)将A进入B,或者将B加入A (2)规则:a-> b(ip/udp/icmp) b-> a 单通 多通   安全: 1、硬件 防火墙,交换机 2、软件   二、app本地服务安全测试 问题1:app当前的现状,会遇到哪些安全类的问题 1、远程控制(木马) 2、恶意推广(付费) 3、外挂(程序的后门) 4、敏感、隐私信息被窃取 5、本地进程注入(四大组件没有权限控制) 6、钓鱼(盗版的应用)   账户安全 文件安全:文件权限的最小集,文件是否需要加密,脱敏处理(大数据的清洗)   支付安全:账户安全,日志安全(用户信息泄露),数据存储(加密存储),安全加密算法   进程安全:是否有状态资源监控,进程管理,脚本是否安全 文件存储: app的四大组件安全(drozer工具) activity:生命周期,服务的机制需要掌握 启动,恢复,停止,完成等各种状态的切换 service: context provider: broadcast:一对一,多对多   1、安装包安全 1.1安装包是否可以反编译 apk--> dex--> 运行 反编译:dex-> java-> 反编译(user/pwd/password等敏感信息) 编码:(1)用户敏感信息硬编码 (2)代码混淆 对于支持反射的语言,代码混淆有可能与反射发生冲突。 代码混淆并不能真正阻止反向工程,只能增大其难度 对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。 (3)代码扫描(fortify) Fortify SCA 是一个静态的、白盒的软件源代码安全测试工具; 它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理报告。 1.2、安装包是否有签名 (1)发布前校验签名使用的key是否正确 (2)使用命令:jarsigner –verify –verbose –certs apk包路径 验证结果:jar已验证 1.3、安装包是否完整 包发布: (1)发布平台下载安装包 (2)安装包完整性校验:一般采用md5校验方式,通过md5工具和md5密钥进行校验 例如app下载后进行完整性校验 1.4、安装包中申请的权限问题 认证机制:android--manifest.xml中看各个组件的权限 对APP申请的权限进行检查,在Android工程的AndroidManifest.xml文件中查询申请的权限,删除不必要的权限,例如用户定位/通讯录/信息等权限,保留APP可用权限即可   2、软盘劫持 (1)安全问题: 用户安装了第三方不可信的键盘输入法,当涉及到隐私或者金融 类操作时需要应用进行校验提示 (2)建议: 使用应内部提供的软键盘 定期对手机进行病毒扫描   3、账户安全(最重要) 账户分类: 用户账户(管理员,普通用户), 服务账户(多个服务之间的交互需要使用口令) docker(各种服务,通信可能是通过消息组建、配置文件---ip/port/user/password) 硬件账户(硬件动态库)   (1)密码是否明文存储(数据库/配置文件) (2)密码加密算法是否安全 (3)密码是否加密传输 (4)是否支持账号锁定策略---3次,第四次锁定 (5)是否支持多点登陆 (6)注销后不能访问(session、cookies是否删除) (7)账户权限控制(纵向越权和横向越权) 纵向越权:一个低级别攻击者尝试访问高级别用户的资源 横向越权:攻击者尝试访问与他拥有相同权限的用户的资源; (不同部门或者不同公司之间) (8)密码安全要求(长度、字符,数字)   4、文件安全 (1)文件权限 dwrx 0,0,0 读,写,执行 用户、本组、其他组 根据业务需要赋予文件最小权限 (2)文件内容 敏感信息(用户名、密码),加密的方法,加密的安全要求 包括对外提供的用户名和密码信息以及程序内部交互的认证信息:需要满足密码不能是明文,并且需要安全加密算法进行加密配置,密码长度和格式满足安全要求   文件上传和下载: 要不要脱敏处理(医院上传证件照) 传输过程中加密 完整性校验(hash值校验) 文件存储   5、日志安全 (1)业务日志----交易的流水号,交易的过程 (2)系统内部交互日志 a---> b----> c 记录整个交互过程 debug/interface/run/security log.debug(message.toString())----打印所有的信息 (3)统计/审计日志---系统的入口记录每分钟接收的消息数 (4)重点考虑:敏感信息的存储(密码等) (5)日志管理平台:收集各个系统中的日志   日志中不能打印密码信息; 日志中不能打印用户隐私信息; 需要有安全日志功能; 日志需要有清理机制; 日志不能随意删除。   日志安全的测试手段: 自己写脚本去扫描日志文件(user/pwd/password/userName/userpwd) shell/python/search工具   6、进程安全 1、启动 (1)权限问题:win10经常遇到自己运行exe报没有权限 一般使用普通用户启动服务 linux:不能使用root用户启动服务 在start.sh中判断只能当前用户启动 (2)启动过程中数据问题(有时候进程启动的时候会生成一下临时文件,需要考虑临时文件中是否涉及安全信息) 启动过程中的临时文件需要删除 (3)启动完成后对外端口启动在业务网络上,对内端口启动在本地网络上 端口的启动机制 问题:当前端口有什么安全风险

APP本地服务安全测试

文章图片
0.0.0.0 全网监听,内网的会被外部网络访问到 2、运行 (1)运行过程中的缓存信息涉及隐私需要加密 (2)需要记录运行日志 (3)运行过程中需要有监控认证 运行监控:vcs/hacs----提供守护服务 (4)多进程之间的交互需要认证 3、停止 (1)清理临时文件 (2)安全断开相关连接   7、数据存储/文件存储安全 功能:数据完整性;数据备份;容错与冗余 AI--机器学习 (1)数据的重要性---机密性,完整性,防丢失 目的:保护机密数据;防止数据丢失;确保数据完整性   python爬虫:统计从10年到现在当前歌手的歌曲: a:有多少唱季节,春,夏,秋,冬 b:多少唱城市的歌曲,成都,北京,上海..... 最终生成一个报表 (2).数据的介质(硬件) 介质:单个文件、数据库、文件服务器、缓存服务 数据库 功能:数据完整性 数据存储:加密存储 访问控制 监控机制(服务监控,数据监控) 备份恢复 (3)数据库安全 DCL DDL DML 数据库扫描--NGSSquirrel(全球公认的数据库扫描软件)/DatabaseScanner   代码安全:扫描(fortify)

    推荐阅读