iOS逆向开发(1):基础工具 | ssh | scp | socat

小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗?

小程:理解为逆向行驶也没错。一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段。

iOS上的逆向开发,是一件有趣的事情(虽然有时很痛苦),而且还可能给你带来收益。

在接下来的几篇文章,小程会尝试介绍iOS逆向的一系列的知识与技能:从基础工具的使用,到目标类的定位、目标代码的调试,再到注入微信的实战示例。

本文介绍iOS逆向的基础工具的使用。

硬件方面,你需要一台iOS设备(iphone/itouch/ipad,以下都称为手机或iphone),以及一台电脑。电脑方面,小程建议你使用mac电脑,因为它的环境可以解决很多无谓的问题,当然如果你有很强的解决问题的能力并且坚持用windows来安装mac虚拟机的话,也是可以的。

系统环境方面,你需要给手机越狱。说到越狱,小程就想起scofield:

但这里的越狱,是指对手机有更多的操作权限,比如在手机运行命令行终端、往root等目录写入数据、安装非来自AppStore的应用,等等。但注意一点,越狱后,沙盒的机制还是存在的,比如你的App还是不能往其它App的Document目录写入数据。

小程在写这篇文章时,10.2以上的系统还不支持越狱,所以准备用于越狱的系统应该是10.2或低于10.2。使用pp助手、爱思之类的工具进行越狱。

解决了硬件和系统越狱的需求后,接着就是逆向的基本工具了,这些工具可以让你逼近攻击目标。

(1)ssh

ssh,就是Secure Shell,即安全外壳协议(ssh协议可以防范ip或dns欺骗,加密而且压缩数据,被广泛使用),常用于远程登陆。这里指的是ssh客户端。

如果最终是用yalu102来越狱的话,越狱后自带ssh(但scp要自行安装),注意,不要再安装ssh(比如openssh或ssh connect等),否则即使在Terminal上可以执行ssh命令也是连接不上--就是要Terminal上执行不了ssh命令,如果安装了openssh,要卸载掉。

试用ssh:

  • 在手机的wifi页面,找出当前使用的ip。
  • 在电脑上(mac机自带ssh客户端),使用ssh登陆设备:ssh root@ip
  • ssh登陆到手机,之后操作的就是这台手机,电脑上的键盘就是手机的键盘。

小白:喂,登陆时需要写密码,是多少呢?

ios设备的两个默认ssh账号:
root,默认密码:alpine
mobile,默认密码:alpine

ssh登陆示例:
$ ssh root@192.168.1.101
或者:
$ ssh -l root 192.168.1.100
-----
root@192.168.1.101's password:(输入密码,回车)
810:~ root#

登陆后,修改root密码:
# passwd

登陆后,修改mobile密码:
# passwd mobile

每次ssh到手机,都要经过密码验证。如果想简化这一步,那么可以使用iosod来建立这个信任,前提是,已经安装了iosopendev:
cd /opt/iosopendev/bin
./iosod sshkey -h 192.168.1.101
这样就对这个ip建立信任,之后ssh登陆时不再输入密码。

上面已经提到了iOSOpenDev,这是一个编写注入代码的实用工具,后续再具体介绍。

使用ssh时可能遇到的一个问题,对于ios10.1.1(其它10.x也一样),在越狱后,用ssh是登陆不上的,原因参考http://blog.csdn.net/dianshanglian/article/details/62422627

以下是这个网页的内容摘录:


1、SSH连接不上
在手机上安装Mterminal,运行su,输入root密码,进入root权限,执行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修改/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist
把里面有个参数127.0.0.1:22改成22保存,重启手机即可
UUID在每个人手机上不一样

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

(mila432.com/scp,如果已经不存在的话,那需要另找scp执行文件)


注意,如果是用“越狱助手”来越狱的,那上面的目录改为../Application/越狱助手/yalu102.app/..

(2)scp

scp,就是secure copy,是基于ssh的远程拷贝。

一般安装完ssh客户端后就可以使用scp指令(否则,可以参考上面办法下载scp来使用)。

比如,把hellowrold文件,拷贝到手机的root用户的根目录,命名为hello:

scp helloworld root@192.168.1.100:hello

比如,拷贝手机里面的内容到电脑:

