一、安全测试基本分类:
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)启动完成后对外端口启动在业务网络上,对内端口启动在本地网络上
端口的启动机制
问题:当前端口有什么安全风险
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)
- Android-bindService本地服务-初步
在Android开发过程中,Android API 已经有了startService方式,为什么还需要bindService呢? 答:是因为bindService可以实现Activity-->S ...
- 移动APP安全在渗透测试中的应用
安全爱好者研究的往往是app的本地安全,比如远控.应用破解.信息窃取等等,大多人还没有关注到app服务端的安全问题,于是在这块的安全漏洞非常多. 移动app大多通过web api服务的方式跟服务端交互 ...
- Android APP性能及专项测试
移动测试. Android测试 .APP测试 Android篇 1. 性能测试 Android性能测试分为两类:1.一类为rom版本(系统)的性能测试2.一类为应用app的性能测试 Android的a ...
- Android APP性能及专项测试(个人整理)
移动测试. Android测试 .APP测试 Android篇 1. 性能测试 Android性能测试分为两类:1.一类为rom版本(系统)的性能测试2.一类为应用app的性能测试 Android ...
- Hybrid app本地开发如何调用JSBridge
前天同事问我公司内部的小程序怎么对接的,我回忆了一下,简单记录了一下前端同学需要注意的点. 背后还有小程序架构.网络策略等等.当时恰逢小程序架构调整,(老架构的时候我就发现了有一个问题点可以优化,但是 ...
- 支付宝支付-APP支付服务端详解
支付宝APP支付服务端详解 前面接了微信支付,相比微信支付,支付宝APP支付提供了支付分装类,下面将实现支付宝APP支付.订单查询.支付结果异步通知.APP支付申请参数说明,以及服务端返回APP端发起 ...
- Android Service学习之本地服务
Service是在一段不定的时间运行在后台,不和用户交互应用组件.每个Service必须在manifest中 通过来声明.可以通过contect.startservice和contect.bindse ...
- 网站的优化----首页优化---app调取服务端数据
高并发经常会发生在有大活跃用户量来访问网站的某个点,例如用户高聚集的业务场景中,如:抢购,促销等.为了让用户流畅的访问网站,来根据自己的业务设计适合系统的处理方案. //对于APP网站首页数据,通常是 ...
- 用户体验 | 寻找成套的 App SDK 服务
前言 对于开发者来说,三方 SDK 这个词已经是一个不需要任何解释的词语了,然而我想面对琳琅满目的 SDK 产品,大家都会纠结如何选择.那么选择一个 SDK 需要注意哪些问题呢? SDK 的 稳定易用 ...
随机推荐
- HDU1301 Jungle Roads(Kruskal)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- 什么是 Cookie
什么是 Cookie? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递.Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息. 例如,如果在用 ...
- Linux安装mysql以及安装时踩下的坑
安装: 检测是否已经安装了mysql rpm -qa | grep mysql 如果已经安装了,将其卸载,如: rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86 ...
- jmeter插件之VariablesFromCSV
项目需求: 由于该项目的特殊性,需要新建很多个jmx脚本,并且这些jmx的全局用户变量都一样,如果要修改的话,没法做到统一修改. 实现思路: 为了满足需求,在jemter官网找到该插件Variable ...
- 【个人训练】(UVa146)ID Codes
题意与解析 这题其实特别简单,求给定排列的后继.使用stl(next_permutation)可以方便地解决这个问题.但是,想要自己动手解就是另外一回事了.我的解法是从后往前找到第一个$a_i$比$a ...
- 基于Python的接口自动化-01
为什么要做接口测试 当前互联网产品迭代速度越来越快,由之前的2-3个月到个把月,再到班车制,甚至更短,每次发版之前都需要对所有功能进行回归测试,在人力资源有限的情况下,做自动化测试很有必要.由于UI更 ...
- Selenium 启动无头浏览器,只有chrome 和 firefox的,没有IE
使用无头浏览器,可以避免掉不确定的弹出框对脚本稳定性的影响,还能在脚本执行过程中省略掉了css 加载的时间. 以下是Selenium 启动无头浏览器的方法,只有chrome 和 firefox的. p ...
- 深挖 NGUI 基础 之UIRoot (一)
当你开始使用NGUI的时候,简单的从项目视图 中一个”Control”预设体 拖拽到场景视图中,你将会发现 Hierarchy层次面板中会出现以下层次结构: 其中 UI Root作为根节点,是每个NG ...
- (转)Unreal Networking Guide Created by Zach Metcalf
2. 3.
- [Linux] umount目录提示device is busy的解决方法
使用sshfs等方式挂载的目录出现问题时,使用umount卸载经常提示device is busy,如果仔细阅读错误提示就可以找到命令lsof和fuser命令. 其实原因就是有进程占用当前目录,导致不 ...