1、大纲
APP的键盘测试(可选)
抓包分析APP交互数据
业务功能测试(大体方向)
合规性测试(可变)
2、app的键盘测试( 可选)
其实这个很简单,可以做为可选项目,因为有些APP不重视这部分,或者不需要这部分。
但是涉及到支付交互的时候输入键盘部分应引起重视。
说了键盘记录不得不说input input会想系统写入你输入的东西具体实现代码。 对开发有兴趣可以了解一下。
方法A:
1 首先找到input 命令的位置:
system//bin/input
2 查看input的内容如下
cat .system//bin/input
# Script to start “input” on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/input.jar
exec app_process $base/bin com.Android.commands.input.Input $*
发现这句是重点: exec app_process $base/bin com.android.commands.input.Input
3 在framework 查找文件:
find ./ -iname input
4 最后发现下面文件是input命令的源码实现:
/frameworks/base/cmds/input/src/com/android/commands/input/Input.java
方法B:(引用https://blog.csdn.net/u010886975/article/details/54580605)
我们将监听输入字符。创建一个实例GetInputChar继承AccessibilityService,重写onAccessibilityEvent方法 @Override
public void onAccessibilityEvent(AccessibilityEvent event) { try { String inputChar= event.getText().get(0).toString(); Log.i(">>>>>>>", inputChar); AccessibilityNodeInfo rootNode = getRootInActiveWindow(); } catch (IndexOutOfBoundsException e) { e.printStackTrace(); } }
然后在Manifest中声明权限
<service android:name="com.example.testgettext.GetInputChar" android:enabled="true" android:exported="true" android:label="@string/app_name" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" > <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibility" /> </service>
在我们的res文件目录下建立一个xml文件夹,创建一个accessibility.xml文件,内容如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<accessibility-service xmlns:android=”http://schemas.android.com/apk/res/android”
android:accessibilityEventTypes=”typeViewFocused|typeViewTextChanged”
android:accessibilityFeedbackType=”feedbackVisual”
android:canRetrieveWindowContent=”true”
android:description=”@string/aaa”
android:packageNames=”xxx.xxx.xxx”
android:notificationTimeout=”100″ />
这里的packageNames上指定,你想要监控APP的包名。就OK了。
安装好app之后,到设置->辅助功能:刚刚安装的App打开即可。
这里说下一般APP的键盘情况分为以下几种
1:APP输入调用安卓系统键盘
一般认为高风险,可能被劫持利用。
2:APP调用应用中自带键盘输入
一般认为中风险,可能被其他APP以触摸点绝对定位方式劫持。
3:APP调用应用中自带键盘并随机打乱键盘顺序 (这种设置一般银行APP比较多 有打乱数字和键盘按键的 还有在这个界面下禁止截图的)
一般认为低风险,就算被劫持,利用可能性也很低。
图片不方便截如有工商银行APP自己看下密码输入弹出的APP自带键盘即可。
3、抓包分析APP交互数据
不过由于目前APP 没有什么像DVWA 测试APP平台 具体测试细节真不方便写。
抓包分析前提分析两种情况:
1:测试的APP是手机上的APP
2:测试的APP是电脑安卓模拟器上的APP
先说第一种 测试的APP是手机上的APP
可以使用BURP 直接以手机代理的形式,来获取APP相关的交互数据 (http和https 报文 https报文获取 需要导证书这里不赘述了)
前提:手机和电脑在同一个WIFI 或者同一网段可相互访问
本机防火墙也有可能拦截对应端口记得打开。
手机:设置WLAN—修改网络配置—高级—代理
代理地址设置 BURP 的IP 以及端口地址 当然BURP 也需要新增一行
注意:这个IP地址需要填写PC端地址就是打开BURP的主机
BURP上面增加一行配置
在使用手机APP访问网站就截获到了数据包
第二种情况模拟器上的安卓应用。
虽然也可以使用上面的方法,但是由于有些模拟器网络跟主机分段上的问题,以及一些APP不光采用HTTP、HTTPS协议的问题。
这里介绍另一种方法来抓包
软件:科来网络分析系统
这软件其实跟wireshark 是一类 只是有友好的中文 适合新手 能够单独分析某个进程的网络报文,不必在逐一筛选。技术交流版免费使用。
下载:
http://www.colasoft.com.cn/products/capsa.php
官网有时候很慢还是另外找下载吧。(安装简单不解释)
点击下面的本地进程分析-选择一个你在使用的网卡-然后点击开始
这时 用安卓模拟器上应用来做注册操作 或者你想得到的一些APP访问的网络的操作 然后停止截获,再分析数据包。
回放是用来分析数据包的。。也可以边分析边截获但是数据报文会变得很大
会抓取本地很多数据分了进程之后更容易识别 我的安卓模拟器进程是memuHeadless.exe
科来的好处就是不光分析HTTP包也分析其他报文 如 TCP UDP
HTTP报文部分就是一般burp看到的部分
域名和服务器地址有了你基本可以开始常规测试。如扫描,burp截包改包
不过与一般WEB 不同的是,有些页面可能传输变量值服务器才有回应。
常规渗透测试参考:
1、开源安全测试方法手册OSSTMM
2、NIST SP 800-42 网络安全测试指南
3、OWASP TOP10 漏洞 (这个应该知道的人最多)
4、PTES 渗透测试执行标准
如果你还不知道渗透测试的菜鸡还是看看这个吧
http://www.freebuf.com/column/194109.html
4、业务功能测试
一般说的逻辑漏洞测试,这边也是不好演示。
只能说下大概思路常见问题
1:从已知的用户ID 手机号 账号等 可以查询到其他用户相关的信息 (属于越权查询)
一般是采用BURP 或者其他抓包软件如 Fiddler 等 自行构造HTTP报文,截包抓包改包提交其他用户ID 或其他信息,服务器能返回其他用户关键信息说明越权存在。
2:枚举类逻辑漏洞 (存在暴力破解可能)
APP在输入验证码可能没有对输入的验证码错误次数进行限制,可以针对6位数字设置字典,暴力破解。也有如密码,用户ID等账号的枚举问题。
3:短信遍历发送 & 时间发送间隔可改
在提交短信发送请求时,可能发送针对多个手机号发送短信,或者按钮上有时间发送间隔,但是使用抓包软件改包提交发送请求不受时间间隔限制。
4:提现金额&购买数量问题
提现时可以开启两个进程进行提现测试,如果应用没有数据库锁定会取出两次金额,购买数量可以改包,增加数量,支付应用调取相关值可以回退。
5、合规性测试(可变)
这个针对大型集团公司(如运营商 金融行业),对自己APP有相关规定的,会有一些特殊的测试项目。应适当增加测试条目
规范案例:《网上银行系统信息安全通用规范》(2012)中关于客户端安全方面的要求。
要求类型 | 具体要求 | 备注 |
---|---|---|
客 户 端 基 础 要 求 |
a) 金融机构应采取有效技术措施保证客户端处理的敏感信息、客户端与服务器交互的重要信息的机密性和完整性;应保证所提供的客户端程序的真实性和完整性,以及敏感程序逻辑的机密 | APP测试流程第一部分包含 https://www.freebuf.com/column/196665.html |
b) 客户端程序上线前应进行严格的代码安全测试,如果客户端程序是外包给第三方机构开发的,金融机构应要求开发商进行代码安全测试。金融机构应建立定期对客户端程序进行安全检测的机制 | 第三服务代码审计要求 | |
c) 客户端程序应通过指定的第三方中立测试机构的安全检测,每年至少开展一次 | 第三服务渗透测试 风险评估要求 | |
d) 应对客户端程序进行签名,标识客户端程序的来源和发布者,保证客户所下载的客户端程序来源于所信任的机构。 | APP测试流程第一部分包含 | |
e) 客户端程序在启动和更新时应进行真实性和完整性校验,防范客户端程序被篡改或替换。 | 需要对程序内反编译后修改测试是否能安装 | |
f) 客户端程序的临时文件中不应出现敏感信息,临时文件包括但不限于 Cookies。客户端程序应禁止在身份认证结束后存储敏感信息,防止敏感信息的泄露。 | 客户端不留存cookies 和敏感信息 不应该在手机端搜索到 |
|
g) 客户端程序应提供客户输入敏感信息的即时加密功能,例如采用密码保护控件。 | 数据输入,传输,接受关键数据应强制加密 | |
h) 客户端程序应具有抗逆向分析、抗反汇编等安全性防护措施,防范攻击者对客户端程序的调试、分析和篡改。 | APP测试流程第一部分包含 | |
i) 客户端程序应防范恶意程序获取或篡改敏感信息,例如使用浏览器接口保护控件进行防范。 | 针对PC客户端 抓包分析 | |
j) 客户端程序应防范键盘窃听敏感信息,例如防范采用挂钩 Windows 键盘消息等方式进行键盘窃听,并应具有对通过挂钩窃听键盘信息进行预警的功能。 |
针对PC客户端 (现在APP也有防窃听要求) 本文章键盘测试包含 |
|
k) 客户端程序应提供敏感信息机密性、完整性保护功能,例如采取随机布放按键位置、防范键盘窃听技术、计算 MAC 校验码等措施。 | 本文章键盘测试包含 随机按键位置要求 | |
客 户 端 增 加 要 求 |
a)客户端程序应保护在客户端启动的用于访问网上银行的进程,防止非法程序获取该进程的访问权限。 | 进程注入测试 |
b) 客户端程序应采用反屏幕录像技术,防范非法程序获取敏感信息。 | 程序应有反录像反截图保护 | |
c) 客户端程序应采取代码混淆等技术手段,防范攻击者对客户端程序的调试、分析和篡改。 | 代码混淆要求 APP测试流程第一部分包含 | |
d) 客户端程序开发设计过程中应注意规避各终端平台存在的安全漏洞,例如,按键输入记录、自动拷屏机制、文档显示缓存等。 | 针对客户端本身系统漏洞或其他木马程序利用可能性 |
6、暂时就写到这吧 下次写基于开发平台的一些测试。
来源:freebuf.com 2019-03-28 10:59:18 by: redhatd
请登录后发表评论
注册