安全运维笔记


安卓测试整理版

<pre><code> #### 安卓测试</code></pre> <h5>1.反编译检测(中危)</h5> <p><strong>软件在安卓测试里面:</strong> 把apk当成zip并解压、得到classes.dex文件, cd +app解压路径 ,运行dex2jar.bat classes.dex得到classes.dex.jar 然后再用jd-gui打开 jar文件即可得到java代码则为源代码泄露。</p> <h4>2.安装包签名检测(低危)</h4> <p><strong>软件在安卓测试里面</strong> 这个要在java bin文件里面执行要不然会报错C:\Program Files\Java\jdk1.8.0_181\bin\jarsigner.exe -verify APK 文 件 路 径 -verbose –certs 说明:要说明的是,只有在使用直接客户的证书签名时,才认为安全。 Debug 证书、第三方(如开发方)证书等等均认为风险。 也可:keytool.exe -printcert -file C:\Users\Nxin\Desktop\ylzcf\META-INF\YLZCF.RSA keytool.exe文件在java bin文件中。</p> <h4>3.应用完整性校验(中危)</h4> <p>解包:<strong>java -jar apktool.jar d -f apk 文件路径 -o 解包目标文件夹</strong> 再次打包:<strong>java -jar apktool.jar b -f 待打包的文件夹 -o 输出 apk 路径</strong> apk签名::<strong>java -jar signapk.jar testkey.x509.pem testkey.pk8 待签名 apk 文件路径 签名后输出apk 路径</strong> 使用自定义调试签名进行签名,重新签名成功后的APK安装成功,如果能正常运行,则app本身没有进行安装包完整性校验的安全机制。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/2a49533ed65231de0fd97ddf3739e9eb?showdoc=.jpg" alt="" /></p> <h4>4.程序数据任意备份(中危)</h4> <p>在 AndroidManfest.xml 文件中设置android:allowBackup 属性值,android:allowBackup=”true”,即为allowBackup 开启 <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/88e5744e78b7ec4f578b4b1493374214?showdoc=.jpg" alt="" /></p> <h4>5.程序可被任意调试</h4> <p>AndroidManfest.xml 文件中设置android:debuggable=true时应用程序可以以调试模式启动,被任意调试器附加调试。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/e953ce51dd5c215360fba75a37269369?showdoc=.jpg" alt="" /></p> <h3>二、组件安全</h3> <h4>6.activity越权检测(中危)</h4> <p>开发者为了方便外部调用,会把Activity组件设置为导出状态,如果由于开发者的疏忽,把一些包含敏感信息或可进行敏感操作。 adb connect 127.0.0.1:21503 adb shell am start -S -n +activity主件名/apk包名 如果app直接打开跳转到对应的页面组件则存在漏洞。 另外也可:<strong>run app.activity.info -a packagename run app.activity.start --component +包名 +组件名:如果能未授权情况启动页面即可记下漏洞</strong></p> <h4>7.ACtivity劫持保护检测(中危)</h4> <p>检查是否存在 activity 劫持风险,确认客户端是否能够发现并提示用户存在劫持 安装 HijackActivity.apk,使用 activity 界面劫持工具,在工具中指定要劫持的应用进程 名称(进程查看和监视 ps/top)。如图所示,从列表中选择被测试的应用,点击 OK。打 开应用,测试工具会尝试用自己的窗口覆盖被测的应用。测试工具试图显示自己的窗口时, 安全的客户端应该弹出警告提示。如果劫持成功,会出现如下界面:</p> <h4>8.service 越权检测(中危)</h4> <p>检测有没有处理不当的方法检索所有类中 startService/bindService 方法及其传递的数据 -- 检测是否有数据泄露的可能 相关 drozer 命令:</p> <blockquote> <p>run app.service.info -a com.mwr.example.sieve run app.service.start --component 包名 组件名</p> </blockquote> <h4>9.service拒绝服务检测(中危)</h4> <blockquote> <p>run app.service.info -a com.mwr.example.sieve adb shell am start service +组件名/包名</p> </blockquote> <h4>10.Reciever拒绝服务(中危)</h4> <p>run app.broadcast.info -a com.package.name dz&gt; run app.broadcast.send --component com.package.name --action android.intent.action.XXX</p> <h4>11.Content Provider目录遍历 (高危)</h4> <p>列出uri:run scanner.provider.traversal -a APP 包名测试 列出url:run scanner.provider.traversal -a APP 包名测试 +uri名称 </p> <h4>12.Content Provider sql注入(高危)</h4> <p>run scanner.provider.injection -a APP 包名测试 使用 drozer 命令 run scanner.provider.injection -a APP 包名测试 Content Provider </p> <h4>13.组件通信分析(高危)</h4> <p>1.使用 mercury 查看那 APP 的组件信息 2.使用 mercury 查找 APP Content Provider 组件漏洞,包括组件暴露,SQL 注入,文件 目录遍历 命令方法 : 1.确定包名 run app.package.list 2.查看指定包的基本信息,例如数据存储路径 uid,gid,permissions run app.package.info -a com.android.browser 3.列出 APP 中的 activity 组件 run app.activity.info -a com.android.browser 4.列出 APP 中的 service 组件 run app.service.info -a com.android.browser 5.列出 APP 中的 Content Provider 组件 run app.provider.info -a com.android.browser 6.查找可以读取的 Content Provider 的 URI run scanner.provider.finduris -a com.sina.weibo 7.读取 Content Provider 指定 URI 中的内容 run app.provider.query content://settings/secure --selection name='adb_enabled' 8.扫描是否存在 content provider 目录遍历的漏洞 run scanner.provider.traversal -a com.android.browser 9.读取 content provider 指定的目录 run app.provider.read content://com.mwri.fileEncryptor.localfile/system/etc/hosts/ 10.扫描是否存在 SQL 注入 run scanner.provider.injection -a com.android.browser 11.利用 SQL 注入 run scanner.provider.query content://com.example.bsideschallenge.evilPlannerdb --projection * from cards -- 12.查看指定包的 AndroidManifest.xml 文件 run app.package.manifest com.example.bsidechallenge 13.查看指定包的 AndroidManifest.xml 文件 run app.package.manifest com.example.bsidechallenge</p> <h4>14.logcat日志(中危)</h4> <p>输出内存日志信息: adb shell logcat -d &gt; E:\1.txt 查看1.txt关键词是否发现有敏感信息</p> <h4>15.检查客户端程序存储在手机中的SQLite数据库文件(中危)</h4> <p>最后在检测 SQLite 数据库文件,在私有目录及其子目录下查找以.db 结尾的数据库文 件。对于使用了 webView 缓存的应用,会在 databases 子目录中保存 webview.db 和 webviewCache.db,如图所示。其中有可能会记录 cookies 和提交表单等信息 用数据库查看工具即可查看这些文件中是否有敏感信息。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/a472dbb9f9a749ef65e4f7f47a0a2a76?showdoc=.jpg" alt="" /></p> <h4>16.账号登录限制(低危)</h4> <p>测试一个帐号是否可以同时在多个设备上成功登录客户端,进行操作。 </p> <h4>17.账号锁定策略(低危)</h4> <p>测试客户端是否限制登录尝试次数。防止木马使用穷举法暴力破解用户密码。 </p> <h4>18.会话安全设置</h4> <p>测试客户端在超过 20 分钟无操作后,是否会使会话超时并要求重新登录。超时时间设 置是否合理。 一段时间无操作 -- 检测应用是否要求用户重新登陆退出应用再打开 -- 检测应用是 否要求用户登陆。</p> <h4>19.so 动态注入</h4> <p>进入so进程文件目录运行CMD命令 连接root过的Android设备或者打开模拟器。将inject和libhello.so拷入设备,设执行权限,执行: <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/0d79ee4dddb605c97bbc937d8b16ed60?showdoc=.jpg" alt="" /> 先看看被注入进程(surfaceflinger)的mmap,可以看到我们的so已经被加载了,紧接着的那一块就是我们mmap出来的: <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/89783a901158635dae09a02830ee554e?showdoc=.jpg" alt="" /></p> <h4>20.设备 root检测(模拟器检测)</h4> <p>app安装在root后手机上可正常运行 通常已经root的设备会提供给恶意应用查看或修改自身配置文件、缓存文件等的相关权限,已经对应用进行非法操作;而恶意攻击者也常使用已经root的设备对应用发起攻击。 在Native层增加root检测的相关功能。</p> <h4>21.通信数据风险</h4> <p>抓包数据未加密通信</p>

页面列表

ITEM_HTML