送给最好的TA--恶意Android样本分析和防御

by nemozqqz, 06 Jul 2022

Andorid APK脱壳不可避免使用真机,虚拟机总是存在壳兼容性/被检测的问题,然而真机有一个问题就是很难重置,恶意apk运行时会带来潜在的风险。这篇主要讲一个恶意APK 送给最好的TA社会性死亡分析过程。

Where there’s smoke, there’s fire

有一天同事注意到脱壳手机的桌面图片变了,就问我怎么回事,我当时感觉是有人传了个apk修改了桌面。根据wallpaper的修改时间找到了当时对应的apk。

/data/system/users/0/wallpaper
/data/system/users/0/wallpaper_orig

One-Click to Malicous APK

这个样本是360加固。 和之前流传的lua实现版本不同,使用了E4A(易安卓)框架,使得逆向工作在脱壳后非常简单。在应用启动后,立即开始恶意行为:

送给最好的TA

恶意的行为:

E4A框架的中文API对应的Android API和所需权限:

E4A Android API Permission
隐藏导航栏 WindowManager.LayoutParams.systemUiVisibility N/A
隐藏状态栏 Window.setFlags FLAG_FULLSCREEN N/A
置音量 AudioManager. setStreamVolume N/A
播放音乐 MediaPlayer.setDataSource WRITE_EXTERNAL_STORAGE
置屏幕亮度 WindowManager.LayoutParams screenBrightness N/A
保持屏幕常亮 PowerManager.newWakeLock ON_AFTER_RELEASE SCREEN_BRIGHT_WAKE_LOCK WAKE_LOCK
设置壁纸 Context.setWallpaper SET_WALLPAPER

样本申请的权限, 其中DISABLE_KEYGUARD,SYSTEM_ALERT_WINDOW, SYSTEM_OVERLAY_WINDOW (疑似typo,并没有该权限), FOREGROUND_SERVICE 也是很危险的权限,但是我没有分析出哪里使用了这些权限==。

  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  <uses-permission android:name="android.permission.SET_WALLPAPER"/>
  <uses-permission android:name="android.permission.GET_TASKS"/>
  <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
  <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
  <uses-permission android:name="android.permission.WAKE_LOCK"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>

Defensive Android Setup

如果实在没办法(例如脱壳),需要在真机运行不明来源的apk:

尽可能保证没有人和手机在样本分析过程中受到伤害, 真正实现

No Androids were harmed