安卓静态代码分析器

qark的Python项目详细描述


Android快速评测套件

此工具旨在查找源代码或打包的apk中的几个与安全相关的android应用程序漏洞。该工具还能够创建“概念证明”可部署的apk和/或adb命令,能够利用它发现的许多漏洞。不需要根目录测试设备,因为该工具关注的是在其他安全条件下可以利用的漏洞。

要求

在Python2.7.13和3.6上测试 在OSX、Linux和Windows上测试

用法

有关更多选项,请参见--help命令。

APK:

~ qark --apk path/to/my.apk

Java源代码文件:

~ qark --java path/to/parent/java/folder
~ qark --java path/to/specific/java/file.java

结果

报表是用json生成的,可以构建成其他格式类型,要更改报表类型,请使用--report-type标志。

安装

带PIP(无安全检查要求):

~ pip install --user qark  # --user is only needed if not using a virtualenv
~ qark --help

使用requirements.txt(对需求进行安全检查):

~ git clone https://github.com/linkedin/qark
~ cd qark
~ pip install -r requirements.txt
~ pip install . --user  # --user is only needed if not using a virtualenv
~ qark --help

利用apk

qark可以为已经发现的几个漏洞生成一个基本的利用apk的漏洞。

要生成攻击apk,有几个步骤要遵循。您需要有android sdk v21和构建工具v21.1.2

  1. 安装android sdk,您可以在“命令行工具”下获得它:https://developer.android.com/studio/#downloads
  2. 解压缩android sdk
  3. 进入新目录,使用bin/sdkmanager–licenses生成许可证
  4. 确保生成的许可证位于android sdk目录中。
  5. 安装sdk和正确的构建工具版本:bin/sdkmanager–install“platforms;android-21”“sources;android-21”“构建工具;21.1.2”

检查

qark是一个易于使用的工具,能够在android应用程序中发现常见的安全漏洞。与商业产品不同,它是100%免费使用的。qark提供教育信息,使安全审查人员能够准确、深入地定位漏洞的解释。qark自动使用多个反编译器,利用它们的组合输出,在反编译apk时产生更好的结果。最后,与传统工具相比,qark的主要优势在于,它可以生成adb命令,甚至可以生成全功能apk,从而将假设的漏洞转化为有效的“poc”攻击。

此工具试图查找的安全漏洞类型包括:

  • 无意中导出的组件
  • 不正确保护的导出组件
  • 易被拦截或窃听的意图
  • 不正确的X.509证书验证
  • 创建世界可读或世界可写文件
  • 可能泄露数据的活动
  • 粘性意图的使用
  • 不安全地创建挂起的意图
  • 发送不安全的广播意图
  • 源中嵌入的私钥
  • 弱或不正确的加密使用
  • 可能被利用的WebView配置
  • 导出的首选项活动
  • 窃听
  • 启用备份的应用程序
  • 可调试的应用程序
  • 应用程序支持过时的API版本,存在已知漏洞

注意

注意:qark将android应用程序反编译回原始源代码。请不要使用这个工具,如果这可能被认为是非法的在您的法律用语。如果您不确定,请咨询法律顾问。

如果您在osx上遇到问题,特别是与到play store的出站呼叫或sdk的下载有关的问题,那么 可能是因为您的python/openssl配置以及osx最近的更改影响了通过brew安装的python。核武你的 python安装和从源代码重新安装可能会解决您的问题。

许可证

版权所有2015 LinkedIn Corp.保留所有权利。

版权所有2015 LinkedIn Corp.根据Apache许可证2.0版(以下简称“许可证”)获得许可;除非符合许可证,否则您不得使用此文件。

您可以获得许可证的副本here。 除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发,无任何明示或默示的保证或条件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ApachePOI将excel文件导入postgreSQL表   java多线程从iText pdf提取文本   winapi Java和SetWindowDisplayAffinity   eclipse juno的java Websphere 6.1插件   java MPAndroidChart:为Y轴提供一些偏移   java中作为参数传递枚举类型的继承   java Gui jframe的工作原理与netbeans不同   使用Bouncy Castle和PDFBox在Java中验证PDF签名   优化缩小Java代码   java无法在安卓中从Firebase取回子数据   返回的java方法?我应该什么时候用?   java错误处理已完成,退出代码为1。与穿过阵列的for循环有关   多线程Java volatile是否阻止缓存或强制执行写缓存?   java Multi-collectItems如何提前终止并返回已收集的项目   java为什么不在服务(请求,响应)中直接调用processRequest(请求,响应)?   java如何从字符串生成int数组?   打印获取用户输入的值并在其他预选文本中显示。JAVA   未显示java DynamicAsper UTF8字符   java Eclipse RCP:不启动应用程序的命令行参数