Socket通信保护概论,Android系列
一.整个通信过程全程加密,防止数据在传输过程中被劫持
1.使用TLS1.2、1.3系列、去除TLS1.0系列
2.双向认证、客户端,服务器双向验证,防止伪造request
3.证书最好固定、防止使用假证书进行中间人攻击
二.防止抓包、数据被拦截
1.虽然使用了TLS加密,但仍然可使用Brup Suite、Fiddler进行抓包。代码中加入检测代理、VPN操作
三.应用层也需加密数据,使Hook不出明文信息
1.才有AES+HMAC签名(对称加密,速度效率高)
2.RSA或是ECC交换密钥(用来生成AES密钥)
3.时间戳+随机数(防止请求重放攻击)
4.服务端收到数据,先使用HMAC校验数据是否被篡改,未被篡改,再进行解密操作
四.防Frida、Xposed,防止被Hook,自身是否被调试
1.一旦监测到这些情况,则直接关闭服务以及App,避免被分析
五.反编译、反汇编保护
1.代码混淆(ProGrard、R8),不可以完全防止逆向,但可以增加逆向成本、时间
2.核心代码使用C、C++进行编写(JNI调用)
六.服务端验证
1.HMAC校验数据完整性
2.限制同IP多次频繁请求
3.监测异常流量
4.日志行为监控
对于一般攻击来说,TLS加密、SSL Pinning即可,但是对于高强度攻击,就需要多层加密、反Hook、服务端验证
攻与防是个长期博弈的过程,就像盾与矛一样,只有不断更新技术。做到及时防护