Android判断ip为DNS劫持

网络劫持

我们经常会遇到一种case,就是我们的域名通过dns解析之后,实际返回的ip并不是我们真正的服务器ip,此时怎么分析确定呢?

java接口函数

InetAddress inetAddress = InetAddress.getByName("www.baidu.com");
String ip = inetAddress.getHostAddress();

我们常见的网络库,最终都是通过这个接口去获取ip的,通过hook这个接口函数,打印ip,能发现确实有一些不是我们自己的服务器ip

nslookup

首先使用win中的nslookup命令,用于从dns服务器解析ip对应的域名,或者根据域名解析ip

nslookup 202.98.24.122

能够简单的看下ip的域名,多数情况下看不到,怎么办?

nmap

nmap下载
nmap使用

Android判断ip为DNS劫持_第1张图片
aaa.jpg

使用nmap可以对ip进行分析,可以看到此ip开放了53端口,具备DNS服务器的特征,再观察到Haproxy是一种负载均衡服务器的特征,基本上判断出此ip为DNS服务器的负载均衡跳转服务器

怎么解决

遇到这种服务器跳转ip不会有问题,因为它还会把真正的ip返回给你,如果是其他的真正的被劫持的ip怎么办?

使用HttpDns解决,这里不细讲HttpDns的原理,网上都有

当然终极解决办法是Https

你可能感兴趣的:(Android判断ip为DNS劫持)