scp root@192.168.2.21:/User/Documents/Cracked/* .

在ssh与scp安装完毕后,就可以做一些“攻击”的事情了。

比如,让手机重启

ssh root@192.168.1.101
(810:~ root#) killall SpringBoard

比如,在手机上执行hello wrold程序

首先编译出执行文件,使用clang:
clang -o helloworld -arch armv7 helloworld.c -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk

拷贝执行文件到手机:
scp helloworld root@192.168.1.100:hello

登陆手机并执行:
ssh root@192.168.1.101
cd /
chmod +x hello
./hello

(3)socat

socat,是用来查看系统日志的工具。系统各个进程的动态信息、所有app的NSLog信息,都可以通过socat观察到。

安装

在cydia搜索SOcket CAT来安装,或者:
apt-get install socat   --前提是安装了apt-get

使用

socat – UNIX-CONNECT:/var/run/lockdown/syslog.sock
>watch

为了跟踪信息,我们经常在hook某个APP后,再自行加上NSLog。但是,有一些APP,为了性能,会在发布版本中把NSLog重写为“什么都不做”,那这时再使用NSLog就看不到输出。这时,可以考虑用NSFileHandl来记录到文件,再打开文件查看输出,比如:

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/logme.txt"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager createFileAtPath:path contents:nil attributes:nil];
g_logfile = [NSFileHandle fileHandleForWritingAtPath:path];
[g_logfile retain];
[g_logfile seekToEndOfFile];
NSString* info = @"-------MicroMessengerAppDelegate::didFinishLaunchingWithOptions\n";
NSData* idata = [info dataUsingEncoding:NSUTF8StringEncoding];
[g_logfile writeData:idata];


总结一下,本文简介了iOS逆向的准备工作,以及基础工具ssh/scp/socat的使用。这三个工具在以后的实战中会经常用到,虽然你也可以用其它工具来达到同样的目的(比如用p2p助手可以直接拷贝文件,甚至可以查看系统日志输出),但小程还是建议你掌握它们的使用。



原文地址:https://www.cnblogs.com/freeself/p/10620992.html

时间: 2024-08-26 15:52:52

iOS逆向开发(1):基础工具 | ssh | scp | socat的相关文章

20个可以帮你简化iOS app开发流程的工具

这里推荐20个可以帮你简化iOS app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是立刻编程,而是设计UI和创建原型,这样你才能知道app如何运行,根据用户体验需要做哪些调整. App Cooker AppCooker 不仅是一个创建原型的优秀工具,它提供的许多功能还可以帮助你将程序发布到App store中.它集成了Dropbox,Box.net和photo roll,你可以直接

iOS逆向开发(3):锁定APP的目标类与函数 | reveal | lldb

之前介绍了怎么获取APP的所有类的结构信息,这个有什么用呢?用处大了,比如以这一步为基础,下一步通过注入来做更多研究工作. 注入的最小单位是函数,实际上,编译执行的程序在编译后,类就不复存在了,留下来的只是二进制代码(指令或数据都是一样的二进制代码).所幸的是,跟我们打交道的,并不是二进制代码(那会困难很多),而是函数,而且是某个类的函数. 那么,在用classdump拿到成千上万个类与函数后,哪个函数才是我们关心的呢?怎么锁定它们呢? 本文介绍锁定目标类与函数的可行的办法. 基本上小程研究的目

iOS逆向工程之Reveal工具的安装、配置与使用

今天博客内容比较简单,不过还是蛮重要的.经常有小伙伴在QQ上私下问我,说博客中是如何使用Reveal查看AppStore中下载应用的UI层级的,那么就在今天这篇博客中作为一个主题来统一的介绍一下吧.虽然网上相关资料一抓一大把,不过还是有必要详细的总结一下的. 还是那句话,“工欲善其事,必先利其器”,在之前的多篇博客中不止一次用到这个强大的分析工具Reveal,之前我们用它来查看自己App以及从AppStore中下载的App的UI层级,效果都是非常不错的.Reveal在逆向工程中不仅仅是用来查看U

iOS逆向开发(7):微信伪装他人

上一节小程介绍了微信在进入"附近的人"时修改位置信息的办法,这一次,小程来修改"自己"的信息,伪装成别人. 但是,这里的伪装只是"本地的伪装",也就是看到"自己"变成了他人,而实际上,在服务端(别人看到的)还是没有变化的,那就更不会迫使被伪装的人下线了,也不能以对方的身份发送信息或发朋友圈. 伪装成别人的表现是,小程手机上的微信信息完全变成目标对象的信息,连相册也变成对方的相册.所以,如果对方是好友则相册全是对方发朋友圈的内容

逆向开发基础工具

小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,从大唐而来到西方取经,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情(虽然有时也会很痛苦),而且还可能给你带来收益. 在接下来的几篇文章,小程会尝试介绍iOS逆向的一系列的知识与技能:从基础工具的使用,到目标类的定位.目标代码的调试,再到注入微信的实战示例.读者如果感兴趣,可以关注小程的微信公众号"广州小程",获得后续的更新. 本文介

iOS开发UI基础—IOS开发中Xcode的一些使用技巧

iOS开发UI基础-IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编辑器 cmd + 回车           显示主窗口 cmd + 0             导航窗口 option + cmd + 0    工具窗口 在.m & .h之间切换           control + cmd + 上/下

iOS开发之工具篇-20个可以帮你简化移动app开发流程的工具

本文转载至 http://www.cocoachina.com/ios/20130402/5926.html 如果想进入移动app开发这个领域,你总能从别的开发者或者网上或者书上找到各种各样的方法和工具,对于新手来说,还没有摸清门路就已经陷入迷茫了.这里推荐20个可以帮你简化app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是立刻编程,而是设计UI和创建原型,这样你才能知道app如何

iOS开发系列--IOS程序开发概览ios基础

iOS开发系列--IOS程序开发概览 2014-08-04 19:42 by KenshinCui, 72273 阅读, 81 评论, 收藏,  编辑 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的知识是你日后开发IOS的基础,没有那些知识你开发IOS会很痛苦,现在很多开发人员做开发都是一知半解,程序质量确实令人担忧,所以还是希望大家能够熟练掌

iOS开发最最基础之打包Ad Hoc应用

首先,介绍下什么是Ad Hoc? Ad Hoc简单的定义是:把iOS工程打包成ipa包后,通过Ad Hoc证书签名做分发测试的行为. Ad Hoc证书可以分为两类: 1.99美元的开发者账号生成的. 2.299美元的开发者账号生成的. 由于我没有299美元的开发者账号,故本文只针对99美元的开发者账号的情况作阐述. 接下来,我将从以下5点进行操作描述: 1.AppID(如果有配置好了,可以忽略). 2.certificate 3.device 4.profile 5.Xcode打包 1.AppI