武天旭
高级安全架构师,CSDN安全博客专家/业界认证专家,全栈安全领域优质创作者,持有注册信息安全认证专家资质(CISSP)。其拥有多年信息安全行业从业经历,具备中大型企业安全架构设计能力,在安全架构、应用安全、隐私合规、数据安全、云原生安全、安全开发等多个安全领域具备丰富的理论和实践经验,并多次受邀在国内各大型安全峰会上发表过相关演讲。联系邮箱:security_suiyi@163.com
展开
-
【移动安全】专栏文章汇总
Android开发基础Android开发基础常识Android四大组件之活动(Activity)(上)Android四大组件之活动(Activity)(下)Android四大组件之服务(Service)(上)Android四大组件之服务(Service)(下)Android四大组件之广播(Broadcast Receiver)Android四大组件之内容提供器(Content Provider)原创 2022-03-02 16:17:44 · 1839 阅读 · 0 评论 -
Android系统版本与API版本对照表
Android历史中由于最初的规划或者是其他原因,存在许多特殊的版本号,并不像当前这样有简洁的版本号。这在日常中经常搞混需要再来网上查,很多网友又写的不好,比较烦。基于此,我自己整理了一个全的,以后只看自己的。.........原创 2022-06-15 17:16:19 · 2715 阅读 · 0 评论 -
我设计的Java代码混淆解决方案
特别声明:本文是博主阅读大量硕博论文和知网文献后原创,非公司内部解决方案。一 、代码混淆方案图各模块功能简介:程序预处理分析:对原应用程序进行程序分析预处理,为后续混淆奠定结构基础。布局混淆模块:对代码中有意义的标识符进行重命名。控制流混淆模块:对程序进行控制流混淆,包括插入多余的分支路径、压扁控制流、强化不透明谓词。字符串混淆模块:加密隐藏代码中的常量字符串。混淆算法库:对程序的混淆处理主要依靠混淆算法库支撑,算法库中包含一系列的基本块混淆算法。混淆算法...原创 2020-03-01 11:12:31 · 5582 阅读 · 4 评论 -
iOS安全开发编码规范(下)
六、不安全的授权6.1、定义这个类别包括任何失败的授权行为(例如:在客户端的授权决策、强迫浏览等)。它有别于身份验证问题(例如:设备注册、用户标识等)。如果应用程序在需要的时候没有验证用户的身份(例如:当访问要求需经过身份验证和授予权限时,授予匿名用户访问某些资源或服务的权限),那就是一起身份验证失败事件,而不仅仅是授权失败事件。原创 2021-05-30 16:36:57 · 80 阅读 · 0 评论 -
iOS安全开发编码规范(上)
一、平台使用不当1.1、定义该类别包括平台功能的滥用或未使用平台的安全控制,它主要包括了对X-code工具编码时对工具的警示与提示的重视。1.2、风险移动平台提供许多不同的服务,从身份验证,到安全的数据存储,再到安全的网络通信。没有正确地使用平台的相关功能,因此,可能造成数据暴露、连接到不受信的主机、或实现欺诈付款。移动应用程序的隐私和权限也是平台的领域。因此,未能恰当使用平台的功能,可能会最终暴露用户隐私。1.3、防范方法1.3.1、X-code警告与提示【规范要求】编码时应关注X-cod原创 2020-12-08 17:50:09 · 626 阅读 · 0 评论 -
Android安全开发编码规范(下)
七、客户端代码质量7.1、定义客户端代码质量指一个Android应用程序在编码过程中使用错误配置、过时API、缺少校验等编码而造成的风险,比如:APP拒绝服务、targetSdkVersion设置、随机数使用规范、禁止输出日志信息等。7.2、风险原创 2020-07-18 11:59:48 · 74 阅读 · 0 评论 -
Android安全开发编码规范(上)
一、平台使用不当1.1、定义平台使用不当包涵Android控件的配置不当或编码不当。包括Activity、Service、ContentProvider、Broadcast Receiver、Intent组件、WebView组件使用过程中配置是否规范与编码是否规范。1.2、风险平台使用不当会造成的风险包括组件被恶意调用、恶意发送广播、恶意启动应用服务、恶意调用组件、拦截组件返回的数据、远程代码执行等。1.3、防范方法1.3.1、预防组件最小化组件暴露【规范要求】针对不需要进行跨应用调用的组件原创 2020-12-08 16:23:27 · 869 阅读 · 0 评论 -
iOS应用安全测试用例
前言自从写了移动安全专栏,经常有小伙伴问有没有APP安全测试用例(俗称checklist),这个当然是有的啦!只是博主觉得测试用例这个东西,属于最基本的常识,就不在这里写了。另外,如果真的从内向外懂移动安全技术的话,测试用例这东西也就是一个自然而然的东西原创 2020-12-09 16:33:20 · 1401 阅读 · 2 评论 -
Android应用安全测试用例
前言自从写了移动安全专栏,经常有小伙伴问有没有APP安全测试用例(俗称checklist),这个当然是有的啦!只是博主觉得测试用例这个东西,属于最基本的常识,就不在这里写了。另外,如果真的从内向外懂移动安全技术的话,测试用例这东西也就是一个自然而然的东西。原创 2020-12-09 16:05:11 · 1196 阅读 · 0 评论 -
MobSF-v3源代码分析(四)
五、动态扫描分析5.1、先捋一下代码和静态分析篇一样,我将它写在了最前面。动态分析的核心部分在/DynamicAnalyzer/views/目录下,另外我们这次只分析Android的APK,因此所分析的代码集中在/DynamicAnalyzer/views/android/目录下。原创 2022-02-02 23:21:48 · 1491 阅读 · 0 评论 -
MobSF-v3源代码分析(三)
4.5、设置manifest连接我们回到起点继续向下走,接下来是设置AndroidManifest.xml的连接。这里的量就比较大了,我在代码中写了备注,请阅读。代码如下:# 设置manifest连接app_dic['mani'] = ('../ManifestView/?md5=' + app_dic['md5'] + '&type=apk&bin=1')原创 2019-10-12 20:31:04 · 73 阅读 · 0 评论 -
MobSF-v3源代码分析(二)
四、静态扫描分析4.1、先捋一下代码在做完静态扫描的源码分析后,我觉得这一小节的内容应当加在最前面,于是我就将它写在了最前面。静态分析的核心部分在/StaticAnalyzer/views/目录下,另外我们这次只分析Android的APK,因此所分析的代码集中在/StaticAnalyzer/views/android/目录下。原创 2022-01-21 16:56:59 · 788 阅读 · 0 评论 -
MobSF-v3源代码分析(一)
移动安全框架(MobSF)是一种自动化的移动应用程序(Android/iOS/Windows)测试框架,能够执行静态、动态和恶意软件分析。 它可用于Android、iOS和Windows移动应用程序的有效和快速安全分析,并支持二进制文件(APK,IPA和APPX)和压缩源代码。 MobSF可以在运行时为Android应用程序进行动态应用程序测试,并具有由CapFuzz(一种特定于Web API的安全扫描程序)提供支持的Web API模糊测试。MobSF旨在使您的CI/CD或DevSecOps管道集成无缝。原创 2020-01-17 17:06:38 · 8397 阅读 · 15 评论 -
MobSF-v3框架安装与开发环境搭建
移动安全框架(MobSF)是一种自动化的移动应用程序(Android / iOS / Windows)测试框架,能够执行静态,动态和恶意软件分析。它可用于Android,iOS和Windows移动应用程序的有效和快速安全分析,并支持二进制文件(APK,IPA和APPX)和压缩源代码。MobSF可以在运行时为Android应用程序进行动态应用程序测试,并具有由CapFuzz(一种特定于Web API的安全扫描程序)提供支持的Web API模糊测试。原创 2019-01-19 11:42:15 · 2648 阅读 · 7 评论 -
Xposed源码分析(四)
一、本文分析:Xposed分析目标:1、Xposed的xposed.cpp源码二、xposed.cpp代码片段26初始化Xposed,除非已禁用。两个值得注意的地方,第一个是调用printRomInfo函数,打印ROM信息。第二个是将XposedBridge.jar的路径添加到环境变量classpath中。原创 2019-10-24 16:50:09 · 552 阅读 · 0 评论 -
Xposed源码分析(三)
一、本文分析:Xposedxposed项目的核心部分,它主要是替换app_process。分析目标:1、Xposed的app_main.cpp源码2、Xposed的app_main2.cpp源码3、AOSP的app_main.cpp源码(Android 7.0)摘要:1、Xposed代码结构2、app_main.cpp系原创 2019-10-24 16:36:25 · 627 阅读 · 0 评论 -
Xposed源码分析(二)
一、本文分析:XposedInstallerXposedInstaller仅为一个安装器,主要是用户操作界面。摘要:1、XposedInstaller代码结构2、XposedApp.java3、WelcomeBaseActivity.java4、WelcomeActivity.java5、ModulesFragment.java6、DownloadFragment.java原创 2019-10-24 16:05:19 · 500 阅读 · 0 评论 -
Xposed源码分析(一)
一、源码分析说明1、本源码分析时间为2019-10,分析的Xposed源代码是最新的源码(2017)2、所有的源代码在分析后整理成文时都删除了原来的注释3、在分析后整理成文时都是按照源码从上到下的顺序,不是按逻辑跳转顺序4、所有的C/C++代码风格均已改为Java风格(末尾大括号)原创 2019-10-24 15:45:14 · 793 阅读 · 0 评论 -
Hook技术简介
# 一、Hook原理Hook技术的本质就是劫持函数调用。但是由于处于Linux用户态,每个进程都有自己独立的进程空间,因此要实现Hook就必须先注入到所要Hook的进程空间,然后修改其内存中的进程代码,替换其过程表的符号地址。在Android中,一般是通过ptrace函数附加进程,然后向远程进程注人so库,从而达到监控以及远程进程关键函数挂钩。原创 2019-10-21 20:13:45 · 1091 阅读 · 1 评论 -
iOS安全碎碎念
最开始接触iOS安全是在绿盟工作的时候,对iOS的掌握仅停留在会测试APP,而且仅会测试checklist中的那几项,可能问一个测试项之外的问题或者对测试项稍微深入一下,就懵逼了,当然,掌握这些已经足够应付工作交付了。后来到甲方公司,做自己的产品,一切为自己服务,那学习的也就更深入了一些了。原创 2019-11-05 23:19:57 · 677 阅读 · 2 评论 -
聊聊Android软件壳
APKID是一款专门用来识别APK文件特征的开源工具,它使用Python脚本配合yara规则,实现了APK编译器识别规则与常见的软件壳特征识别规则,支持快速识别APK的软件壳信息,准确率高且易扩展。截止现在仍在不断更新。原创 2020-03-19 17:58:22 · 1352 阅读 · 0 评论 -
WebView安全
洞或风险 产生原因 后果 对策addJavascriptInterface远程代码执行漏洞 Android的Web View组件有一个非常特殊的接口函数addJavascriptInterface,能实现本地的Java与JavaScript之间的交互 在targetSdkVersion小于17时,攻击者利用接口addJavascriptInterface添加的函数,可以远程执行任意代码 禁止使用addJavascriptInterface,API 17中用@JavascriptInterface代替add原创 2019-10-12 20:22:19 · 52 阅读 · 0 评论 -
Android逆向工程补充
一、Android原生开发开发语言:C、C++、Swift、Objective-C、Go、C#、Python、JavaScript主要开发语言:C、C++二、第三方原生开发套件Qt库:跨平台的开源界面库,可以在多个系统平台上使用,由C++语言开发,使用Qt库开发Android原生程序,需要配合使用Android NDK和Android SDK。Xamarin Studio/Visual Studio:跨平台编程IDE,支持使用C#语言开发Android原生程序。Kivy/sl4a:跨平台原创 2019-11-01 21:45:55 · 564 阅读 · 0 评论 -
Emulator模拟器的配置和ROOT
一、Emulator模拟器的创建和配置下载并解压ADT后,运行SDK Manager.exe(首次使用需要联网),选择所需版本的SDK并下载安装。一般来说一个版本下只需下载如下两项即可,下载太多则需要考虑网速和电脑行性能。原创 2018-10-04 11:29:02 · 1400 阅读 · 1 评论 -
加密算法基础
一、加密算法基础1.1、加密算法概念一种映射函数,即:明文+密钥→密文,密文+密钥→明文。具体的映射形式可能会有所变化,例如单向加密算法,无密钥的加密算法等。1.2、如何实现加密加密实现的机制是“混乱和扩散”,即明文或密钥中每一个二进制位的改变,应当引起密文中平均一半二进制位的改变,且这种改变不具有线性分布。原创 2018-10-03 13:02:02 · 764 阅读 · 2 评论 -
使用IDA Pro进行脱壳
APK加固的两种方式:一种是对源APK整体做一个加固,放到指定位置,运行的时候再解密动态加载;还有一种是对so进行加固,在so加载内存的时候进行解密释放。一个APK加固,外面肯定得套一个壳,这个壳必须是自定义的Application类,它需要做一些初始化操作,一般加固的APK壳的Application类都喜欢叫StubApplication。1、查看是否加固首先解压出classes.dex文件,使用dex2jar工具查看Java代码,发现只有一个Application类,所以猜测APK被加壳了。原创 2018-10-03 12:37:25 · 2918 阅读 · 3 评论 -
破解NDK层的签名校验
一、破解NDK层的签名校验NDK层签名校验破解的思路与Java层签名校验破解的思路相似:1、通过输入“signature”关键字定位获取本Apk签名信息的函数(在下文中,我们用getApkSign来标记该函数);2、找出调用的getApkSign函数的函数列表,然后在得到的函数列表中筛选出签名校验函数(在下文中,我们用verifyApkSign来标记该函数);原创 2018-10-03 12:12:33 · 1872 阅读 · 2 评论 -
破解java层的签名校验
一、破解java层的签名校验做为Android开发者,我们应该知道没有签名的Apk是无法在真机(模拟器)上安装运行的。为了防止自己开发的Apk被别人二次打包,有些开发者会在App运行时获取当前Apk的签名信息并与正版Apk的签名信息进行比对,一旦发现不相同,就会弹出对话框提示用户当前应用是盗版或者终止App的运行,这就是Apk签名校验。原创 2018-10-03 12:03:19 · 1198 阅读 · 2 评论 -
Small注入
一、smali注入我们在破解某个APK时,通常是这样的流程:先用某个工具逆向得到APK的源代码,然后再修改源代码,最后再用工具进行二次打包。通常是修改逆向出来的smali代码,而这个操作就叫:smali注入本次实验目标:修改启动页面原创 2018-10-03 11:54:34 · 605 阅读 · 2 评论 -
在JNI_onload函数处下断点避开针对IDA的反调试
一、在JNI_onload函数处下断点避开针对IDA的反调试为了防止apk中的so文件被动态调试,开发者往往会使用一些反调试手段来干扰黑客的动态调试。其中最常见的就是在so文件中检测TracerPid值。通过在JNI_onload下断点即可避开反调试。二、反调试原理1、ptrace:是系统调用的一个方法原创 2018-10-03 11:37:24 · 1151 阅读 · 2 评论 -
使用IDA动态调试.so文件
一、使用IDA动态调试.so文件1.1、应用体系架构:动态分析分析什么?代码安全分析。有无被篡改,盗版等风险,是否容易被反编译,重打包。组件安全分析。四大组件和通信Intent分析,以及他们权限使用不当带来的问题。存储安全分析。对存储的私有文件,证书文件,数据库文件进行安全验证分析,尤其是明文数据。原创 2018-10-03 11:18:29 · 1285 阅读 · 2 评论 -
动态调试Smali源码
一、动态调试Smali源码工具:Eclipse/Android studio(编译器即可)1.1、第一步:调试前的准备1、抓包进行信息搜集,包括关键URL、关键字段等。2、反编译APK,注意必须使用2.1.0以前的版本,则最新为2.0.3版。apktool命令:原创 2018-10-03 10:59:09 · 648 阅读 · 2 评论 -
使用IDA静态分析so文件
一、使用IDA静态分析so文件注意:IDA不支持修改代码,修改代码需要其他工具支持使用NDK开发能够编译c/c++程序,最终生成so文件。而so文件是一个二进制文件,我们是无法直接分析so文件的,所以这里需要用到一个反编译工具IDA Pro。IDA Pro能够对so文件进行反汇编,从而将二进制代码转化为汇编语言,利用IDA Pro神奇的F5功能还能将汇编语言反编译成c/c++程序。原创 2018-10-03 10:24:20 · 2204 阅读 · 2 评论 -
使用Apktool解包并打包
一、使用Apktool解包并打包目前apktool是最通用的解包及二次打包工具。需要注意的是,APKtool使用不当会导致区域格式化,后果相当严重!因此我们通常使用以下架构:1、 新建文件夹A:存放第一次解包后的文件原创 2018-10-02 15:49:48 · 6806 阅读 · 2 评论 -
反编译classes.dex文件
一、反编译classes.dexJava源代码首先被编译成.class文件,然后Android SDK自带的dx工具会将这些.class文件转换成classes.dex。所以我们只需要想办法反编译classes.dex即可得到java源代码。运用安卓反编译工具dex2jar可将dex文件反编译成.jar文件,然后运用jd-gui工具即可查看反编译后得到的Java源代码。原创 2018-10-02 15:30:07 · 17431 阅读 · 2 评论 -
Android安全零散部分汇总
ADB(Android Debug Bride)可以针对模拟器环境下的Android设备或连接PC的真实设备进行安装软件包、执行服务命令和shell命令等操作命令命令说明查看安卓设备列表adb -s 设备名称 其它命令连接多台设备时,选择目标设备adb pull 安卓设备路径 PC机路径从安卓设备中导出文件adb push PC机路径 安卓设备路径将文件写入安卓设备adb install 安装包在主机中的路径直接安装APK安装包adb uninstall 包名卸载软件。原创 2018-10-02 15:20:12 · 1121 阅读 · 3 评论 -
Android应用安全防护技术(下)
四、Android中的allowBackup属性4.1、属性介绍allowBackup属性决定应用程序的数据备份和恢复功能,在AndroidManifest.xml中定义,属性默认值是true。当该标识为true时,用户即可以通过adb backup和adb restore命令对应用数据进行备份和恢复,会带来一定的安全风险。原创 2019-10-12 18:11:50 · 76 阅读 · 0 评论 -
Android应用安全防护技术(上)
一、Android应用安全防护的基本策略1.1、混淆策略混淆机制有两个用途,第一个是为了安全保护应用,第二个是为了减小应用安装包大小,所以每个应用在发版之前必须要添加混淆这项功能。混淆机制一般有两种:代码混淆和资源混淆。代码混淆查阅:左侧代码类名方法名不是正常的项目代码,而是以abcd命名,如此可以增加代码阅读难度,增加破解难度。原创 2018-10-02 14:52:53 · 1186 阅读 · 2 评论 -
Android基础文件格式解析(下)
头部信息header结构dex文件里的header除了描述.dex文件的信息外,还有文件里其它各个区域的索引。header对应为结构体类型,逻辑上的描述用结构体header_item来理解它。文件头摘要:原创 2019-10-09 00:19:57 · 57 阅读 · 0 评论 -
Android基础文件格式解析(上)
一、so文件格式解析1.1、ELF文件格式Android中的so文件就是ELF文件,了解so文件首先需要了解ELF文件的格式,使用工具为readelf,常用命令如下:1、查看so文件的头部信息readelf -h xxx.so //如:libhello.so等2、查看so文件的节(Section)头的信息原创 2018-10-02 14:21:12 · 578 阅读 · 2 评论