客户端程序安全

位置无关代码

检测客户端是有启用Position Independent Executable(PIE)编译选项,采用PIE选项编译的引用程序允许使用地址空间随机分布功能(ASLR, Address Space Layout Ramdomization),提高内存漏洞被利用的难度。

测试方法: 如图,使用otool在iOS设备上进行操作,查看是否设置PIE标志。

威胁等级: 若客户端未启用PIE,此时为低风险;若无异常则无风险。

栈保护

检测客户端是否起启用Stack Smashing Protector(SSP)编译选项,采用SSP选项编译的应用程序能够防止栈溢出等栈破坏漏洞的攻击。

测试方法: 如图,使用otool在iOS设备上进行操作,查找__stack_chk_guard关键字。

威胁等级: 若客户端未启用SSP,此时为低风险;若无异常则无风险。

自动引用计数

检测客户端是否启用Automatic Reference Counting(ARC)编译选项,采用ARC选项编译的应用程序能够自动对Objective-C对象进行内存管理,防止造成内存破坏漏洞。

测试方法: 如图,使用otool在iOS设备上进行操作,查找_objc_release关键字。

威胁等级: 若客户端未启用ARC,此时为低风险;若无异常则无风险。

安装包签名

检测客户端是否进过正确签名(正常情况下应用都应该是签名的,否则服务在未越狱iOS 10上运行)。

测试方法: 如图,当输出结果为”valid on disk”时,表示签名正常。

从App Store下载的应用,其签名信息中的authority应类似下图:

威胁等级: 通常情况下非越狱手机只有使用开发者账号上架到App Store才可以下载,一般不会出现此类问题,若签名异常为低风险。

客户端程序保护

检测客户端安装程序,判断时候包含调试符号信息,是否能反编译为源代码,是否存在代码保护措施。

  1. 代码混淆 检测客户端安装程序,判断时候包含调试符号信息,是否能反编译为源代码,是否存在代码保护措施。

    测试方法: 将ipa解包,发编译,对客户端程序文件进行逆向分析。

  2. 远程调试 检测客户端程序Entitlements.plist文件或者内嵌Entitlements中是否包含调试设置。

威胁等级: 若客户端未进行代码混淆为低风险,否则无风险。

应用完整性检测

检测客户端是否对自身完整性校验,客户端程序如果没有自校验机制,攻击者可能通过篡改客户端程序,显示钓鱼信息欺骗用户,窃取用户的隐私信息。

测试方法: 获取iOS应用程序包和资源文件,修改客户端程序文件或其他资源文件,检测客户端是否能够运行。(推荐修改配置文件、文本文件或者图片,使客户端显示钓鱼信息)。

客户端程序问津均保存在应用私有目录的.app的文件夹下。可以寻找文件夹中的配置文件和文本文件,能够影响程序运行的文件进行修改(可以通过文件名和文件类型进行推测,首选修改对象是html、js和配置文件等)。修改后需要重新运行客户端。 注意,应用程序在提交给App Store后可执行文件会被修改,所以开发时不能讲自身Hash硬编码进程序中,建议应用通过Apple的数字签名机制来判断是否被篡改。

威胁等级: 若客户端启动时不进行应用完整性检测为高风险;若只对原有文件进行检测而忽略是否存在新增文件时为中风险,不存在上述情况无风险。

进程安全

越狱检测

检测客户端程序是对越狱环境进行检测。

测试方法: 人工测试,在已越狱的iOS设备上运行客户端程序,检测程序在运行时是否提示当前处于不安全的越狱环境中。

威胁等级: 当客户端程序不存在越狱检测时低风险;存在越狱检测则无风险。

修复方案: 在程序中加入对越狱环境的检测;

反调试保护

检测客户端程序是否有反调试能力。

测试方法: 使用debugserver在iOS设备上attach应用程序,在mac端使用lldb进行调试,检测客户端是否具备反调试的能力。 在iOS设备上attach被测试的程序。

将1234端口转发到本地1234端口,使用lldb进行调试。

威胁等级: 当客户端程序不存在调试检测或者反调试时为中风险;当程序存在越狱检测时为低风险;存在反调试手段时无风险。

修复方案: 通过ptrace PT_DENY_ATTACH实现反调试,并在多个位置添加代码判断是否存于被调试状态,若处于被调试状态,则进程退出;

反dylib注入

检测客户端程序是否有反dylib注入的能力。通过注入动态链接库,hook客户端某些关键函数,从而获取敏感信息或者改变程序执行。

测试方法: 可使用cycript进行注入,检测程序是否被注入。

威胁等级: 当客户端存在动态注入隐患时为中风险;否则则无风险。

修复方案: 1. 在Build Setting中找到“Other Linker Flags”中加上一下编译选项。

-Wl,-sectcreate,___RESTRICT,___restrict,/dev/null;

