iOS开发技术分享有些文章不一定是为了上首页投稿iOS安全

iOS逆向工程(10)破解任意 APP HTTPS 加密

2018-12-26  本文已影响31人  ForestSen

前提说明

涉及

重签名原理,动态注入,脱壳,本篇文章不做详细深入。

目录


一、背景说明

(1)举例
(2)结论

一、猜测 - 连接为 CONNECT 原因导致。

有听说请求Method 为 CONNECT 就无法进行抓包。

CONNECT结论

CONNECT 最终结论

二、Charles抓取HTTPS原理 (简述)

(1)探究
(2)结论

三、逆向思考 - 如何预防Charles 抓 HTTPS 包

进行思考与调研方案后,得出以下几种方法:
(1)判断是否代理访问
(2)使用 HTTPS 双向认证
结论
(1)探探APP 防止抓包的方法 猜测
(2)针对双向验证,破解的方法

四、思考解决方案

思考后,准备破解方法,目前想到有几种:

(1)SSL Kill Switch 越狱插件
(2)didReceiveChallenge 代理方法
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{
    //    NSURLSessionAuthChallengeUseCredential = 0, 使用(信任)证书
//    NSURLSessionAuthChallengePerformDefaultHandling = 1, 默认,忽略
//    NSURLSessionAuthChallengeCancelAuthenticationChallenge = 2,   取消
//    NSURLSessionAuthChallengeRejectProtectionSpace = 3,  这次取消,下载次再来问

    if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
        NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
        if(completionHandler)
            completionHandler(NSURLSessionAuthChallengeUseCredential,credential);
    }
}
(4)修改Reuquest 请求schme

例如以下代码

    NSMutableURLRequest * mutableReq = [request mutableCopy];
    NSString *originUrlStr = mutableReq.URL.absoluteString;
    NSString *newURLStr =  [originUrlStr stringByReplacingOccurrencesOfString:@"https" withString:@"http"];
    mutableReq.URL = [NSURL URLWithString:newURLStr];

五、得出最终结论

(1)SSL Kill Switch 越狱插件
(2)修改 Reuquest 和 信任所有证书办法可行,但是如何修改探探APP代码呢,是个问题。

六、实战 - 破解探探APP HTTPS网络请求

(1)首先设备下载探探APP,然后对探探APP进行脱壳。
(2)对探探APP进行重签名,注入NSURLProtocol代码。
(3)操作 - 把所有HTTPS 请求 转为 HTTP
(4)操作 - 信任所有证书

总结

相关文档

上一篇下一篇

猜你喜欢

热点阅读