您的位置:首页 > 其它

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

2016-01-30 17:21 369 查看
赛门铁克的研究人员就在手机移动领域发现了一种新的名为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的源码,大家可以学习修改或优化功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: