The more know the more need to learn.

DNS日志记录方法

Posted on By Green_m

经过yuange大佬的提示,快速定位后门的方法之一,检查dns记录,但是yuange博客的命令试了一下不起效果。

于是自己搜索了一下,把结果记录在这。

Windows开启dns cache log

直接上命令:

net stop dnscache

type nul > %systemroot%\system32\dnsrsvlr.log
type nul > %systemroot%\system32\dnsrslvr.log
type nul > %systemroot%\system32\asyncreg.log

cacls %systemroot%\system32\dnsrsvlr.log /E /G "NETWORK SERVICE":W
cacls %systemroot%\system32\dnsrslvr.log /E /G "NETWORK SERVICE":W
cacls %systemroot%\system32\asyncreg.log /E /G "NETWORK SERVICE":W

net start dnscache

这里有个小问题,这个dnsrslvr.log文件只会记录一小段时间的dns记录,过一段时间会刷新重新记录,目前还没找到不刷新的方法。

参考链接:

http://blog.nsfocus.net/open-dns-client-service-log/

解析DNS log

去查看dns日志文件dnsrslvr.log会发现比较乱比较杂,我写了一个简单的py脚本去解析这个日志文件。

脚本功能很简单,就是正则取域名的那一项,当然你还可以添加其他的操作,如解析dns记录,查询dns whois信息,查询归属地之类的。

目前过滤了isatap。

文件重定向的坑

很早就踩过这个重定向的坑无数次了,没想到用python的时候又踩了一次,还搞了很久,最后Stack Overflow解决的,不得不说Stack Overflow真是神器。

具体的说就是32位python在c:\windows\system32\ 目录下时会自动跳转到sysWOW64 目录下,解决方法是调用kernel.dll里Wow64DisableWow64FsRedirection

和Wow64RevertWow64FsRedirection来禁用掉windows的文件重定向。然后直接访问就行了。

最终脚本见:

https://github.com/Green-m/Demo/blob/master/dns_log_parse.py

windows的ETW方式

windows 8.1和 windows server 2012 R2及以上版本的操作系统,可以下载补丁直接以标准的windows日志格式记录dns log,windows server 2016可以直接开启。

由于时间关系这里我就没测试了,官网的文档写的非常详细。

微软官方文档:

https://technet.microsoft.com/en-us/library/dn800669(v=ws.11).aspx

使用 powershell 脚本提取 dns 缓存

在 windows 8 和 2012 以后的系统,可以使用 ps 脚本来提取dns缓存记录。

PS C:\> . .\Get-CimDNSCache.ps1 # include file
PS C:\> Get-CimDNSCache -Name *microsoft* -Type A

脚本地址:https://github.com/PSGumshoe/PSGumshoe/blob/master/CIM/Get-CimDNSCache.ps1

参考文章: https://www.darkoperator.com/blog/2020/1/14/getting-dns-client-cached-entries-with-cimwmi