IOS Application security Part1:
http://resources.infosecinstitute.com/ios-5-backups-part-1/
一共七部分. 另外我还会融合其它资料一道展开介绍。这个系列在内容上还存在不少不足。
一开始,就是越狱。。难道ios不越狱就没有啥事可做了吗? 其实这个系列我本来没有太多的兴趣。给越狱终端开发软件!不过现在有不少兄弟就是搞这个行当啊!
1、环境篇
越狱完毕就是安装一大堆软件,后续都用得着,也不见得马上都要装吆!
- OpenSSH – Allows us to connect to the iPhone remotely over SSH
- Adv-cmds : Comes with a set of process commands like ps, kill, finger…
- Sqlite3 : Sqlite database client
- GNU Debugger: For run time analysis & reverse engineering
- Syslogd : To view iPhone logs
- Veency: Allows to view the phone on the workstation with the help of veency client
- Tcpdump: To capture network traffic on phone
- com.ericasadun.utlities: plutil to view property list files
- Grep: For searching
- Odcctools: otool – object file displaying tool
- Crackulous: Decrypt iPhone apps
- Hackulous: To install decrypted apps
还可以装一堆hack软件,如BigBoss Recommended tools package( APT 0.6 Transitional, Git, GNU Debugger, less, make, unzip, wget and SQLite 3.x)。还可以装个本地的 MobileTerminal,无需SSH的。
运行一下MT,执行一条ps命令,效果如下:
本地登录完了,开始远程登录:
先把手机和pc置于一个wifi环境中!你懂的!
ssh缺省的密码是alpine.
顺便也把口令改一下吧,用这个命令passwd 。
如果你舍不得WIFI(省流量啊给女神买iPhone),USB也是不错的选择。
下载这个软件 http://code.google.com/p/iphonetunnel-usbmuxconnectbyport
SSH to iPhone over USB cable –
1
2
3
|
./iphone_tunnel -lport 2222
ssh -p 2222 root@127.0.0.1
password : alpine
|
Cydia 真的非常强大。使用前建议大家先更新。执行: apt-get update 即可。
还有个很重要的工具:class-dump-z 。详细信息:https://code.google.com/p/networkpx/wiki/class_dump_z
class dump是一个命令行工具,用来监测存储在Mach-O二进制文件的Objective-C运行时信息。它为类(class),分类(category)和协议(protocol)生成声明信息。这些信息与 otool -ov 命令提供的信息是一样的,但表示得更像正常的Objective-C的声明,所以它更紧凑,更易读。
先下载吧:
然后解压缩,拷贝到/usr/bin,这样随时随地玩。
2、网络数据包分析
现在不少应用还在空中裸奔,明文传输数据。如果你和一个屌丝在星巴克相遇,都用星巴克的免费网络,小心一点。屌丝可能正在监控你和糕富帅的谈话。如果你是男人,也要谨慎,屌丝还爱搞基。
FireSheep 之类的软件都可以拦截你的数据。如果你要在一个iphone终端上监控那些应用正在上网、都传输那些内容。最佳的选择就是设置一个代理。
其实代理就是你的计算机: 计算机安装 Burp Suite 之类的软件and navigate to Proxy->Options,
Edit proxy listeners – enter ‘port’ as 8080, disable ‘loopback only’ and select ‘support invisible’ 即可。
剩下的就是Enjoy your life。
但如果真的HTTPS加密传输的,也存在一些问题,因为https基于ssl,ssl会校验服务器证书的。现在整一个代理服务器,其实就破坏力端对端认证和加密机制。如果是浏览器应用,浏览器会校验服务器证书,如果是客户端应用,码农就得自己写校验证书的代码。但码农如果犯了错误,尤其是客户端应用,很容易把任何服务器证书认证通过。
HTTPS流程不了解的同志们建议好好看看SSL协商过程。 HTTPS分单向和双向认证,单向就是客户端(浏览器)验证服务器即可,客户端(浏览器)预制(本地保存)根证书用于验证。如果是双向认证,还需要发送客户端证书给服务器侧进行认证。
如果客户端在验证服务器证书的过程中放松了警惕,失去了党性原则。就可能被敌人使用一个假证书搞中间人攻击。相当于你好像是建立了ssl通道(和敌人建立了,和同志们失去了联络),但通道仅限于你和代理服务器。你还竟然和代理服务器协商了一个密钥。。。
容易被码农使用的认证api包括allowanyhttpscertificateforhost (NSURLRequest) 以及continueWithoutCredentialForAuthenticationChallenge(NSURLConnection) 。这些api容易让人失去原则。
如果我们坚持原则,服务器证书验证按照流程,系统就会提示“无效证书”。
但如果码农都坚持了原则,咋还捕获ssl信息呢?那就要走关系啊,要在Phone trusted certificates list里面添加一个根证书,然后用该证书签发一个代理服务器证书. 就可以建立和代理服务器的ssl通道了。从而监控https。
有时候网络流不光是http,https。还会有一些协议比如low level socket communication APIs (NSStreams, CFStreams). 上述的技术就不能拦截了。. 就可以用 tcpdump 监控了。非常简单。其实所有网络流都可以用tcpdump 监控了。
1
2
3
|
ssh root@iphone-IP
password: alpine
tcpdump -w traffic.pcap
|
然后用Wireshark之类的软件打开 .pcap f文件分析即可。
DNS spoofing 也可以用来做网络监控。。这个我不就不多说了,很多人都懂的!
.