iOS逆向(一)-环境介绍和基本工具的使用

逆向有门槛,入坑需谨慎

==iOS逆向环境介绍==

本文越狱环境:iPhone6 iOS 10.0.2 (推荐使用iOS 8 )

===Drawin 体系===

Darwin是由苹果电脑于2000年所释出的一个开放原始码操作系统。Darwin 是MacOSX 操作环境的操作系统成份。苹果电脑于2000年把Darwin 释出给开放原始码社群。

终端命令输入uname -a显示操作系统名称:
gongyouqiangdeMacBook-Pro:~ Yochi$ uname -a
Darwin gongyouqiangdeMacBook-Pro.local 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64

  • Darwin是一种类似unix的操作系统,他的核心XNU[1],XNU是一种混合式内容结合了Mach[2]与BSD[3]两种内核

    • 主流的类unix:
      • Linux 由Linus Torvalds 研发的,代表发行版本CenOS,Redhat,Ubuntu,Debian,openWRT等
      • Mac OS X的Intel部分
      • freeBSD[4] 由加州大学伯克利分校基于UNIX研发的(UNIX变种)
      • Solaris 由Sun(现在的Oracel) 开发的UNIX商业版本
  • BSD[3] 实现在Mach[2]的上层,这一层提供的API 支持了POSIX标准模型。在XNU中主要实现了一些高级的API与模块

    • UNIX 进程模型
      == e.g fork, vfork, wait, waitpid, exec等==

    • POSIX 线程模型即pthread,以及相关的同步功能
      == e.g pthread_create, pthread_mutex(线程互斥锁) ==

    • UNIX的用户与组管理
      == e.g root用户,mobile用户, chmod等==

    • 网络协议栈(BSD Socket API),符合POSIX模型
      ==e.g socket(); bind(); listen(); accept();connect();
      gethostbyname(); gethostbyaddr()等伯克利套接字API

    • 文件系统/设备系统
      == e.g Filesystem Hierarchy Standard(文件系统层次化标准)==

  • iOS, OSI, ISO 含义

    • iOS 苹果公司开发的移动操作系统

    • OSI 是Open System Interconnection的缩写,意为开放式系统互联。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

    • ISO是国际标准化组织。上面的OSI模型由改组织制定。一般UNIX系统都基于符合POSIX标准和ISO C 标准

      • POSI表示可移植操作系统接口(Portable Operating System Interface)
      • ISO C 标准, C语言标准接口
  • 为什么要越狱?

    • 突破iOS沙盒机制(sandbox)
      == 沙盒是一种安全机制,为运行中的程序提供隔离环境。沙盒在启动的时候可以设置运行的程序是否可以访问网络、文件、目录等==
iOS逆向(一)-环境介绍和基本工具的使用_第1张图片
sandbox.jpg

==Cydia - 越狱iOS的软件管理平台==

Cydia 之父 - Jay Freeman(杰·弗里曼)

  • 越狱是合法的

  • 安装OpenSSH,为电脑和越狱手机提供连接环境
    == 在Cydia中搜索OpenSSH并安装,这样iOS上面就可以开启SSH服务。SSH服务默认绑定端口号22==

1、使用SSH命令连接iOS,默认登录密码"alpine"

 iOS连接wifi,设置中可以看到ip地址,也可以改成静态IP地址
  ssh -p 22 [email protected]      

Windows、UNIX和VMS系统使用SecureCRT这款理想工具连接运行。

iOS 10注意:(iOS 10以下按流程走)
=:)yalu102自带了SSH
无需安装OPENSSH,安装了请先卸载
无需安装OPENSSH,安装了请先卸载
无需安装OPENSSH,安装了请先卸载
=:)SSH连接不上,在手机上安装Mterminal(终端)以此输入如下命令:

$su
默认密码:alpine
$ps aux|grep dropbear

(1)如果你看到的进程没有dropbear
输入:
/usr/local/bin/dropbear -F -R -p 22
然后就可以连接了,重启依然有效

(2)如果你看到进程是这样:/usr/local/bin/dropbear -F -R -p 127.0.0.1:22
意思是只能数据线重定向连接SSH,
如果你想改成WIFI可以访问那么用Filza或iFile软件进入系统文件夹修改(一个个的app点击进去找到yalu102.app就可以了)
/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist

把里面有个参数127.0.0.1:22改成22保存,重启手机即可

2、使用scp命令可以传输文件

新建终端窗口输入下列拷贝命令:

  拷贝本地文件到客户端
   $scp  filename  [email protected]:/tmp                 
  从客户端拷贝文件到本地
   $scp [email protected]:/tmp/filename  /tmp/   

scp传文件时错误 scp: /usr/tools: not a regular file 不能成功传送 
解决方案
1:有可能没权限 chmod 777
2:  在使用scp时加上-r 参数scp -r [[email protected]:/usr/tools/xxxx](mailto:[email protected]:/usr/tools/xxxx)      

iOS 10注意修复SCP:(iOS 10以下按流程走)

你会发现yalu102自带的SSH无法用WINSCP传输文件,因为缺少了scp
(1)cydia里面安装wget
(2)在mterminal里面登陆root权限
(3)执行以下命令
wget mila432.com/scp
ldid -S scp
chmod 777 scp
mv scp /usr/bin/scp

3、修改默认密码(cydia中OpenSSH有详细说明)

