首页
社区
课程
招聘
[原创]在iOS上深度追踪HTTP/HTTPS/UIWebView请求的方法和插件
2014-4-15 22:58 26086

[原创]在iOS上深度追踪HTTP/HTTPS/UIWebView请求的方法和插件

2014-4-15 22:58
26086
HTTP 请求 Sniffer 很多工具可以做,至于 HTTPS 则使用 Charles 做中间人攻击也可以拿到全部 HTTPS 请求的细节,并且不限定于 iOS(具体方法这里就不说了,不是本文重点)。

但是,这些协议层的分析往往只能分析协议细节,想要深度追踪 HTTP/HTTPS/UIWebView 数据的生成细节的话,很多时候还是无能为力的。此时我们需要定位到数据生成的进程、模块、调用堆栈,进而找到相关代码继续做逆向工程分析——HttPeek 插件就是这样用途的插件,用法:

1. 在已越狱的系统中安装 Cydia Substrate;

2. 把 HttPeek.dylib 点此下载 放到 Cydia Substrate 的插件目录中(/Library/MobileSubstrate/DynamicLibraries),并重启设备或相关进程;

3. 操作重现,确保你期望监听的 HTTP/HTTPS/UIWebView 请求已发生;

4. 在 /tmp/%进程名称%.req 目录中获取改进程所有的 HTTP/HTTP/UIWebView 请求细节的日志,比如:

 FROM /System/Library/PrivateFrameworks/iTunesStore.framework/iTunesStore(0x3990e000)-<redacted>(0x399183e1=>0x0093e1)
 <(
     0   HttPeek.dylib                       0x0199fcb1 _Z10LogRequestP12NSURLRequestPv + 496
     1   HttPeek.dylib                       0x019a03cb _Z22$NSURLConnection_startP11objc_objectP13objc_selector + 50
     2   iTunesStore                         0x3991880b <redacted> + 1066
     3   iTunesStore                         0x399183a5 <redacted> + 360
     4   iTunesStore                         0x399148df <redacted> + 386
     5   iTunesStore                         0x3991f78b <redacted> + 598
     6   iTunesStore                         0x3991e421 <redacted> + 544
     7   iTunesStore                         0x399137cd <redacted> + 288
     8   iTunesStore                         0x39912c69 <redacted> + 620
     9   iTunesStore                         0x3991230d <redacted> + 276
     10  iTunesStoreUI                       0x39a636bb <redacted> + 354
     11  iTunesStoreUI                       0x39a63011 <redacted> + 164
     12  iTunesStore                         0x399137cd <redacted> + 288
     13  iTunesStore                         0x39912c69 <redacted> + 620
     14  Foundation                          0x315c07db <redacted> + 770
     15  Foundation                          0x31664995 <redacted> + 60
     16  libdispatch.dylib                   0x3b5bb68f <redacted> + 110
     17  libdispatch.dylib                   0x3b5bcd71 <redacted> + 220
     18  libdispatch.dylib                   0x3b5bcf59 <redacted> + 56
     19  libsystem_pthread.dylib             0x3b6f7dbf _pthread_wqthread + 298
     20  libsystem_pthread.dylib             0x3b6f7c84 start_wqthread + 8
 )>
 POST: https://play.itunes.apple.com/WebObjects/MZPlay.woa/wa/signSapSetup
 {
     "Accept-Language" = "zh-Hans";
     Cookie = "mzf_odc=ST1; xp_ci=3z22aB6Jz841z576zB2szwxWTgkNv; mzf_in=112351; s_vi=[CS]v1|2983AD4B05010B41-600001338012E27D[CE]; Pod=11; itspod=11; ns-mzf-inst=36-85-80-109-88-8294-112351-11-st11; session-store-id=d79638dc54b6dec6c1116ba8fe8e4d84";
     "User-Agent" = "AppStore/2.0 iOS/7.0.4 model/iPhone4,1 (6; dt:73)";
     "X-Apple-Client-Versions" = "GameCenter/2.0";
     "X-Apple-Connection-Type" = WiFi;
     "X-Apple-Partner" = "origin.0";
     "X-Apple-Store-Front" = "143465-19,21 t:native";
 }

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
     <key>sign-sap-setup-buffer</key>
     <data>
     AgAAANIISnQ/0ZM7Y5AO05eY5ugZbrkHNJoRsyFGn+P03FNKZTQmjN/Ha0pbt9Xkfgjz
     rrdfL3kxiThvq7duDjJp3GO7OatGg7Iyr7x/RJtClXmAoK2uL0rjxqyN36cgIbmYrP2I
     ZidsvuCHDj13S77kleOuKkuGFZN3JxIMm0OfJG7sqL/GO+2Upo8k0adRhiMj9asFhCxI
     LdxM2hcZ30cXKhV+fCRYybJm4UHX33lHAWed+6rty6gMzK+m/QbUWhTR2XCWOrEFs+qM
     Xq1QULQ3kJGPlVYFHaFoVDXRzfsNLTCsql353InFNdTxMdNTxqt9YqmmT+apJTHUq8xA
     +C9FOQ6G/u35sTGOZUUPxtjTiauYdfYgBs5ULIjwCQAAADCsp7cq8VDLhfHkRGX0idYF
     kNxP/T1GaG1V0U9kWE0gT5cFAPe464nMsRgxouM2wwEf4hsJkobd98rw1a4xrOAEtFn1
     iw==
     </data>
 </dict>
 </plist>


