防抓包(证书攻击)策略-iOS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防抓包(证书攻击)策略-iOS相关的知识,希望对你有一定的参考价值。

参考技术A 2.1把证书机构签完的公钥证书放到工程里名称为"server.cer"
2.2设置AFSSLPinningMode

使用AFSSLPinningModePublicKey和AFSSLPinningModeCertificate方法基本可以防止青花瓷等的证书攻击

所有方法都是有漏洞的,iOS的app够安全,但是圈内依然有一群逆向工程师

方法1中在使用Class-Dump还是能够找到方法并且运行时替换或者直接hook方法进行修改返回逻辑,动态库注入方式,再使用企业签名把ipa包进行 重新签名ios-app-signer , fir发布 。

方法2中在逆向工程师眼里也是很简单破解的,app砸壳,再显示包内容,依然可以直接把你证书放在青花瓷中使用。

只是提高了破解难度,有树叶遮羞总比裸露在外面好一点

ios开发防止App被抓包

ZXRequestBlock

实现iOS应用底层所有网络请求拦截(如ajax请求拦截),包含http-dns解决方法,有效防止DNS劫持,用于分析http,https请求,禁用/允许代理,防抓包
用到第三方库 ZXRequestBlock
1,安装
通过CocoaPods安装

pod 'ZXRequestBlock'

手动导入
将ZXRequestBlock拖入项目中。
导入头文件

#import "ZXRequestBlock.h"

使用方法
拦截全局请求

[ZXRequestBlock handleRequest:^NSURLRequest *(NSURLRequest *request) 
    //拦截回调在异步线程
    NSLog(@"拦截到请求-%@",request);
    dispatch_async(dispatch_get_main_queue(), ^
        self.blockTv.text = [self.blockTv.text stringByAppendingString:[NSString stringWithFormat:@"拦截到请求--%@\\n",request]];
    );
    //在这里可以将request赋值给可变的NSURLRequest,进行一些修改(例如根据request的url过滤单独对一些请求的请求体进行修改等)然后再return,达到修改request的目的。
    return request;
];

禁止网络代理抓包(开启后将无法通过网络代理抓包,通过Thor,Charles,Burp等均无法抓取此App的包,且在代理网络下App内部请求不受任何影响)

[ZXRequestBlock disableHttpProxy];

允许网络代理抓包【默认为允许】

[ZXRequestBlock enableHttpProxy];

启用HTTPDNS(将会直接从本地或http://119.29.29.29 进行DNS解析,是一种避免DNS劫持的措施)

[ZXRequestBlock enableHttpDns];

关闭HTTPDNS【默认为关闭】

[ZXRequestBlock disableHttpDns];

禁止所有网络请求

[ZXRequestBlock cancelAllRequest];

恢复所有网络请求

[ZXRequestBlock resumeAllRequest];

https://github.com/SmileZXLee/ZXRequestBlock

以上是关于防抓包(证书攻击)策略-iOS的主要内容,如果未能解决你的问题,请参考以下文章

防抓包破解(HTTP.Debugger)

手机做了防抓包,如何抓包

app抓包打不开

移动端防抓包实践

移动端防抓包实践

安卓逆向 -- 防抓包破解(JustTrustMe)