黑客技能?没你想象的那么难!(7)

Android 平台上常用的 Okhttp、HttpUrlConnection 等网络请求库城市依赖这个形式的 DNS 理会。 我们深入阐明 InetAddress 的运行流程,其大抵如下: 在上述流程中我们可以知道,InetAddress 会有到 AddressCache 实验获取已缓存记录的行动,而这里 AddessCache 是一个 static 的 map 布局变量。 因此,在这里我们来对它做点小手脚 :

仿照系统的 AddressCache 结构一个我们本身的 AddressCahce 布局,不外它的 get 要领被替换为从我们 SDK 获取理会记录。

通过反射的形式用我们修改后的 AddressCache 替换掉系统的 AddressCache 变量。

这个偷天换日的操纵之后,HttpsUrlConnection 等 Java 层网络请求在举办 DNS 理会时就会是这样一个流程:

通过这个形式,我们可以或许完美办理 Java 层的 DNS SDK 接入问题,对付业务方来说,他们并不需要做任何 URL 替换操纵,对应的 HTTPS 场景下的问题也不复存在。 Java 层的接入办理了, 那么 Native 层呢? 我们知道在 Android 平台上,像 WebView、播放器等模块他们举办网络毗连的操纵都是在 native 层举办的,并不会挪用到 Java 层的 InetAddress 要领。 首先在 C/C++ 层,我们知道举办 DNS 理会会利用 getaddrinfo 或是 gethostbyname2 这两个函数。

别的我们还知道,在 Android 等 Linux 系统下,对付 .so 这类可共享工具文件会是 ELF 的文件名目。 因此从这些已知信息,我们可以获得下列一些环境: 我们的 App 中 a.so 中直接利用到了系统 libc.so 中的 getaddrinfo 函数, 那么按照 ELF 文件类型,在 a.so 的 .rel.plt 表中会有如下干系界说: getaddrinfo ==> 0xFFFFFF 。 .rel.plt 表中的映射干系为 a.so 的运行指出了 getaddrinfo 这个外部标记在当前内存空间中的绝对地点。 正常环境下,a.so 中执行到 getaddrinfo 的函数流程是这样的:

那么在这里,我们是否可以手动修改这个映射表内容,把 getaddrinfo 的内存地点替换成我们的 my_getaddrinfo 地点呢? 这样,a.so 在实际运行时会被拐到我们的 my_getaddrinfo 中? 实际上,确实是可行的。 我们实验在 SDK 启动后,对 a.so 的 .rel.plt 表举办修改,到达经受 a.so DNS 的目标, 修改后的 a.so 运行流程如下:

通过上面的方法,我们可以或许较量完美地经受 App 在 Java 层 和 Native 层 DNS 进程,实现业务方无任何特别窜改的环境下运用我们的 DNS SDK 优化结果。

SDK 上线后的结果表示 在实际运用中,我们取得了较量好的结果。得益于 DNS SDK 在掷中当地缓存率上的计策优化,我们的移动端产物在网络请求中 DNS 理会环节耗时获得低落, 从实际监控数据来看,完整网络请求的耗时也可以或许低落 100ms 阁下。

通过 HTTP DNS 的引入和 LocalDNS 优化进级计策,我们的网络请求乐成率有晋升,在未知主机等详细错误率表示出下降的趋势。 由于 SDK 层面自己做好了机动的计策设置,我们通过线上监控和设置也让各产物在效益和本钱之间取得一个最佳的均衡点。

七、汗青著名DNS挟制案例

2009年巴西最大银行遭遇DNS进攻,1%用户被垂纶。 2009年巴西一家最大银行Bandesco巴西银行,曾蒙受DNS缓存病毒进攻,成为震惊全球的““银行挟制案”。受到影响的用户会被重定向至一个假意的银行网站,该假意网站试图窃取用户暗码并安装恶意软件。DNS缓存病毒进攻是操作互联网域名系统中的裂痕举办的,没有实时打补丁的ISP很容易受到进攻。正当的IP会被某个网站给代替,纵然终端用户输入正确的网址也会被重定向至那些恶意网站。有近1%的银行客户受到了进攻,假如这些客户留意到了银行SSL证书在被重定向时呈现的错误提示,就不会上当被骗。

2010年1月12日 上午7时40分 “百度域名被挟制”事件。 其时有网民发明百度首页登岸产生异常环境。上午8时后,在中海内陆大部门地域和美国、欧洲等地都无法以任何方法正常登岸百度网站,而百度域名的WHOIS传输协议被无故变动,网站的域名被改换至雅虎属下的两个域名处事器,部门网民更发明网站页面被改动成玄色配景以及伊朗国旗,同时显示“This site has been hacked by Iranian Cyber Army”(该网站已被伊朗网军入侵)字样以及一段阿拉伯文字,然后跳转至英文雅虎主页,这就是“百度域名被挟制”事件。

2012年10月25日 日本邮储银行、三井住友银行和三菱东京日联银行各自提供的网上银行处事都被垂纶网站挟制。 据日本《日经电脑》报道,日本邮储银行、三井住友银行和三菱东京日联银行于2012年10月25日和10月26日别离宣布通告提醒用户,三家银行各自提供的网上银行处事都被垂纶网站挟制,呈现要求用户输入信息的虚假页面,在登录官方网站后,会弹出要求用户输入暗码等的窗口画面,本次虚假弹出式窗口页面的目标在于偷取用户网上银行处事的暗码。这种弹出式窗口页面上还显示有银行的符号等,乍看上去像真的一样。

2013年5月6日 史上最大局限DNS垂纶进攻预估已致800万用户传染。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsjsyd.html