版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
概 背景及研究意 国内外发展概 课题内 本论文的组织结 关键技术介 行为监 Android系统架 Android进程注入、 Binder通 System_Server进 文件加 对称加密算 非对称加密算 DES算 SM2算 对称加密与非对称加密的结 秘钥管 海泰 SDKey密钥的管 系统的设计与实 系统的功能需 系统概要设 系统技术架 系统流程 行为监 文件加 秘钥管 系统详细设 初始化流程 3.3.2 3.3.2 本课题基于人们最常用的开源移动智能终端——Android操作系统,通关键词:Web浏览、网上支付、网上银行、电子机票、GPS导航等,也存储了越来越多的与个人隐私相关的敏感信息,如通信录、银行账号、GPS位置等。与其他手机操作系统相比,Android系统最大的优势在于其开放性。AndroidAndroidAndroidAndroidMarketMarket大的安全漏洞,该漏洞能够导致用户的电话号码、电子邮件、GPSiCloudiCloudAndroid平台作为近几年来新兴的手机操作系统,升。IDC数据显示,Android智能手机出货量份额占到了智能81%,iPhone12.9%Android系统2012年第三季度全球手机安全报告指出94%Android平台。Android平台的手机隐私保护系统非常必要。而手机的隐私保护,主要分两Intel实验室、宾夕法尼亚州立大学和杜克大学的研究人员提出了一种TaintDroid。TaintDroid对系统框架进行了大量的修改,在多个层次TaintDroid14%的性能损耗,存在误报和漏报的问TaintDroid上运行。NSAAndroidSEAndroid,其设计思LinuxMACSELinuxAndroidSEAndroid的安全策略,可以阻止目前Android系统上发现的大部分漏洞,包括系统存在的提权漏洞和应用程序存在的信息泄露漏洞。SEAndroid的安做得比较理想,对权限的管理已经到了及其严格的地步,利用代码几乎寸步难行。SEAndroid对系统性能的损耗很大,由于移动设备硬件及电池等资源的限制,SEAndroid还需要进TISSAAndroid用户的隐私数据。TISSA提出了一种细粒度的设置它们访问的等级。TISSA的监控范围较小,所以对系统性能的影响不Android框架强制执行基于权限的安全策略,应用只有在获得了明确的WookShin等人发现,这种权限机制加重了用户的选择负担。此外,这一机制在动态些问题都导致了系统的安全漏洞。此外,JiaguiZhong等人指出,Android平台上的一些应用可能会在不具备相应权限的情况下访问其它应用,Android上基于意图的进程间通信(interprocesscommunication,IPC),Zhong等人提出了一个静态Diordna,接入点的检查,Diordna分辨出可能的权限重新授权攻击,并利用对数据流的最后,ZhanLiu等人认IOS系统,各个应用程序之间不能互相访问,sandbox技术进行隔离,不能访问API接口。这样完全封闭的环境在一定程度上加强了安全性但也降Android系统的安全措施主要是软件开发和通过阅读大量文献资料,我们确定了我们的技术路线AndroidrootrootnativeCHOOKsystem_serverSDKeySDKey介绍了本论文所研究的背景,该领域的国内外概况和发展趋势,课题为该论文理论方法的应用章节,介绍了基于本文所采用的理论方法而AndroidlinuxJava层、NativeC层、LinuxKernel层。JavaJava语言开发,基SDK,能实现的功能相对简单。LinuxKernel层安全,需要从源码做起,NativeCJNI开发,可以使linux提供的函数实现更多的功能。Linux用户态,每个进程都有自己独立的进程空间,所以必须hook的进程空间,修改其内存中的进程代码,替换其中过程表ioctlService2-2-1AndroidAndroid系统架构为四层结构,从上层到下层分别是应用程序层、应用Linux内核层,分别介绍如下:AndroidSMS短信客户端程序、电话拨号程序、图片浏览器、WebAndroiAndroidDalvik由于.so.so即.so.so,①PTRACE_ATTACH,②PTRACE_GETREGS,PTRACE_PEEKDATAPTRACE_POKEDATA④PTRACE_SETREGS,HOOK,WindowsHOOKint3ptracePTRACE_GETREGSPTRACE_SETREGS⑨libhook.sohook_entry()函数,该函数实现加载hooklibnativehelper.sogotplt表的遍历和libhook.sodetach目标进程,从而释放,BinderserviceAndroid系统。如果某个程序希望享的请求。因此,Androidservice对应的代AndroidActivityService组成ActivityService有可能运行在同一个进程中,也有可能运行在ActivityService就是通过Binder机制进行通信的。Binder进程通信机制由一系列组件组成:Client、Server、ServiceManager,BinderDriver。其中,Client、ServerServiceManager是用户控件组BinderDriverClientServer基于BinderDriverServiceManager进行通信。Binder就是一种把这四个组件Binder驱动程序了,ServiceManager提供了辅助管理的功能,ClientServeBinder驱动和ServiceManagerClient-Server之间的通信。System_Server
AndroidLinux内init进程,initlinuxID为1,initAndroid应用系统。Init进程创建AndroidAndroid系统本地服务、ZygoteZygoteAndroid系统服务(System_Server)Android系统的基础。SystemServerAndroid的运行环境中扮演了"神经中枢"的作用,APK(AmSSystemServer进程中。图3密钥(publickey,简称公钥)和私有密钥(privatekey,简称私钥。DESDES是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是DEA是嵌入硬件中的。通常,自动究工作,IBM1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用费而使用。1997年被DES使用一个56位的密钥以及附加的8位奇偶校验位(位作为奇偶校验位64Feistel着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES使用16DES64M,MIPm0=(L0,R016f,在运算过程中,数据与密匙(L164SM2SM220101217日发布的椭圆曲线公钥密码算法。SM2RSASM2算法是一种更先进安全RSA算法。IV达成协议,并SDKey。2-3-1SDKey是一种将智能密码钥匙的网络身份认证功能应用于移动终端上的、MicroSD卡(TF卡)形式的智能密码钥匙,专门用于手机、掌上电TFPC机连SDSDKey拥有自主知识产权的芯片操作系统——TaiCOS,对称算DES/3DESSSF33、SM1/SM2/SM3/SM4国产分组算法,非对SDKeySDKey中产生。因此,使SDKey中。这SDKey,就可以保证数据的安全SDKey中获取密钥依次对密文进行解密。SDKeySDKey中生成,使得密钥在生成过程中更加难以被第三SDKey中,很容易实现密钥与密文的分离。从而提高数3-2-1AndroidSDKey的使NativeC层。而加解JavaDESHaiTaiSDKeySM2非对称DES密钥进行加密。3-2-13-2-2较大的文件,现有软件自身先生成对称加密密钥对明文进行加密,之后SDKeySDKey之中。3-2-3当需要调用密钥加密时,DES密钥软件自身生成随机密钥,而由SDKeySM2密钥对,DESSM2公钥加密之后随密文一起被存SM2SDKey中。SDKey中的SM2DESDES密钥将密文USBKey,.23-3-2①②PTRACE_PEEKDATAPTRACE_POKEDATAPTRACE_SETREGS,恢复寄存器状态,并继续执行,这是注入的代码开始HOOK,WindowsHOOKint3ptrace捕获,目标进程再次⑥libhook.sohook_entry()函数,该函数实现加载hooklibnativehelper.sogotplt表的遍历和libhook.sodetach目标进程,从而释放,hook_entry()函数3-4-1-1splashsplash界面,如果在个人设置中开启自动更新,则会3-4-1-23-4-1-33-4-1-43-4-2-1HOOKEclipseLogcatdebugHOOKGOT表中的地址。inject.cintmain(intargc,char**argv){pid_ttarget_pid;//target_pid=find_pid_of("system_server");target_pid=find_pid_of("system_server");if(-1==target_pid){printf("Can'tfindthereturn-}//target_pid=find_pid_of("/data/test");inject_remote_process(target_pid,"/data/libsys.so","hook_entry","I'mparameter!",strlen("I'mreturn}find_pid_of("system_server");system_server进程的进inject_remote_process()3-4-2-2ADBHOOK成功以后,我们打开手中的百度ADBlog信息:sys.sohook_entry()函数,此即hook步骤的入口函数。inthook_entry(char*a){LOGD("Hooksuccess\n");LOGD("Starthooking\n");hook_iotcl();return0;hook_entryhookhook#defineLIBSF_PATHint{//old_eglSwapBuffers=//LOGD("OrigeglSwapBuffers=%p\n",old_eglSwapBuffers);old_ioctl=ioctl;void*base_addr=get_module_base(getpid(),LIBSF_PATH);LOGD("libbinder.soaddress=%p\n",base_addr);intfd=open(LIBSF_PATH,if(-1==fd)return-}Elf32_Ehdrread(fd,&ehdr,unsignedlongshdr_addr=intshnum=intshent_size=unsignedlongstridx=Elf32_Shdrlseek(fd,shdr_addr+stridx*shent_size,SEEK_SET);read(fd,&shdr,shent_size);char*string_table=(char*)malloc(shdr.sh_size);lseek(fd,shdr.sh_offset,SEEK_SET);read(fd,string_table,shdr.sh_size);lseek(fd,shdr_addr,SEEK_SET);intuint32_tout_addr=0;uint32_tout_size=0;uint32_tgot_item=0;int32_tgot_found=for(i=0;i<shnum;i++){read(fd,&shdr,shent_size);if(shdr.sh_type==SHT_PROGBITS)intname_idx=if(strcmp(&(string_table[name_idx]),".got.plt")==0||strcmp(&(string_table[name_idx]),".got")==0){out_addr=base_addr+shdr.sh_addr;out_size=shdr.sh_size;LOGD("out_addr=%lx,out_size=%lx\n",out_addr,-
for(i=0;i<out_size;i+=4)got_item=*(uint32_t*)(out_addr+if(got_item==old_ioctl){LOGD("Foundiotclingot\n");got_found=1;uint32_tpage_size=uint32_tentry_page_start=(out_addr+i)&mprotect((uint32_t*)entry_page_start,PROT_READ|*(uint32_t*)(out_addr+i)=}elseif(got_item==new_ioctl){LOGD("Alreadyhooked\n");}}if}}}}代码执行至此,HOOKiotclioctl的新函数地new_iotcl(),iotcl()。//欲接替ioctl的新函数地址,其中内部调用了老的 (int fd,unsignedlongint request,void*Binder数据结构进行解析。其中最关键的数据结binder_transaction_data,通过它我们可以提取服务名称。3-4-2- binder_transaction_datahexdumpchar*hexdump(void*_data,unsigned{unsignedchar*data=char*dataAry=char*dataTmp=unsignedfor(count=0;count<len;{
if((count&15)==0)LOGD(stderr,"%04x:",count);//onlyshowcharsetandif(((*data>=65)&&(*data<=90))||((*data>=97)&&(*data<=122))||(*data{*dataAry=*data;}if((count&15)==15)}*dataAry=returnif((count&15)!=0)}encryptPhotoAndVideo()。publicvoidencryptPhotoAndVideo(StringfileName,AndroidPkcs11p11)Filefile=newlonghPriv=longhPub=InputStreamin=newFileInputStream(fileName);Stringpath=file.getPath();intindex=StringtempName=path.substring(0,index)+"/"+"abc";FiletempFile=newFile(tempName);OutputStreamout=newbyte[]buffer=newbyte[4096];byte[]buffer2=newbyte[4104];intr;while((r=in.read(buffer))>0)buffer2=encrypt(buffer,PASSWORD_CRYPT_KEY.getBytes());out.write(buffer2,0,buffer2.length);}hPub=p11.CreateObject(newCKA(CKA.CLASS,newCKA(CKA.KEY_TYPE,newnewbyte[]47,118,69,-37,-90,-19,-14,-33,-22,124,-54,-100,30,117,-111,5,14,33,-63,37,-110,-13,-38,-41,-5,25,-6,-102,-70,-54,-71,91,-61,-72,-102,83,-32,89,-60,97,-99,92,65,32,29,-66,117,56,46,-34,-102,125,-128}if{hPriv=p11.CreateObject(newCKA(CKA.CLASS,newCKA(CKA.KEY_TYPE,newCKA(CKA.VALUE,newbyte[]16,-120,-42,83, 6,108,126,76,-98,60,-67,-128,-23,-15,67,79,96,90,76,-44,-25,38}}byte[]by=p11.Encrypt(hPub,hPriv,PASSWORD_CRYPT_KEY);}Filename:为所要加密的文件的文件名第二个参数p11:非对称加密的句柄3-4-3-1加密选择privateStringgetRandomString(){Stringbase=Randomrandom=newRandom();StringBuffersb=newStringBuffer();for(inti=0;i<24;i++){intnumber=random.nextInt(base.length());}return}24p11.Encrypt(longhPub,longhPriv,StringPASSWORD_CRYPT_KEY)。第一个参数hPub:公钥第二个参数hPriv:第三个参数PASSWORD_CRYPT_KEY:publicbyte[]getMethodA(StringfileName)。publicbyte[]getMethodA(String byte[]by=newbyte[121];//RandomAccessFilerandomFile=RandomAccessFile(fileName,//longfileLength=//将写文件指针移到文件尾。for(inti=0;i<121;i++){by[i]=}}catch(Exceptionreturn}参数filename:3-4-3-1解密选择hPub,longhPriv,byte[]en)。第一个参数hPub:公钥Hpriv:私钥第三个参数en:publicStringdecryptPhotoAndVideo(StringfileName,Strings)。publicStringdecryptPhotoAndVideo(StringfileName,Strings)Filefile=newInputStreamin=newFileInputStream(fileName);Stringpath=file.getPath();intindex=StringtempName=path.substring(0,index)+"/"+"abc";Filetemp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年土地整治项目土地抵押合同范例3篇
- 2024年某物业管理公司与某小区关于物业服务合同
- 房屋租赁合同模板合集五篇
- 七年级第一学期生物教案模板
- 跟岗实习工作总结范文
- 举行春游活动方案
- 配音比赛策划书
- 店长述职报告15篇
- 学生竞选演讲稿怎么写才能吸引人?【5篇】
- 投标承诺书集锦15篇
- 社区居家养老方案
- 2024年英语专业四级考试真题及详细答案
- 输液巡视不及时品管圈课件
- 中班自主游戏总结汇报
- 加油站防偷盗与防灾安全培训
- 玻璃制造企业的管理与技术创新
- 《护理病人隐私保护措施》
- MHT:中小学生心理健康检测(含量表与评分说明)
- 企业战略管理顾问聘用合同
- 贵州壮丽山水文化之旅
- 辽宁省朝阳市朝阳县2023-2024学年九年级上学期期末数学试题
评论
0/150
提交评论