passwd root
passwd mobile
  • 安装包管理工具
    == 在Cydia中搜索 APT 0.6 Transitional并安装 ==

1、SSH登录iPhone后,可在电脑终端输入如下命令:

     apt-get update                    【更新所有的源】

     apt-get upgrade                 【更新所有通过apt-get安装的程序】

     apt-get install  packagename         【安装软件包】

     apt-get remove  packagename      【删除软件包,不删除依赖包,不删除配置文件】

     apt-get remove --purge packagename  【删除该软件包,不删除依赖包,删除配置文件】

     apt-get autoremove packagename       [删除该软件包,删除依赖包,不删除配置文件]

     apt-get autoremove --purge packagname    【可以删除所有依赖包+配置文件】

     apt-cache search string             【搜索含有该string字段的软件包】

     apt-cache show packagename     【详细显示该软件包的信息】

     apt-get clean                   【清除apt-get安装的软件包备份,可以释放储存空间,不影响软件正常使用】

2、使用apt-get 安装软件包
== e.g 安装traceroute ==

    发现找不到软件包
    apt-get install traceroute
    
    如果不知道软件包名称,也可以用关键字搜索
    apt-cache search traceroute
    
    apt-get install  network-cmds

3、安装必要的工具

    apt-get install  ping       //发送icmp报文,检查网络状况
    
    apt-get install  ps         //查看进程信息
    
    apt-get install  find       //查找文件
    
    apt-get install tcpdump     //抓包工具
    
    apt-get install top         //查看实施的进程信息
    
    apt-get install vim         //文本编辑工具
    
    apt-get install  network-cmds   //-arp, ifconfig, netstat, route, traceroute

4、工具的使用

ping www.baidu.com -c 4 -s 600
-c 数目:在发送指定数目的包后停止。
-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节

ps aux 指令
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A   显示所有程序。
3)ps c    列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e  此参数的效果和指定"A"参数相同。
5)ps e   列出程序时,显示每个程序所使用的环境变量。
6)ps f    用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H    显示树状结构,表示程序间的相互关系。
8)ps -N   显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s     采用程序信号的格式显示程序状况。
10)ps S     列出程序时,包括已中断的子程序资料。
11)ps -t <终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u   以用户为主的格式来显示程序状况。
13)ps x   显示所有程序,不以终端机来区分。
14)ps -l     較長,較詳細的顯示該PID的信息

在根目录开始查找文件名为ping的文件
find / -name ping     

在/tmp目录中查找包含'hello'字符的文件,-r表示包含子目录
grep -r 'hello*' /tmp 

top命令:是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
显示系统内存使用情况
top -l 1 | head -n 10 | grep PhysMem 
       
tcpdump命令:用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。
tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

实用命令实例
默认启动
tcpdump
普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

监视指定网络接口的数据包
tcpdump -i eth1
如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。 

监视指定主机的数据包
打印所有进入或离开sundown的数据包.

tcpdump host sundown
也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包

tcpdump host 210.27.48.1 
打印helios 与 hot 或者与 ace 之间通信的数据包

tcpdump host helios and \( hot or ace \)
截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) 
打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.

tcpdump ip host ace and not helios
如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截获主机hostname发送的所有数据

tcpdump -i eth0 src host hostname
监视所有送到主机hostname的数据包

tcpdump -i eth0 dst host hostname
监视指定主机和端口的数据包

如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命

$tcpdump tcp port 23 and host 210.27.48.1
对本机的udp 123 端口进行监视 123 为ntp的服务端口
tcpdump udp port 123 

抓包结束命令:ctl+c


  1. XNU,由苹果电脑发展的操作系统内核,被使用于Mac OS X中。它是Darwin操作系统的一部份,跟随着Darwin一同作为自由及开放源代码软件被发布。XNU是X is Not Unix的缩写。 ↩

  2. Mach是一个由卡内基梅隆大学开发的用于支持操作系统研究的操作系统内核,为了用于操作系统之研究,特别是在分布式与并行运算上。是最早实现微核心操作系统的例子之一,是许多其它相似的项目的标准。 ↩ ↩

  3. BSD (Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统,在1977至1995年间由加州大学伯克利分校开发和发布的。历史上, BSD曾经被认为是UNIX的一支——"BSD UNIX", 因为它和AT&T UNIX操作系统共享基础代码和设计。在20世纪80年代,衍生出了许多变形的UNIX授权软件。比较著名的如DEC的Ultrix及Sun公司的SunOS。1990年代,BSD很大程度上被System V4.x版以及OSF/1系统所取代,晚期BSD版本为几个开源软件开发提供了平台并且一直沿用至今。今天,“BSD”并不特指任何一个BSD衍生版本,而是类UNIX操作系统中的一个分支的总称。 ↩ ↩

  4. FreeBSD是一种类UNIX操作系统,是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支。FreeBSD 为不同架构的计算机系统提供了不同程度的支持。并且一些原来BSD UNIX的开发者后来转到FreeBSD的开发,使得FreeBSD在内部结构和系统API上和UNIX有很大的兼容性。由于FreeBSD宽松的法律条款,其代码被好多其他系统借鉴包括苹果公司的macOS,正因此由于MacOS X的UNIX兼容性,使得macOS获得了UNIX商标认证。 ↩

你可能感兴趣的:(iOS逆向(一)-环境介绍和基本工具的使用)