呀呀学语的孩童想用努力鉴证自己的成长!

【原创】iOS动态分析的一点分享

上一篇 / 下一篇  2015-05-06 16:17:32 / 个人分类:安全测试

XX同学让我就iOS动态分析做个分享,但我觉得自己还只是一点点开窍而已,所以就把学到的东西总结一下,欢迎拍砖!

W4OU6k1Z-zu0

 51Testing软件测试网 qJ9g%ph[@.s

学习iOS动态分析,首先需要对objective-c的基本语法有一些了解,这个google学习下吧。51Testing软件测试网 g _C4O#FniQz,\

接下来重新学习了一遍这个课程里面的CycriptGDB的教程,感觉比之前更深入一点。

9Z6_ Dqktq5e6X0

 

(][_|6HV0

我对二者的理解是:

6m"l8{*\G5ycA:w8~.fc0

Cycript既然是javascript的一个变种,应该主要也是作用于ViewController这一层,适用于篡改一些界面上的元素属性或者是方法,比如把本该无权限显示的view改成可以显示,暴露不该暴露的信息。

/@ wN9C]0

GDB感觉会更深入一点,可以通过设置断点,读取或篡改寄存器的值,比如读取用户的密码等confidential的信息,而这些信息只是后台使用,不大会显示在view上面。51Testing软件测试网7L K$kkQ

 

3Z9C.[o:h4xl%_u"i0

对产品的分析:

6?}7U1W e b.v2k8k0

如果产品是CS的结构(目前应该大部分都是这样),clientserver之间的交互需要通过身份验证,因此,即使我们通过一些手段绕过了登陆的界面,后续的信息也需要通过身份验证才能够获取。所以绕过login不是关键,关键是如何才能在用户登录后,获取到用户的身份验证信息,比如用户名,密码等。可以试试用GDB获取寄存器信息的方式。不过我还没尝试过,只是纸上谈兵。51Testing软件测试网8Xj1J+g0L/M

当然如果没有严密的server校验,想办法绕过登陆界面就会比较有用。

1P f]8@a rG Rur3yu0

另外,功能里面分角色,不同角色有不同的权限,client根据权限的不同会显示不同的UI。这样,我们就可以用Cycript来改改看,让本不该没有权限的人看到的东西显示出来。51Testing软件测试网&xh0G}9rp%o4P^

 51Testing软件测试网bu%xjW4| x8p X