可以看到,Charles 等常规 Sniffer 软件中能看到的发送和接收细节都有,此外还有完整的 CallStack 记录,上例中一看就知道数据是 /System/Library/PrivateFrameworks/iTunesStore.framework/iTunesStore 这个模块发送的的请求,在 Xcode 的 iOS SDK 中可以找到这个模块,进而继续逆向分析它。

PS1:HttPeek 还支持 UIWebView Request 的监听。

PS2:源代码可免费获取(https://github.com/Yonsm/CeleWare/tree/master/HttPeek,也可以作为一个很完善的Substrate插件模板,无需引入Substrate.h,可快速添加Hook方法,配合Camo方案可以混淆代码中的符号以防止被逆向分析)。

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞1
打赏
分享
最新回复 (12)
雪    币: 174
活跃值: (205)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
rainyx 1 2014-4-16 09:34
2
0
不错,谢谢分享,另外求IO Tracer,不知道楼主有没有推荐的!
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
NightGuard 1 2014-4-16 11:24
3
0
这东西挺有用的,方便快速定位,
以前一般只能去各个模块搜索url
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
zhuliang 5 2014-4-17 13:11
4
0
这个有源代码,是好东西。
雪    币: 496
活跃值: (281)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
tishion 9 2014-4-20 23:57
5
0
我擦  这么多年了 楼主去哪里混了????
当年WM上用你的来电防火墙的那个软件就很膜拜你了!!
雪    币: 1906
活跃值: (712)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tigerwood 2014-7-5 23:27
6
0
在GITHUB上找不到了,楼主能发一份源码和编译好的库吗,谢谢!
fengchao16888@gmail.com
雪    币: 81
活跃值: (41)
能力值: (RANK:220 )
在线值:
发帖
回帖
粉丝
Yonsm 5 2014-7-10 10:35
7
0
更新了,支持更多的分析了,SSLRead/SSLWrite和禁用SSL证书检查的功能都有了。

源代码改了地址:https://github.com/Yonsm/HttPeek

说明:http://yonsm.net/httpeek/
雪    币: 573
活跃值: (959)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ChengQing 2014-7-22 23:03
8
0
请问 “配合Camo方案” 这个Camo是什么?
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zoooooom 2014-8-6 14:25
9
0
http://yonsm.net/camo/    Camo - Xcode 反逆向工程分析的混淆方案
雪    币: 573
活跃值: (959)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ChengQing 2014-8-13 14:53
10
0
32个赞
雪    币: 573
活跃值: (959)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ChengQing 2014-8-13 15:09
11
0
话说谁知道这是个什么错误?

Administratorde-iPhone:/var/mobile/Projects/Camo-master root# make
Making all for tool Camo...
Compiling Camo/Main.cpp...
In file included from Camo/Main.cpp:2:
Camo/CamoParser.h:434:17: error: default template arguments for a function
      template are a C++11 extension [-Werror,-Wc++11-extensions]
        template <char STARTCHAR = '{'> const char *ParseBlock(const char *code)
                       ^           ~~~
1 error generated.
make[2]: *** [obj/Camo/Main.cpp.62bc7d14.o] Error 1
make[1]: *** [internal-tool-all_] Error 2
make: *** [Camo.all.tool.variables] Error 2

已经解决了此问题
雪    币: 1906
活跃值: (712)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tigerwood 2014-11-21 15:09
12
0
多谢楼主分享了,呵呵
雪    币: 7
活跃值: (429)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
尘埃kr 2014-11-28 20:00
13
0
抓AppStore时,在注册账号中,会显示你的会话已超时
游客
登录 | 注册 方可回帖
返回