315晚会上曝光WIFI安全,演示微信、邮箱当场被黑,隐私密码都被披露,风险无处不在。对用户来说, 阿里移动安全已经支招:1,不接入无密码或无手机验证码的WiFi;2,手机不ROOT、不越狱;3,正规应用商店下载官网APP4;不在陌生APP上提 交个人重要信息;5装一个安全软件,如阿里钱盾;养成健康、良好的上网习惯等。而对于开发者来说,怎样更好的设计移动App来防护WIFI被劫持后的攻击 呢?
WIFI下的攻击原理
攻击者针对WIFI的攻击,一般通过中间人攻击,在中间人攻击过程中,正常APP应用经过WIFI的路径:
图一
被黑客劫持,攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,通过中间人攻击,攻击者可以进行HTTP或其他明文协议敏感信息的窃取,HTTPS通信破解,DNS劫持等:
图二
移动应用环境中针对HTTP或其他明文协议如POP3,SMTP,FTP,可通过各种代理、嗅探工具与PC环境下一样,嗅探所有明文协议的通信。并且攻击者也能对HTTPS进行攻击,这些攻击一般有:
1, 通过SSL分离+HTTPS->重定向等方式对HTTPS进行攻击,
SSL分离+HTTPS->重定向的原理就是:
- ARP欺骗,使得攻击者能截获所有目标主机的网络流量
- 攻击者利用用户对于地址栏中HTTPS与HTTP的疏忽,将所有的HTTPS连接都用HTTP来代替
- 同时,与目标服务器建立正常的HTTPS连接
- 由于HTTP通信是明文传输,攻击者能轻松实施嗅探
现成工具比如ssltrip,dSploit,zANTi都可实施此类攻击。
2,利用客户端不校验SSL证书(包含签名CA是否合法、域名是否匹配、是否自签名证书、证书是否过期):
该问题往往由几种编码错误情况引起:
-自实现的不校验证书的X509TrustManager接口的Java代码片段 (即将checkServerTrusted()方法实现为空,即不检查服务器是否可信):
-不检查站点主机域名与证书中的域名是否匹配(即将verify()函数直接返回true接受任意主机域名)的Java代码片段
-接受任意主机域名的Java代码片段
-当使用webview加载HTTPS网页时,覆盖重写Android系统WebViewClient类中的onReceivedSslError()函数,直接忽略证书校验失败并接受任意证书
解决方案
既然劫持有时不可避免,开发者更要责无旁贷保护用户,阿里移动安全建议开发者不要用HTTP协议来传输敏感信 息,在使用HTTPS进行通信时,切记不要同时支持HTTP。如果非得使用HTTP协议来传送敏感信息,使用聚安全SDK组件对输入数据进行加密。开发者 还可以使用聚安全SDK组件更多秘籍:通过审核审计,安全加固,对SSL证书进行强校验;通过数据加密,在WIFI劫持情况下也不影响敏感信息泄露;通过 安全签名,在WIFI劫持的情况下保证会话完整性,数据不被篡改或者伪造。保证WIFI被劫持的情况下最大限度的降低风险:
图三