使用GDBCycript分析的思路和实例:51Testing软件测试网6t [[rcSgq

前文说了,我只是一点点开窍而已,所以只能把网上学到和简单实践的东西总结一下,很多用法和实践还不清楚。51Testing软件测试网qW U:{W.@Sw

GDB:

Xf `ux0

总结下使用GDB进行运行时分析和操作数据的过程:51Testing软件测试网j%Osl3sXn

1.首先,要从class dump或者源码中先找到一个敏感信息的攻击目标,比如login相关的方法

7c2_ I iq0

2.为此方法设置断点

'y^['{U0

>break方法名:

]E.F1f,T0

>c51Testing软件测试网wEa(Gz'sP'z)s)` o n

3.接下来通过客户端操作来触发被设置断点的方法51Testing软件测试网 ^*~;sc(L!W

4. disas命令查看接下来要执行的指令,从结果中分析是否有其他敏感的方法名,以及objc_msgSendblx出现的地址51Testing软件测试网Z%E3hSS

5.为每一个blx设置断点,查看接收信息的类和方法,查看敏感的方法,并进一步获得$r2的值,甚至篡改值51Testing软件测试网2[!j-}j1iik pY

>po $r251Testing软件测试网po\q mu.J.s F

>set $r0

-B}5~rzS4S&?0

PS:详细内容可以参照上面课程的第212251Testing软件测试网[pflx%m W

实例~~:我还没有针对我们的client实践成功过,等再开窍了再补吧

)\"{}"S%v/yn+xD)ip0

 

n3c+m"X\b&X/l\d0

Cycript51Testing软件测试网Fc;ao D4f

1.首先操作client到你想要的界面

;J[L8^&p}0

2.通过Cycript命令获取当前界面的viewController,从结果可以知道当前的类51Testing软件测试网v {.F j y x

3.很庆幸,有源码!去源码里面搜索这个类,看看它都有一些什么属性和方法51Testing软件测试网d PE6G'?e-ip

4.如果很幸运发现了可能存在漏洞的属性和方法,就去改改看。对于我这样的菜鸟来说,最简单的莫过于参数为bool类型或者返回值为bool类型的方法了。改一下truefalse,可能发现UI就变化了,幸运的话,还可能显示了不该显示的东西

a[8Q r5?'P_!t#T0X0

 

;h^m8l\0

实例:

4dic/DV`.C%t0

昨天改了一个控制list显示的东东,分享一下

Ke5~^1vj!]0

场景:51Testing软件测试网od J&@!k2P_#v4RD

用户当前没有权限显示list,但是通过下面的方式操作,变成可以显示:

9n,n3Y:z)ox0

#cycript -p PROCESS_ID

R#I[6p5|4@:Ze"i,l/m0

//获取当前界面的viewController51Testing软件测试网f K%BLjW,az8k&gy

cy# var rootController = UIApp.keyWindow.rootViewController

.u3NR*_ hr? I0

cy# var visibleController = rootController.visibleViewController51Testing软件测试网4`|jx6D3?;{

//然后得到当前的viewController的类

IVC#en vKK0

51Testing软件测试网$s!g.WX#s"R

K9] ?9a _\ bM0

//到源代码里面搜索类名,看看这个类里面有没有可以篡改的有意义的信息。上面说了,菜鸟就从返回值是bool类型或者参数是bool类型的开始看吧。51Testing软件测试网Z ] b%`N?

发现了一个方法 参数为bool类型,使用objc的语法调用这个方法,并塞入参数为false

%h&X E-m4Y,l0

cy#[visibleController Method:false]51Testing软件测试网6RL8W.rpH%K%S

 51Testing软件测试网a7yK\f

//ok,本不该显示的东东显示出来了。也就是说,通过篡改运行时状态,把本不该具有权限查看list变成了有权限。

s2K2m)lEU0

 

W:N(PJ5p9VG0

看起来挺简单的吧。相信高手肯定能找到更多的突破口。

q8i.ED0nzUp(J0

 51Testing软件测试网"N'X#Lyl8K

说完如何动态分析的思路和方法,最重要的目的是如何来防护。虽然黑客不像我们能看到源代码,但是也能无障碍读取没有任何保护的头文件信息,对一目了然的属性和方法进行为所欲为的操作。对我们来说,虽然没有一劳永逸的解决方案,但是总是可以做一些事情来增加黑客破解的难度,简单说就是制造麻烦,让那些junior的或者急性子的黑客知难而退。

IoGcg0

 防护:

7n!~^J_0

1.检测设备是否越狱http://blog.csdn.net/yiyaaixuexi/article/details/2028692951Testing软件测试网\ R*IQ s

2.阻止GDB/LLDB debughttp://resources.infosecinstitute.com/ios-application-security-part-23-defending-runtime-analysis-manipulation/#article

6t0c!@3O\z-O9V6B+]0

3.代码混淆http://blog.csdn.net/yiyaaixuexi/article/details/29201699

-i:GfJIH2[]*F0

   说起代码混淆,也挺有意思一件事。起初我以为就是把那些一目了然的名字改成连自己看了都不知道是干啥的东西,比如login改成abc。所以就困惑了,那代码怎么写,怎么理解啊!自己都不知道这是干啥的。看了上面这个文章才知道原来有更高级的方式。虽然我没试过是否可行,不过还是打消了我之前的顾虑。

6s9L.u `"u,NF{L/H.u0

4.敏感业务逻辑的代码用C来写http://blog.csdn.net/yiyaaixuexi/article/details/2921041351Testing软件测试网t?#U1J7oV

 

P|8ngC zviN:v0

好记性不如烂笔头,尤其是我这个年纪的女人,汗!希望大家能看得懂。如果有一点帮助,就撒花鼓励一下,哈哈。

v6n)qwh;Y&f0

TAG: GDB gdb ios 测试 iOS 安全 动态分析 Cycript

心与梦的会晤的个人空间 引用 删除 秋爽   /   2015-05-20 13:52:37
5
 

评分:0

我来说两句

日历

« 2024-04-15  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 12847
  • 日志数: 7
  • 图片数: 1
  • 文件数: 1
  • 建立时间: 2006-12-12
  • 更新时间: 2015-05-06

RSS订阅

Open Toolbar