一直在使用某娱乐软件,可是这个软件的会员费贵的离谱,实在是买不起。因此就想着怎么搞一下,绕过会员检测机制。其实就是针对这款软件作一个注册机。nginx
根据抓包还有查看源码,初步肯定了软件的鉴权机制,详细过程不谈,只说结论:鉴权部分由单独的服务器负责,经过 HTTPS 进行设备注册,密钥鉴权等操做。浏览器
经过代码逆向已经确认鉴权的具体协议。安全
了解软件的鉴权机制后,就能够制定方案了。两个方案:服务器
因为该软件的鉴权部分为单独服务器,因此采用方案二会简单不少。markdown
随便写一个 Web 服务,实现全部的鉴权接口,并没有脑返回成功。网络
而后在该机器上运行 nginx,配置监听鉴权服务器域名并转发给冒牌 Web 服务。工具
直接在路由器上使用 DNS 工具修改,或者直接更改 hosts 文件,将鉴权服务器域名指向冒牌服务的 ip。网站
事情到这里仅仅走过一半,剩下的才是重要的部分。spa
虽然咱们已经拥有了冒牌鉴权服务,也能够将请求劫持到冒牌服务上,可是由于咱们没有证书,不知道交接的暗号是什么,因此交易仍是没法达成。而经过正常途径咱们是没有可能弄到别人域名的 HTTPS 证书的。因此咱们须要懂点歪脑筋。code
首先咱们生成本身的根证书,而后用该根证书签发须要伪造的域名证书。将咱们的根证书安装信任到须要破解的设备上,再将伪造的域名证书配置到服务器上,这样一整个认证体系都是由咱们发起的,天然能够通行无阻。
这样,整个劫持计划就大功告成了。
这么轻松就绕过了鉴权机制,说实话仍是有点后背发凉。
虽然目前 Web 愈来愈安全,鉴权愈来愈复杂,可是只要稍微不注意,仍是会落入陷阱。再加上一些开发者的不负责任,致使互联网更加危险。
首先开发者应该重视证书。以这款软件为例,我尝试了下配置错误的证书,软件界面也只是提示了下证书错误,用户确认后就会忽视证书,直接被劫持,HTTPS 就是个摆设。
更有甚者,有的 App 直接忽略了证书错误,压根就不提示。这不管是对用户仍是对本身都是不负责任的。
在网上看到说,以安全著称的 360 安全浏览器,做为一款浏览器都忽视了 HTTPS 证书错误,实在是不知道脑子怎么长的。
做为用户,为了在信息时代保护本身,应该注意如下几点: