IOS渗透测试第一步-基础知识统一放送
原文:
http://www.websecgeeks.com/2017/04/ios-application-pentesting-part-3.html
http://www.websecgeeks.com/2017/04/ios-application-pentesting-part-4.html
http://www.websecgeeks.com/2017/04/ios-application-pentesting-part-5.html
由prison翻译整理,首发i春秋
众所周知,应用程序由代码构成,其中有许多关于功能的信息,等等。如果我们能够提取出我们将要攻击的应用程序的所有可能的信息,那将是极好的。
我们将会看到如何提取iOS应用的类信息。
苹果在安全方面做了一些修改,现在大多数appstore应用都是加密的,首先需要解密来提取类信息。
首先,我们将看到未加密应用的类的情况。
转储预安装应用程序的类信息
我们有两种方法来找到这款应用。
1) find /-type d -iname “Dam*.app”
2)如果应用程序是使用IPA文件安装的,那么他的保存目录将是Applications/
我使用的是命令行搜索,这是由PrateekGianchandani开发的受影响的iOS应用程序。
我们在本地找到这个文件 /Applications/DamVulnerableIOSApp.app
首先进入这个文件夹[有漏洞的iOS APP]这里有一个闪着原谅绿颜色的文件,这是这个app的可执行文件,所以我们需要使用这个文件名dump 出类。
现在我们来提取这个app类的信息。
class-dump-z DamVulnerableIOSApp.app / DamVulnerableIOSApp
现在我们可以看到大量的输出信息出现,所以如果我们能将这些信息保存下来进一步分析会更容易一点。
要做到这一点,我们可以使用sftp。所以使用sftp登录到您的设备,使用[email]sftproot@192.168.0.3[/email]并输入您的根用户密码。
然后sftp /Applications/Appdirectory.app/Appname> outputfilename
如果你使用的是mac和windows用户,这个文件将会被下载到你的home文件夹中,它将会被保存在你的User的主文件夹中。
这些类信息帮助我们理解应用程序和逻辑的流程。
项目中加密的DumpingClass信息
正如我们所知,从应用商店下载的应用程序放置在/var/containers/Bundle/Application。这些应用通常是加密的,以避免信息泄露。这使得提取类信息和非常困难的任务。
为了克服这些问题,我们需要使用clutch,并将这个二进制文件放入/usr/bin文件夹,并使用chmod+xclutch完全访问这个二进制文件。
首先,我使用了命令clutch-i——我这个命令将用它们的bundleid提取所有已安装的应用程序。
例如应用程序。<BundleID>
在我们的例子中,我在演示中使用了Rediffmail。我们有了应用程序名称为RediffmailNG它的bundleID- com.rediff.com
现在使用命令clutch -b com.rediff.com。这个命令将创建一个新的文件/var/tmp/clutch/<>/directory.
从上面的图片可以看到,文件被保存到/var/tmp/clutch/someid/。进入这个目录
我们在这个目录中有一个可执行文件。外瑞古德
接下来使用命令:class-dump-z RediffmailNG [提取类信息]
安装IGoat在实践和学习方面,我们将使用OWASP安全项目的iGoatiOS应用程序。你可以在这里找到他们的Github页面。这个移动应用程序被设计为安全专业人员和学习者在iOS应用程序测试中提高他们的技能。
这个项目由下面的人来维护。
Swaroop
masbog
mtesauro
DinisCruz
这是项目的细节
在以后的实践例程中,我们将会在XCode中安装这个程序并且运行它。但是我建议你使用物理机。
1)首先下载这个漏洞程序
URLhttps://github.com/OWASP/igoat
2)解压
igoat-master
igoat-master->iGoat
用XCode打开这个文件夹下的iGoat.xcodeproj这个XCode项目
3)在左边选择你想要的设备版本,比如iphone5 6或7;)
我的例子是Iphone6:
4)在此按钮之前点击play(就是那个运行符号)按钮,结果将会看到一个屏幕运行我们的iGoat应用程序。
5)然后进入windows菜单,选择50%的比例选项。所以我们的应用程序运行窗口是很方便的
完美~!
6)现在让我们的服务器能够处理这个应用程序的请求,让我们可以更进一步的研究。
在同一个文件夹中,你会发现一个名为“serveropen”的文件夹。在这个文件夹中,您将看到一个ruby文件。
搞起!
一切就绪,准备玩一波浪的吧。
不安全的HTTP数据中转.
就像在HTTP敏感凭证上传一样,使用HTTP与服务器通信的应用程序不使用任何类型的加密都很容易受到这些问题的影响。
在iGoat应用程序中,有一个简单的演示,在应用程序中传递的用户名和密码是通过http传输的,而没有任何加密,攻击者可以捕获/嗅探这些包,并可能劫持受害者的帐户。
打开iGoat并进行数据保护(传输),然后选择服务器通信
另外,不要忘记运行IGoat的ruby服务器。
现在进入应用程序并输入任何凭证并单击submit按钮。点击提交按钮后,输出就会像这样。
在后台,我们的ruby IGoat服务器将作为一个攻击场景进行演示,其中用户登录凭证信息被攻击者窃取为纯文本。
当你真正的深入接触时,你也可以这样做。在你的设备上,你可以设置一个burp代理,或者你可以使用Wireshark来演示这个漏洞,在那里你可以看到明文格式的证书。
IOS渗透测试第一步-基础知识统一放送的更多相关文章
- 《openssl编程》:第一章基础知识
第一章 基础知识 1.1 对称算法 对称算法使用一个密钥.给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同.解密时,使用读密钥与加密密钥相同. 对称算法主要有四种加密模式: (1) 电子密码 ...
- wpf(第一章 基础知识)
wpf第一章基础知识:通过vs2015创建wpf程序会在引用里面多出3个核心程序集PresentationCore.PresentationFramework.WindowsBase.并且会在解决方案 ...
- IOS Socket 01-网络协议基础知识
1. 网络参考模型 OSI参考模型 TCP/IP参考模型 2. 七层简述 1)物理层:主要定义物理设备标准,如网线的接 ...
- Web渗透测试笔记(基础部分)
信息收集: dns信息收集 格式:dns... -参数 域名 -参数 示例: root@xxSec:~# dnsenum baidu.com root@xxSec:~# dnsenum -f dns. ...
- 使用CocoaPods创建自己的私有库-iOS组件化第一步
目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建: ...
- 渗透测试工具sqlmap基础教程
转载请注明出处:http://blog.csdn.net/zgyulongfei/article/details/41017493 作者:羽龍飛 本文仅献给想学习渗透测试的sqlmap小白,大牛请绕过 ...
- Python第一章-基础知识
第一章:基础知识 1.1 安装python. 直接官网下载最新的python然后默认安装就可以了,然后开始菜单里找到pyhton *.*.* Shell.exe运行python的交互shell ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- [Python笔记]第一篇:基础知识
本篇主要内容有:什么是python.如何安装python.py解释器解释过程.字符集转换知识.传参.流程控制 初识Python 一.什么是Python Python是一种面向对象.解释型计算机程序设计 ...
随机推荐
- 一波水题 MZOJ 1035: 贝克汉姆
#include <bits/stdc++.h> using namespace std; ; int n,m; int v[N],w[N],f[N]; int main() { scan ...
- Maven手动将jar包放入本地仓库
mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面 ...
- 69.查看APP沙盒缓存的内容文件
第一步:链接真机设备,点击Xcode ,按command+shift+2 弹出电脑所运行的APP列表 第二步:选中你需要查看的APP,点击最下面! 类似于设置图标的按钮! 点击第二个Download ...
- 674. Longest Continuous Increasing Subsequence
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
- PHP的设计模式之工厂模式
以前写代码老觉得,搞那么多乱七八槽的设计模式干嘛啊,这不是自己找罪受嘛.现在在这次的API开发过程中才晓得设计模式的厉害,真的是境界不到,永远不能领悟呀.还好坚持编码这么久,终于进入设计模式的运用了, ...
- JSAAS 平台实现 微信类似的TOKEN机制
在企业微信中,我们在调用微信接口时,我们需要首先获取token,然后根据token,调用API接口方法.这个token是有生命周期的,微信的token默认的生命周期是7200秒. 因此这个token可 ...
- 3.The significance of Books 书本的意义
3.The significance of Books 书本的意义 (1)A bookless life is an imcomplete life.Books influence the depth ...
- Source Routing
Source routing Followed by book_Principles and Practices of Interconnection Networks, p204. With sou ...
- fork、vfork、clone
三个都是用来创建新进程的函数 fork 概念 1)fork函数调用一次会返回两次,给父进程返回子进程的进程ID,给子进程返回0(这么设计的原因:父进程可以有很多子进程,没有一个函数可以让父进程知道所有 ...
- user表中存在多条相同user不同host用户信息时MySQL该匹配哪条记录登录?
问题: 当用户名相同,但主机名不同的多条记录.用户由不同主机登录时,选择使用那条记录来验证,数据库版本为:5.6.25 如:IP为192.168.141.241 hostname为vhost02主机上 ...