IOS安全测试(资源学习笔记)相关推荐

  1. 《安全测试指南》——配置管理测试【学习笔记】

    配置管理测试 1.网路和基础设置配置测试(OTG-CONFIG-001) 测试方法:已知服务器漏洞(APache.IIS等).略. 2.应用平台配置测试(OTG-CONFIG-002) 测试方法: a ...

  2. 《安全测试指南》——信息收集测试【学习笔记】

    [信息收集测试] 1.搜索引擎信息收集(OTG-INFO-001) 通过搜索引擎收集以下: · 网络拓扑图和配置 · 管理员和其他员工的归档文章和邮件 · 登录过程和用户名的格式 · 用户名和密码 · ...

  3. ios 图像坐标系_iOS学习笔记(1)-iPhone分辨率和坐标系

    终于决定开始学习ios开发了,很久之前有过一次ios开发培训,但是做完作业就落下了,一直没有再捡起.想到如今ios开发如火如荼,再不学习真的要掉队了,希望能督促自己在2个月内完成ios开发的基础学习以 ...

  4. 使用Metasploit对MSSQL渗透测试步骤——学习笔记

    学习笔记 使用metasploit对MSSQL渗透测试方法(因为本人靶机没有mssql服务,所以只有方法hh) 第一步,使用mssql_ping获取信息 Name: MSSQL Ping Utilit ...

  5. 模糊测试-AFL学习笔记之C/C++

    目录 简介 文档 QuickStartGuide README perf_tips.txt status_screen INSTALL 安装 下载 编译 检查 例子 有源码-标准输入 源代码 编译 f ...

  6. IOS 开发高手课 学习笔记(第三部分)

    这一部分戴铭老师说的是一些底层的东西,然后推荐了一下第三方库,但是看同学者的反应,很多内容(主要是推荐的第三方库)都不是很完善(不能完全接受),所以这部分内容,要谨慎对待,然后自己实践和查询足够的资料 ...

  7. IOS 开发高手课 学习笔记(第二部分)

    第二部分主要是性能监控相关 Part 7. 包大小:如何从资源和代码层面实现全方位瘦身? 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新 ...

  8. IOS 开发高手课 学习笔记(第一部分)

    年前购买了三门课程,Android 开发高手课.IOS开发高手课与从0开始学架构,利用工作的空余时间匆匆忙忙的,快6个月了,终于把前两门课程都过了一遍,也把其中一些遗漏的知识补充了,可以开始看第二遍, ...

  9. 常见渗透测试靶场学习笔记

    1.DVWA 作为新手,通常第一个听说的靶场应该就是DVWA,部署简单安装完对应版本的PAM(PHP-Apache-MySQL),简单配置后就可以使用. 1.DVWA靶场可测试漏洞:暴力破解(Brut ...

最新文章

  1. java openfile busy_android java.io.IOException: open failed: EBUSY (Device or resource busy)
  2. MPB:微生物所王军组-​人类肠道病毒粒子富集及纳米孔测序
  3. java exception e抛异常_抛出的异常在上层catch到,但是e.getMessage()为NULL,为什么会这样?...
  4. hdu 6106 Classes
  5. SAP Cloud for Customer的公有云和私有云部署方式 - Public Cloud vs Private Cloud
  6. ubuntu自定义菜单_如何自定义Ubuntu的每日消息
  7. 【移植Linux 3.4.2内核第一步】之简单修改
  8. 大数据延长了乔布斯8年寿命?它其实还有更多潜力
  9. Windows核心编程_FS段寄存器
  10. 从 0 编写自己的第一款 IDEA 插件!
  11. 阿里巴巴大规模应用 Flink 的实战经验:常见问题诊断思路
  12. 灵格斯(lingoes)词霸 + Acapela破解语音包(法语,德语,西班牙语,美国英语)
  13. Linux Socket接口使用方法
  14. 360网站卫士能防服务器吗,360网站卫士测评
  15. python关于re模块(正则表达式)
  16. 慢性病概念——>分类——>数据集
  17. 简单讲讲BW/4 HANA和BW on HANA的区别
  18. 解决 Vue项目——node.modules文件太大问题(模块瘦身完整版)
  19. Java注解编译期处理AbstractProcessor详解
  20. [BZOJ 4244] 邮戳拉力赛

热门文章

  1. 最简单DIY串口蓝牙硬件实现方案
  2. TDH大数据平台的卸载与重装
  3. 银河麒麟服务器操作系统配置bond1
  4. import 快捷键 自动调整顺序_idea 快捷键修改去除 自动导入import 相关整理
  5. laravel RBAC laravel-permission使用
  6. 华为鸿蒙智能系统域名,华为,上鸿蒙
  7. JavaJVM虚拟机模型类加载机制
  8. 利用深度学习实现手绘数据可视化的生成
  9. homeassistant 接入小米温湿度计2
  10. RabinKarp子串匹配