安卓静态代码分析器

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通过Spring依赖注入部署CXF服务端点   java字节或字节,请解释   java Swing组件命名约定?   java可以在JOptionPane中放置多个输入。显示输入对话框?   Dropwizard for Hibernate中的java SQLight方言   Windows8中的java CPU负载   将Java版本号映射到主要Java版本   使用数据库Java重新启动pi   java如何在RecyclerView中显示ArrayList?   使用枚举作为映射键的java会在数据库中生成RAW   java vscode不能用于本机模块?   分段函数的java导数   java为什么主体在spring安全性中作为类型对象返回?   java MySupportMapFragment未按照google地图Android显示位置名称   java Android OCR(光学字符识别)   java有什么理由我不应该使用文件阅读器吗?   java私有静态成员内存使用   java在将POJO转换为xml时去掉innerclass的类名   java我需要关闭音频剪辑吗?   java最新文件和文件的动态命名