![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
移动安全基础篇
文章平均质量分 56
移动安全基础篇
FLy_鹏程万里
国内网络安全研究员,专注于Web渗透、移动安全、代码审计、应急响应、内网渗透、区块链安全、云安全等研究方向,擅长渗透测试、红蓝对抗、内网渗透、云安全、区块链安全。
展开
-
【移动安全基础篇】——33、Android加壳原理
1. 加密目标隐藏原始 dex 数据,保护程序。2. 实现步骤1) 反编译原始 apk 文件(不反编译 dex 文件) ShakaApktool d –s xx.apk –o xx2) 加密原始 dex 文件 提取反编译后的原始 dex 文件,进行加密,保存到 assests 目录中。3) 添加 ProxyApplication ...转载 2019-01-19 20:28:11 · 355 阅读 · 0 评论 -
【移动安全基础篇】——21、Android脱壳思路
1. Apk dex 加固目前存在对 apk 中的 class.dex 进行加密的技术,即加壳。通过对 dex 文件的加壳,可以达到减小文件大小,隐藏真实代码的效果。2. 运行时解密与 windows 上的 shell 一样,Android 加壳程序在程序运行时,先到达壳的入口点,运行解壳代码,然后再到达程序入口点,运行代码。而要脱壳则要在程序解码完毕后,到达程序真实入口点中间某个位置,把...转载 2019-01-14 17:04:52 · 2415 阅读 · 0 评论 -
【移动安全基础篇】——20、elf文件修复分析
1. Section Header And Program Header链接视图中用到 Section Header,执行视图中用到 Program Header。两者理论上都能指出so 文件的所有信息,那么它们之间是否存在关联性如上图,Segment 和 Section 的映射关系是一对一或者一对多。Dynamic Section(重要)2. Section 修复 修复...转载 2019-01-14 17:04:46 · 1541 阅读 · 1 评论 -
【移动安全基础篇】——19、elf文件变形与保护
1. Section 段处理鉴于 shdr 没有被 linker 用于加载,故可以对 Section 段写入无用数据,可以阻碍静态分析软件的分析。2. Program 段处理Program 段中可以对 dynamic 区段进行混淆,添加重复和无效的数据。3. Demo 演示混淆方法一:将 elf header 中的 section 相关参数置 0修改后 ida 的...转载 2019-01-14 17:04:41 · 629 阅读 · 0 评论 -
【移动安全基础篇】——18、elf结构详解
1. 来自于 Linux 的 的 elfAndroid 上的 so(elf)与 Linux 上的有 99%的相似,其中的知识点和结构是可以互通的。2. Elf 的链接视图Elf 在加载前和加载后的结构是不一样的,这就给加密提供了方便。链接执行的时候,shdr 中的表将会被映射到 phdr 中,里面有 3 个头非常重要elf_header,program header,secti...转载 2019-01-12 23:14:49 · 560 阅读 · 0 评论 -
【移动安全基础篇】——17、ARM汇编代码
1. so 动态库在 apk 的 lib 目录下,存放的是 so 文件,一般有以下几个目录Armeabi:arm 编码的文件Armeabi:arm 新版编码文件x86:Intel x86 汇编文件…其他的文件:对应其他版本的汇编文件这些都是 Android 的 Elf 格式文件2. IDA 动态调试启动式调试:1) push IDA 目录下的 android_server...转载 2019-01-12 23:14:43 · 568 阅读 · 0 评论 -
【移动安全基础篇】——16、静态分析的概念与定位关键代码
静态分析:不运行代码的情况下,阅读反汇编代码掌握程序功能两种方法:1. 阅读 Dalvik 字节码(通过 baksmali 反编译 dex 文件生成 samli 文件)2. 阅读 java 代码(通过 dex2jar 生成 jar 文件,在 jd-gui 阅读 jar 文件)常用步骤:1. 反编译 apk2. 通过 AndroidManifest.xml 查找主 Activity...转载 2019-01-12 23:14:38 · 333 阅读 · 0 评论 -
【移动安全基础篇】——15、Dalvik dex处理分析
1. Dex 加载流程Vm->native->dalvik_system_DexFile->openDexFile openDexFile,读取内存中的 Dex 文件数据并加载Dalvik_dalvik_system_DexFile_openDexFile_bytearray1) 转换存储的 dex 格式为执行的 dex 格式d...转载 2019-01-12 23:14:31 · 514 阅读 · 0 评论 -
【移动安全基础篇】——14、创建破解代码库
1. smali 代码插入用 smali 代码编写程序与用 java 代码编写程序一样,在原理上是可行的,不过前提是对smali 语法足够熟悉。以插入打印 log 代码为例,原理就是通过直接插入有效的 smali 代码,从而输出程序的数据内容。更为复杂一点的则可以直接修改整个程序的执行流程。2. smali 代码编写一个静态返回 HelloWorld 的方法:1) .class ...转载 2019-01-12 23:14:25 · 996 阅读 · 0 评论 -
【移动安全基础篇】——13、Android关键代码快速定位
1. 字符串,特征字根据程序运行中出现的特征字词进行搜索,从而获取定位到程序的相关位置之中。此前该方法使用较多,当前一般很难找到需要的关键词,有时需要对特征字段进行拆分搜索,才能获得一些进展。2. 关键 api 的监控通过挂钩关键的系统 api,获取程序运行时的数据,进而分析程序行为,从程序行为入手逼近关键点。该方法比较难,需要对 Android 函数和编程相当熟悉才能使用。3....转载 2019-01-12 23:14:11 · 433 阅读 · 0 评论 -
【移动安全基础篇】——22、Android dvm 脱壳
1. 查壳查入口:AndroidManifest -> application 标签2. Assests 分析Assests 中一般储存着加密过的 dex 以及解密用的 so 等信息,因此先分析 Assests 可以有效获取程序解壳思路3. ProxyApplication 分析1) 查找 so 文件并修复分析2) native 函数记录3) 解码函数定...转载 2019-01-14 17:04:59 · 568 阅读 · 0 评论 -
【移动安全基础篇】——28、Apk加固
1. java 混淆1) 名称替换proguard: -printmapping map.txt -applymapping map.txtdex2jar: d2j-init-deobf –f –o map.txt x.jar d2j-jar-remap ...转载 2019-01-19 20:27:28 · 719 阅读 · 0 评论 -
【移动安全基础篇】——32、Android动态代码自修改实现
一、 法 方法 11. Jni BridgeJni 提供了让我们在 C++代码层中直接操作 Dalvik(java)数据的接口。我们可以在 jni 中直接操作相关的数据,修改 Android 中的代码。Android 源码中的实现:dalvik/vm/jni.cpp2. Object 结构体Android 源码位置:dalvik/vm/oo/ObjectAndroid 运行时,解析...转载 2019-01-19 20:28:04 · 944 阅读 · 0 评论 -
【移动安全基础篇】——31、Android动态代码自修改原理
1. classes.dexDexClassDef -> DexClassData -> DexMethod -> DexCode里面的 u2 insns 的值便是用于存放程序实现代码的地方。程序执行时候会把整个 dex 文件加载到内存中,然后动态地解析执行 insns 中的内容。只要修改了里面的数据,就相当于修改了程序执行流程和方法。2. 内存中修改 insns...转载 2019-01-19 20:27:50 · 324 阅读 · 0 评论 -
【移动安全基础篇】——27、常用调试检测方法与过检测方法
1. 调试检测在调试加壳软件的时候,总是会突然出现调试中断,或者是程序的异常退出,但是一旦不处于调试的时候又能够正常启动,这些都是因为调试被 app 检测到的原因。2. 基本的调试监控常用的监控手段:1) 检测用户组 cmdline 中是否存在调试进程(gdb、gdbserver、android_server、xposed 等)修改调试器的名称2) 检测线程状态,查看是否存在被调试...转载 2019-01-19 20:27:09 · 585 阅读 · 0 评论 -
【移动安全基础篇】——26、两个简单app破解
1. 试用版软件破解使用 ApkIde 打开要破解的 app 进行反编译分别显示各个按钮的相关 smali 代码将 v0 置为专业版的密钥保存后重新编译,破解成功2. 网络验证使用 apkIde 对目标 app 进行反编译操作定位到点击函数中,分析其中的操作找到网络连接成功后进行的操作定位到 getData()函数找到...转载 2019-01-19 20:27:02 · 5810 阅读 · 2 评论 -
【移动安全基础篇】——25、IDAOdex修复脚本编写
1. Odex 转 转 dex参考 Android 源代码,完成逆转换2. Demo 演示(阿里壳)安装、开启调试端口、端口转发、反编译、挂接运行脚本,识别出了 4 个 dex 数据,前两个为自行输入的,第三个是壳的入口点,最后一个是内存中解码获取的数据将最后的一组数据 dump 出来,然后将 dump 出来的数据进行反编译反编译因为阿里壳生成的一个类而出现异...转载 2019-01-19 20:26:55 · 503 阅读 · 0 评论 -
【移动安全基础篇】——24、Odex修复方法
1. Dex 转 转 Odex优化:vm/analysis/Optimize.cpp --> dvmOptimizeClass2. Dex 校验vm/analysis/DexVerify.cpp --> dvmVerifyClass3. 取消非必要优化与校验/system/build.propDalvik.vm.dexopt-flag=v=n, o=n4. ...转载 2019-01-14 17:05:13 · 904 阅读 · 0 评论 -
【移动安全基础篇】——23、IDA脱壳脚本编写
1. 强制挂接ps | grep “xxx” 查找进程 id 值kill -19 pid 暂停进程ida 挂接,dump 出需要的数据ida 脱离挂接kill -18 pid 继续进程2. 内存 dex 定位gDvm.userDexFiles 是存放 dex cookie(DexOrJar 结构)的地方,因此可以通过遍历该结构获取每个 dex 文件的起始地址。3. De...转载 2019-01-14 17:05:07 · 1293 阅读 · 2 评论 -
【移动安全基础篇】——30、class.dex文件格式讲解
1. classes.dex Android 程序编译以后生成一个 apk 文件,里面的 classes.dex 便存放着程序的运行字节码。2. backsmaliShakaApktool 使用 bs 命令即可对 classes.dex 实现反编译回 smali,而使用 s 命令可以把smali 字节码编译为 classes.dex 文件java –jar ShakaApktool b...转载 2019-01-19 20:27:41 · 4366 阅读 · 0 评论 -
【移动安全基础篇】——29、Android源码定制添加反反调试机制
1. Kernel proc内核修改检测都是通过 proc 进行的,因此我们需要从 proc 入手要修改的数据:/fs/proc/base.c、/fs/proc/array.c要修改对以下文件的写入:status, stat修改点:base line:285else{ if(strstr(svmname, “trace”)){ return sprin...转载 2019-01-19 20:27:35 · 804 阅读 · 0 评论 -
【移动安全基础篇】——12、Dalvik虚拟机
1. Dalvik VM(DVM)和 和 Java VM(JVM) 的区别:1) JVM 是运行 Java 字节码,DVM 是运行 Dalvik 字节码2) Dalvik 可执行文件(.dex)的体积更小3) 虚拟机架构不同:JVM 是基于栈,DVM 是基于寄存器Java 代码:反编译 int foo(int a, int b)函数的 Java 字节码:反编译 in...转载 2019-01-12 23:14:06 · 313 阅读 · 0 评论 -
【移动安全基础篇】——11、Android_jni
1. Android_jni 与 so and javaAndroid 程序分为 java 和 native 两层,java 层是 java 代码编译成的 dex 文件,native 层是 c++代码编译成的 so(动态链接库)文件。两者通过 jni(java native interface)进行链接。相比于 java 层,native 层的安全性更高,隐蔽性更好,在一些情况下效率也更高,当前...转载 2019-01-12 23:14:00 · 318 阅读 · 0 评论 -
【应用安全】安全相关的HTTP HEADERS
X-XSS-ProtectionX-XSS-Protection为浏览器针对XSS攻击的防御机制。配置如下:0 禁用过滤器。1 启用过滤器。 如果检测到跨站点脚本攻击,为了停止攻击,浏览器将清理页面。1; mode = block启用过滤器。 当检测到XSS攻击时,浏览器将阻止页面的呈现,而不是清理页面。1; report=http://domain/url 过滤器已启用。 浏览...转载 2019-02-22 17:45:23 · 1000 阅读 · 0 评论 -
【应用安全】mssql db_owner权限拿shell
如果站库同服务器,且权限为db_owner的话,那么我们可以考虑直接写入一句话。但写入一句话的前提就是知道web物理路径列出web目录。然后利用sql语句创建一个临时表然后将这个一句话插入到这个临时表再进行备份,备份成asp文件就成功得到一个一句话后门了然后连接就OK了1.判断数据库权限2.利用xp_dirtree查找web物理目录如果我们用DB权限写入一句话是需要知道web目录执...转载 2019-02-22 17:45:16 · 1518 阅读 · 0 评论 -
【应用安全——XSS】input-hidden
1、使用expression突破<input type=hidden style="x:expression(alert(/xss/))">直接利用CSS的expression属性来实现突破,此技巧适用于IE6及以下的浏览器。2、使用accesskey突破<input type="hidden" accesskey="X" onclick="alert(/x...转载 2019-02-22 17:45:01 · 799 阅读 · 0 评论 -
【应用安全——XSS】Challenges解题记录
地址:http://xss-quiz.int21h.jp/1)"</b><img/src=x onerror=alert(document.domain)><b>"2)123456" onfocus=alert(document.domain) autofocus xx="3)参数p1转义了<、>、”,修改参数p2Jap...转载 2019-02-22 17:44:54 · 382 阅读 · 0 评论 -
【应用安全——XSS】Referer XSS
首先说一下不同浏览器对’ ” < >的URL编码机制是不同的,例如:IE:不会对’ ” < >编码Chrome:会对’ ” < >编码FireFox:会对’ ” < >编码以PHP为例,$_GET[‘x’]获取参数值时会对参数进行URL解码。而如果服务端取出URI直接回显的话就会导致XSS。如果服务...转载 2019-02-22 17:44:47 · 2988 阅读 · 0 评论 -
【应用安全——XSS】DOM型XSS挖掘
DOM-Based XSS是一种基于文档对象模型(Document Object Model,DOM)的Web前端漏洞,简单来说就是JavaScript代码缺陷造成的漏洞。与普通XSS不同的是,DOM XSS是在浏览器的解析中改变页面DOM树,且恶意代码并不在返回页面源码中回显,这使我们无法通过特征匹配来检测DOM XSS。0x01 页面跳转页面跳转中常用的三种方式:1)302跳转...转载 2019-02-22 17:44:39 · 1920 阅读 · 0 评论 -
【应用安全——XSS】过滤圆括号、尖括号绕过
先看下程序大概写法:<?phpheader("X-XSS-Protection:0");$out = $_GET['code'];$out = str_replace("<","&lt;",$out);$out = str_replace(">","&gt;",$out);$out = str_replace("转载 2019-02-22 17:44:01 · 43206 阅读 · 1 评论 -
【应用安全——XSS】修复建议
本身XSS输出位置不同,且可构造的Payload很多,一般是从一下三个角度来修复。httponly一般谈到cookie时,所对应的安全配置有httponly和secure。Httponly:为了防止设置了该标志的cookie被JavaScript读取。Secure:只能通过HTTPS使用,确保在从客户机传输到服务器时,cookie总是被加密的。Jboss中可以在content....转载 2019-02-22 17:43:54 · 4777 阅读 · 0 评论 -
【应用安全——XSS】字符编码绕过
编码转换工具:http://bianma.51240.com/html实体编码<iframe src=javascript:alert(1)>html标签中支持十进制,例如:<iframe src=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&...转载 2019-02-22 17:43:48 · 4931 阅读 · 2 评论 -
【移动安全基础篇】——00、移动应用安全检测清单
客户端应用可被进行逆向工程/缺乏代码混淆 跨站脚本攻击 认证绕过 应用代码中存在硬编码敏感信息 (包含秘钥) 恶意文件上传 固定会话攻击 权限提升 SQL 注入 双因子认证绕过 LDAP 注入 系统命令执行 iOS snapshot/backgrounding 漏洞 ( iOS ) Debug 设置为 TRUE ( Andriod ) 应用使用不安全的加密方式 在S...原创 2019-01-09 09:41:02 · 610 阅读 · 0 评论 -
【移动安全基础篇】——01、新版本调试方法及Smali函数文件修改
1. ShakaApktool 工具:比 Apktool 更加强大d -> 反编译b -> 回编译-df -> 使用默认框架-o -> 输出目录和文件名2. 新调试方法:AndroidStudio/idea + smaliIdea 插件(1)反编译 apk 文件(2)AS/Idea 中导入源码, File -> open Or Import ...转载 2019-01-09 10:38:11 · 605 阅读 · 0 评论 -
【移动安全基础篇】——10、Android源代码修改
1. 内核代码下载模拟器内核:prebuilts/qemu-kernel手机内核:device/品牌/内核版本/kernel可 以 在 官 网 中 下 载 对 应 的 内 核 代 码 进 行 编 译(http://source.android.com/source/building-kernels.html),应该使用的指令为:git clone https://android.go...转载 2019-01-12 23:13:54 · 839 阅读 · 0 评论 -
【移动安全基础篇】——09、Android源代码目录结构
1. Android 源代码导入 AndroidStudio首先将 Android 源代码进行编译Android 编译环境配置脚本然后执行以下指令:Cd /development/tools/idegenMmCd ..Cd ..Cd ..development/tools/idegen/idegen.sh最后使用 AndroidStudio 导入 Android ...转载 2019-01-12 23:13:49 · 443 阅读 · 0 评论 -
【移动安全基础篇】——08、Android_Hook_xposed
1. Xposed 开源,官网地址 http://repo.xposed.info/2. Xposed_Demo步骤如下:(1)导入 lib 文件 XposedBridgeApi-54.jar,在 build.gradle 文件中设置为 provided模式,使其不参与编译到最终文件中(2)AndroidManifest.xml 文件修改(3)入口类编写新建一个类文件...转载 2019-01-09 13:53:48 · 402 阅读 · 0 评论 -
【移动安全基础篇】——07、Android_Hook_cydia
1. Hook 钩子对函数进行挂钩,可以影响整个函数的执行,挂上钩子之后,注入的代码可以接管整个函数,修改函数的参数或者返回值,甚至修改函数的行为等等。2. Cydia 的 Demo 示例(兼容性问题,所以使用不普遍)函数 Hook 的方法如下:找到要挂钩的类,然后找到要挂钩的函数,最后对目标函数进行挂钩重写。步骤:(1)导入 lib 文件 substrate-api.jar(2)An...转载 2019-01-09 13:45:55 · 364 阅读 · 0 评论 -
【移动安全基础篇】——06、Android结构基础
1. 以 HelloWorld 为例AndroidManifest.xml: 描述 Android 应用的信息,包括类名,组件名等assets: 资源目录lib: so 文件存放路径java: 源代码存放目录 -example: 类名 --hello: 类名 ---helloStr.java: 类实现文件 ...转载 2019-01-09 13:39:17 · 373 阅读 · 0 评论 -
【移动安全基础篇】——05、JEB的第一次启动
一、Jeb下载下载地址:https://down.52pojie.cn/Tools/Android_Tools/二、JAVA环境JAVA环境自己搭建,这里不再复述三、设置JAVA路径Jeb解压后的目录下有一个文件jeb_wincon.bat,打开并添加命令:set JAVA=C:\Program Files\Java\jdk1.8.0_121,用于设置JAVA_HOME路径。...原创 2019-01-09 13:29:19 · 1746 阅读 · 0 评论