如何确定从其他 android 应用商店安装 apk 文件是否安全?

信息安全 安卓 安装
2021-08-18 20:29:44

几个站点提供APK下载1、2、3有没有办法确定给定的网站/apk 是否可以安全安装?

3个回答

初步分析


我认为测试 3rd 方应用程序的最彻底的方法是:

  1. 下载Android SDK/工具
  2. 使用您手机的Android 版本创建一个虚拟 Android 设备
  3. 在您的设备上通过 USB 启用 Android 调试(可以稍后关闭)
  4. 检查ADB是否检测到您的模拟器:adb devices
  5. 使用 ADB 安装 3rd 方应用程序:`adb install

您可以使用不断运行的不同日志来分析设备中发生的情况。这些可能很难捕捉,但您可以logcat使用adb logcat. 你可以学习如何像 Pro 一样使用Logcat

Android 虚拟设备 (AVD) 像 WiFi 连接一样使用您的互联网连接。此时您可以执行各种分析。我关于如何分析恶意软件的帖子可能会有所帮助(就使用的工具和技术而言)。 Wireshark将成为分析网络流量的有用工具。查看应用程序及其网络连接。

逆向工程


因此,现在您将开始深入了解 APK 到底在做什么。为此,您需要一些工具。这是一个声称可以将 Android APK 反编译回其 Java 代码的在线工具(我没有使用过)。如果您想了解这个过程并自己动手,我会看看这个 Stack Overflow 答案

APK 只是一个.zip文件。所以步骤(使用来自 Stack Overflow 答案的工具)

  1. unzip example.apk

现在我们有以下文件和目录:

-rw-rw-r--  1       3708 Oct 14  2013 AndroidManifest.xml
-rw-rw-r--  1    2751916 Oct 14  2013 classes.dex
drwxrwxr-x  2       4096 Aug  3 12:12 META-INF
drwxrwxr-x 23       4096 Aug  3 12:12 res
-rw-rw-r--  1     363640 Oct 14  2013 resources.arsc

classes.dex就是我们想要的。它包含用于应用程序的所有 Java 类。

  1. ./d2j-dex2jar.sh ../example.apk

现在我们有了一个./example-dex2jar.jar可以反编译成 Java 代码的 JAR 文件。这就是 JD-GUI 和 ApkTool 可以派上用场的地方。现在您可以查看 APK 执行的确切代码。

请记住,Java 代码的某些部分(如果不是大部分)将被混淆。这是常见的,你会经常看到函数符号撕掉了,取而代之的ab等,不仅功能,但包,方法,变量。看到混淆的 Javaz = (a) b.d()并不少见。但是您可以看到字符串、典型导入以及它们可能使用的任何 JNI 共享对象函数。


说了这么多。你想为你下载的每个应用程序都这样做吗?可能不是。这取决于您是否信任您正在使用的商店和/或推出该应用程序的软件公司。我个人不使用 Google Play 商店以外的任何应用程序。我下载的应用程序基于开发它们的公司、用户评论(这些可能是伪造的)、朋友/论坛推荐等。

您必须对正在下载的应用程序给予某种信任,或者分析您安装的每个应用程序。无论哪种方式,您都必须谨慎行事。

要验证 APK 是否安全,您可以将其上传到例如Virustotal它将使用一堆病毒扫描程序来检测 APK 是否有任何问题。

请注意,APK 是(在撰写本文时)被 Virustotal 扫描的 #1 文件类型。

您需要对其进行逆向工程,以确定它的作用以及它是否有任何恶意。

公平地说,即使是由 google play / app store 分发的应用程序也被发现带有恶意软件,因此即使恶意软件更有可能通过外部来源分发,但这并不直接意味着“外部来源 == 恶意软件”。