所以我试着在网上搜索答案,但没有找到答案。
是否有任何方法可以追溯哪个exe文件或应用程序导致计算机进行特定的DNS查询?
发布于 2015-05-13 02:49:32
任何应用程序都可以很容易地提交任何DNS解析请求。有许多可用的库,程序员可以选择以任何他们想要的方式执行解决方案。例如,在Python中,它是一行代码(可能是两行)。
import dns.resolver
answers = dns.resolver.query('dnspython.org', 'MX')要将实际的应用程序链接到UDP (假设它使用的是默认的UDP协议),它用来发送请求的“会话”是一项相当艰巨的任务。对于不同的操作系统(例如HomeProject或Microsoft ),有一些工具可以帮助实现这一目标。
请记住,解析过程大约需要几毫秒(DNS是在最快的协议之间竞争)。解析域名以获得它解析到的IP地址的过程是从stub resolver (需要对应域名的IP地址的“应用程序”)委托给Recursive DNS Server (又名RDNS)的。这类服务器的一个例子是谷歌在8.8.8.8和8.8.4.4的公共域名系统。您的ISP很可能会向您的家庭调制解调器/路由器提供它操作的RDNS服务器的IP地址,后者会将它们发送到连接到它的设备上(例如通过DHCP )。
除其他外,RDNS服务器将在其内部cache内存中存储一个与IP地址对匹配的域名,时间为一定时间(TTL,time )。这意味着,如果您在该时间范围内执行解析请求,RDNS服务器将不会关闭递归分解过程,而是使用它在内存中已经具有的匹配IP地址进行应答。因此,stub resolver将得到非常快的响应。例如,这是执行解决方案所需的时间:
;; Query time: 248 msec
;; SERVER: 192.168.1.1#53(192.168.1.1);; Query time: 40 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)您要做的是监视哪个应用程序在您的系统上打开一个UDP套接字并监听该套接字的响应,时间少于3秒(DNS的默认超时值)。如果您没有连续地监视流量和进程侦听特定端口,那么据我所知,没有办法得到匹配。对于将来的使用,您将能够通过查看所使用的端口来匹配进程和相应的DNS解析请求。例如,如果application 1打开端口7788,同时在网络流量中看到source port等于7788 (目的地很可能是53),那么您就有了应用程序!
https://security.stackexchange.com/questions/88873
复制相似问题