纯属蹭log4j2热度文,和安全没有直接的关系,本文只谈DNS以及日志应用; 通过dnslog.cn的截图,分析dnslog.cn的原理,基于此,介绍了可以获取更多信息的ceye的功能;在应用场景上,我们通过该原理提供了用户出口IP同本地DNS递归出口IP的对应关系,延伸出了排障场景和数据分析场景。
一、场景解释
简单解释下这个图,上半部分是dnslog.cn的图,生成了一个随机域名5test0s.dnslog.cn,并会在该页面打印出请求该域名的IP信息,这里的IP Address一般是服务器本身配置的DNS的外网出口IP,证明的是下部分的命令成功的在icloud.com登录功能所在的服务器成功执行,这个是一个可以执行命令的演示,如果这里的exp是一个echo "testtest" | passwd --stdin root,则有概率修改机器的root密码,如果是一个reboot,则有概率触发机器重启;如果是一个带有远控的木马,则有概率获得肉鸡一枚。
我们将图一的IP进行查看,看到是美国的苹果公司的外网ip,该IP大概率为提供icloud.com登录功能的服务器所配置的DNS的外网IP;我们在dnslog.cn获取到唯一域名后,在自己的设备上执行,可以看到我设备本身的DNS的外网递归出口为27.40.22.150的IP地址;
二、实现原理
当我们在dnslog.cn页面获取到子域名进行请求后,该子域名第一次请求必然经过dnslog.cn的权威服务器来获取RR配置,此时的第四步,Localdns和dnslog.cn的权威进行了请求交互,那么dnslog.cn的权威服务器就能知道,在什么时间,什么IP请求了什么域名,然后做日志回显即可完成该操作;(该网站提供的子域名TTL也是 190,所以在190s之内的请求就记录不了了,要等到下一个TTL周期进行请求。)
dnslog.cn提供的随机子域名的请求打印功能,可以很快的验证远程命令是否正常执行,以便给黑白帽子做判断是否进行下一步操作; 那么基于此原理,还能做什么?
三、其他场景探讨
如果我们现在是某个域名权威服务器的管理员,那么我们可以知道来自该域名的所有的请求,也就是上面图中的第四步;那么当我发现某个环境具备远程命令执行但是没有回显的时候,我除了想很快的验证下外,我还想知道是在什么角色之下,执行下whoami命令,显然是OK的,并且ceye提供的子域名TTL是1s,也就是大部分的请求日志都会记录在权威;
这样带来的可玩性就比较多了,不在一一列举,详情可见:http://ceye.io/payloads
那么,还有吗?我们知道,通过域名解析示意图的第四步的必然发生,我们可以在权威DNS上,看到递归DNS和权威的交互,从而获取到递归出口IP和请求的域名,那如果通过http请求获取到用户的实际外网IP,我们就形成了用户外网IP,用户递归出口IP的对应关系。华佗上IP相关的功能即是如此,https://ping.huatuo.qq.com/
该方案无论是通过产品预先埋点或用户触发,只需要访问一个http请求的时间,服务器端就可以拿到信息,有利于快速定位用户访问异常并进行针对性的解决。实现成本相对低廉,仅需一个权威服务器和http服务器即可完成;且只要可以访问互联网的终端设备均可完成覆盖;该场景除了用户问题排障方便外,可以将请求封装到应用本身,同过大量的请求来分析国内用户的网络出口同DNS递归出口之间的关系,将用户DNS问题预先一步解决;
四、总结
综上,我们通过dnslog.cn的截图,分析了dnslog.cn的原理,基于此,介绍了可以获取更多信息的ceye的功能,在场景上,我们通过该原理提供了用户出口IP同本地DNS递归出口IP的对应关系,延伸出了排障场景和数据分析场景。看了本文,有想法的同学可以联系herman,一起学习一起探讨~