针对超强手机木马DenDroid的分析与测试

赛门铁克的研究人员就在手机移动领域发现了一种新的名为Dendroid木马,可以轻松实现对手机远程恶意操控。而在此前赛门铁克发现了一个名为AndroidRAT的android远程管理软件被认为是第一个恶意绑定软件。然而这款最新发现的运行在http上的Dendroid具有更强功能。

Dendroid能够生成恶意apk,具有如下远程指令功能:

可以删除通话记录
可打开网页
拨打任意号码
通话记录、短信窃取
短信拦截
上传图片,视频
打开任意应用程序
做DDoS攻击的节点(会大量消耗上网流量或令手机卡机、死机)
可以改变命令和控制服务器

一、服务端web控制台安装

服务端为PHP+Mysql,服务器环境好办,phpnow、xampp等服务器套装可迅速搞定,服务端主要用来记录受控手机的相关信息,并对手机发送相关指令。服务端包解开如下:

搭建好服务器环境(这里省去步骤),记录下服务端的IP或域名,打开reg.php,修改如下地方:

改完后把以上服务端php代码放置到web根目录,然后直接访问http://服务器地址或域名/setup/,即可开始安装部署:

点击begin setup即可进入服务器配置环节,

可以看到,该页面需要设定数据库的相关信息,在操作之前我们先部署好数据库,这里我们使用phpMyAdmin创建数据库dendroid:

打开包里的SQL.sql,复制并导入到dendroid:

 即可看到表创建成功:

然后再回到服务器配置页面Step1,输入好相关信息后,即可完成相关部署:

点击Finish Setup,即可进入服务端管理台登录界面,输入配置好的用户名和密码即可登陆控制台:

注:dendroid调用的是google地图API,如要正常显示需使用代理。

二、客户端APK编译

下载Android SDK开发包,导入压缩包中DendroidApk:

导入之后如果提示缺少API包可点window->AndroidSDK Manager下载对应的包:

记得更新时同样要使用代理,在Tools选项里设置(谁让咱天朝把google墙了)。

导入完毕后展开src,可以看到服务端的主要功能模块:

从命名上看能知道各功能模块的大致作用,这里我们只修改下连接服务器的参数部分,确保编好后的APK能连上我们刚才的服务端,打开MyService.java,修改如下:

上面三处均为Base64编码,注意encodePassword部分默认为‘password’的base64编码,如果修改,则需要到服务端修改get.php、get-functions.php、new-upload.php、upload-pictures.php文件中的$_GET'Password']部分,如图:

修改好后再导出:

生成成功:

三、上传手机,安装执行

安装过程中需要给予该APK一些必要的权限,例如摄像头、定位功能开启权限,方便测试。程序名称和图标在编译前可自行修改。Android版本为4.4.2。

        

测试环境下控制台机器和手机在同一局域网内(移动数据下建议3G或4G环境)。执行安装好后的APP,会看到定位被调用:

 

这时,控制台里手机也上线了:

四、主要控制功能介绍

通过控制台我们可以实现控制手机是否静音、亮屏、拦截短信、自动开启后台录音、拍照、视频记录,获取手机短信内容、联系人信息,打开指定app等等功能。 

受控手机(安装了恶意APK的客户端)和服务端(WEB控制台)的执行示意图如下:

下面我们通过手机上线和短信截获功能(其它功能原理类似)来介绍上图的具体实现情况:

1.上线

1) 客户端中通过请求控制台的get.php 来实现受控主机的上线和状态刷新。

2) 获取物理标识码:

3)构造向服务端的请求URL

4)Get.php中处理GET方式发送过来的参数值,并通过updateSlave处理这些值(updateSlave在functions.php中定义):

5)functions.php中通过判断bot表中是否有记录过该手机来决定是更新还是插入手机属性信息:

6) 控制页显示结果:

2. 短信拦截

1) 点击如图按钮:

addCommand函数处理,第一个值为命令串’intercept’,第二个值为true:

请求addcommand.php:

2) 把请求命令插入commands表中:

3)客户端通过请求get-funtions.php来获取需要执行的命令:

4) 服务端在验证了Password之后通过UID(上面提到的Android手机物理标识码)查询之前控制台界面请求的动作(即插入到数据库中的’intercept’),最后以如下格式传递给客户端:

5) 判断返回的内容中是否含有“intercept(”,若有则把键‘intercept’的值设置为true:

6) 获取短信内容:

7) 向urlPost请求获取的数据:

urlPost即为message.php

8)message.php收到请求Data后调用addMessage,插入messages数据库,

9) 控制页刷新查询数据库即得到信息:

与手机端收到的信息一致:

3.拍照记录

同上面的执行流程一样,只不过没有自动上传服务端,而是通过手动上传,估计是考虑到该类文件传输占用带宽较多,未防止传输失败,可多次上传:

1) 选择前置或后置摄像头:

2) 拍摄完成

3) 上传类型里选图片:

同样处理函数也是addCommand

命令插入数据库后等待客户端获取命令类型来实施上传操作。

4) 上传命令执行显示:

5) 文件列表出现上传的照片:

6) 下载预览

若想修改图片尺寸可以修改CameraView.java中的如下部分(红框标记处):

五、附件

这里附上dendroid的源码,大家可以学习修改或优化功能。

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android开发中,APK工程和SDK是两个不同的概念。 APK工程(Android Package)是指将Android应用程序编译、打包成APK文件的工程。它包含了应用程序的所有资源文件(如布局文件、图像文件等)和代码文件(如Java源代码文件等),以及应用程序的清单文件(manifest)等。APK工程可以通过Android开发工具(如Android Studio)进行创建、编辑和编译,最终生成用于安装和运行的APK文件。 SDK(Software Development Kit)则是指软件开发工具包,它提供了开发Android应用程序所需的各种工具、库和文档。SDK包括了Android设备所需的API(Application Programming Interface)、编译器、调试器、模拟器等,开发者可以使用SDK来编写和测试Android应用程序。 将APK工程转变为SDK的过程,可以理解为将已经编写好的应用程序打包成一个可供其他开发者使用的工具包。这样其他开发者无需从头开始编写应用程序,而是可以直接在SDK的基础上进行开发。通常情况下,将APK工程变为SDK需要对工程进行一些改造和优化,以便其他开发者可以通过简单的调用来使用其中的功能和资源。 总而言之,APK工程是开发者编写和构建Android应用程序的工程,而SDK是为其他开发者提供开发Android应用程序所需的工具和资源的软件开发工具包。将APK工程变为SDK是为了方便其他开发者在其基础上进行二次开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值