Dns 有没有办法阻止getaddrinfo显示主机名的真实IP地址?

Dns 有没有办法阻止getaddrinfo显示主机名的真实IP地址?,dns,hosts,getaddrinfo,Dns,Hosts,Getaddrinfo,假设有一个程序打开HOSTS文件以确保它没有被重新路由到某个地方。(它想连接到www.example.com,但它确保您在HOSTS文件中没有相应的条目) 因此,您决定添加一个DNS条目,以便www.example.com真正指向123.123.1.123。这样就行了 但是程序会变得更智能,并调用getaddrinfo来确定是否将其重新路由到123.123.1.123。是否有任何方法隐藏此信息,或者有任何其他方法更改给定主机名的IP地址 有没有办法使www.example.com的正常IP指向1

假设有一个程序打开HOSTS文件以确保它没有被重新路由到某个地方。(它想连接到www.example.com,但它确保您在HOSTS文件中没有相应的条目)

因此,您决定添加一个DNS条目,以便www.example.com真正指向123.123.1.123。这样就行了

但是程序会变得更智能,并调用getaddrinfo来确定是否将其重新路由到123.123.1.123。是否有任何方法隐藏此信息,或者有任何其他方法更改给定主机名的IP地址

有没有办法使www.example.com的正常IP指向123.123.1.123

我能想到的只是可能,但我想知道是否有更好的办法。也许有办法保护Windows主机文件不被读取

或者有没有办法欺骗数据包,使其看起来好像来自“www.example.com”?(假设我完全控制软件发送/接收数据包)

getaddrinfo()
查找来自不同来源的网络名称解析。让我们简单地说,它只是先在HOSTS文件中查找,然后在DNS服务器中查找。以下是一些方法,您可以尝试欺骗您的智能程序,使其认为“www.example.com”是合法的123.123.1.123(复杂性越来越高):

  • 使用HOSTS文件。正如您已经指出的,程序可以轻松地检查此文件,因此这看起来不太可能。保护主机文件不被读取也不会有帮助,因为这样您将无法使用它解析名称

  • 使用本地DNS服务器。这取决于您的程序的智能程度,这不容易做到——毕竟我们在谈论DNS欺骗。在简单的情况下,您可以将此服务器配置为“example.com”区域的权威DNS服务器,但如果您想要真正令人信服(并且我们不在
    getaddrinfo()
    的范围内),您可能还必须对根服务器配置进行一些更改,只是为了避免程序重复检查某些根服务器或“com”TLD服务器(我知道所有这些配置都可以在bind中完成,我不知道其他DNS服务器)。即使如此,该程序可能会争辩说它不会信任本地DNS服务器。即使您使用的不是“127.0.0.1”,而是您的网络IP,它也可能检测到DNS地址属于本地计算机。让我们更进一步

  • 使用远程DNS服务器。这里没什么好说的。就像你以前做的一样,只是在一台外部计算机上。如果程序不愿意从您自己的网络或任何专用网络(例如192.168.1.X)接受DNS,您可能必须设法将其置于公共IP上。在这一点上,该计划需要格外谨慎,才能在欺骗中找到漏洞。但是假设是这样,假设它已经硬编码了DNS根服务器的IP地址——它会发现它一直都是一个阴谋!那就多走一步

  • 根据您的技巧配置网络中的路由器。我们开始走极端,但是,假设您完全控制网络,这是让该程序真正相信它在合法土地上的最终解决方案。只需设置路由,即可将根DNS IP映射到DNS服务器。就这样。我们现在必须完成,对吗

    对吧?

    不出所料,一些人认为这一切太简单了,所以他们提出了,这基本上是对协议的扩展,要求DNS数据用加密密钥签名。因此,它归结为一个事实,如果这个地狱般的程序知道合法DNS服务器的公钥,并且要求所有的请求使用DNSSEC,那么它可能会使你的所有努力付诸东流

  • < > >强>从DNS根服务器窃取DNSSEC签名密钥。<强>我恐怕不能在这里真正帮助您,但请您考虑到这一点时分享您的经验。


    对不起,我不明白。您是说您已将
    www.example.com 123.123.1.123
    的条目添加到您的主机文件中,程序调用
    getaddrinfo(“www.example.com”)
    并得到与123.123.1.123不同的结果?或者程序是否明确检查了
    特定的
    IP地址123.123.1.123?@Frank抱歉,我应该澄清一下。该程序实际上打开HOSTS文件并搜索其中包含“www.example.com”的条目。如果它发现了,它会抱怨。不如设置一个本地DNS服务器,将www.example.com解析为123.123.1.123,并将所有其他内容转发到您的“真实”DNS服务器?
    getaddrinfo(“www.example.com”)
    会检测到它解析为123.123.1.123。有什么办法可以隐瞒吗?你确定会这样吗?如果有人在事后检查正确的IP,为什么要首先使用DNS?此外,修补DLL是否是一个选项?如果正在使用DNSSEC,则下一步是使用QUANTUMINSERT.:-D如果没有通过TLS访问目标服务器,那么更改通信量就很容易了。如果它使用TLS,那么除非程序使用证书固定,否则很容易使用受损的证书颁发机构来欺骗服务器。;-)@克里斯·杰斯特·杨:你说得对,我对那件事并不在意(我不是真正的安全专家)。天哪,在国家安全局/GCHQ的生活不是更轻松吗。