Sy *** on是微软的一款轻量级的体系监控东西,最开端是由Sysinternals开发的,后来Sysinternals被微软收买,现在归于Sysinternals系列东西。它通过体系服务和驱动程序完成记载进程创立、文件拜访以及 *** 信息的记载,并把相关的信息写入并展现在windows的日志事情里。
最近Sy *** on的开发人员又对Sy *** on进行了改善,在其中加入了一项新功用,答应Sy *** on记载DNS事情。尽管这为安全管理人员供给了一个很好的事情追寻办法,但任何事物都有其两面性,假如咱们作为进犯者,这意味着假如咱们植入的歹意软件或有效载荷测验通过DNS进行通讯,则Sy *** on就会呈现许多DNS进犯的监控目标,进犯者就能够运用这些目标做文章。
这篇文章中,我将介绍一种怎么逃逸 Sy *** on (Sy *** on 10.1版别)东西对 DNS 的监控的办法。
但在咱们开端寻求详细的逃逸办法之前,咱们需求首要布置一下测验环境。本文中,我运用的是@ SwiftOnSecurity的sy *** on-config,并运用以下指令装置Sy *** on:
sy *** on.exe -accepteula -i rules.xml
跟着咱们的测验环境的发动和运转,你将开端看到事情正在进行。对事情ID 22的过滤会集在“DNS查询”上,如下图所示:
正常运转之后,让咱们首要看看怎么履行日志记载。
怎么履行DNS日志记载?
为了了解逃逸检测时可用的选项,我想首要回忆一下一般的安全监控东西是怎么作业的。以Sy *** on为例, ETW被广泛用于 *** 连接监控等方面,ETW(Event Tracing for Windows)供给了一种对用户层应用程序和内核层驱动创立的事情目标的盯梢记载机制。因而,DNS监控也是以类似的办法履行。假如咱们运用以下指令,首要会发现监控是从ETW开端的。
logman -ets
在装置Sy *** on之后,我注意到的“Data Collector Set(Data Collector Set)”的称号很古怪,被命名为“我的事情盯梢会话(My Event Trace Session)”。假如咱们进一步深入研讨,咱们会发现这很或许是为Sy *** on供给DNS数据的原因:
通过一些搜索之后,主张在许多方位运用microsoft – windows – dn – client provider作为显现DNS查询信息的适宜方位。但在咱们将其作为逃逸办法之前,我一般喜爱与履行套件的服务穿插引证。本文,咱们运用了Ghidra,Ghidra是由美国国家安全局(NSA)研讨部分开发的软件逆向工程(SRE)套件,用于支撑 *** 安全使命。进入Ghidra后,搜索“我的事情盯梢会话”作为一个界说的字符串,以下便是咱们发现的函数:
此刻,咱们在SysMon64.exe中有一个引证盯梢称号的函数(此函数和称号也与Microsoft文档中供给的示例代码十分类似)。上面的EnableTraceEx2调用的第二个参数供给了指向以下数据的指针:
当然,这与上面logman截图中显现的用于{1C95126E-7EEa-49A9-A3FE-A378B03DDB4D}的Microsoft-Windows-DNS-Client的GUID相同。因而,咱们必定知道这是DNS查询搜集进程的履行办法。接下来,咱们需求了解在恳求DNS记载时怎么触发这些事情。
怎么知道DNS事情被记载?
让咱们运用一个常见的DNS API调用DnsQuery_A,并测验找出ETW数据或许呈现的方位。清楚明了的起点是dnsapi.dll,它承载API调用。将其与PDB一同加载到Ghidra中,咱们能够开端检查或许杰出显现正在运用的ETW的功用。因为咱们现已知道GUID与DNS事情相关联,因而在测验查找起点时,咱们将运用这个GUID作为数据点。有点令人惊奇的是,咱们是在DLL中找到了这个GUID,并引证了DNS_CLIENT的符号:
假如咱们遵从对符号DNS_CLIENT的引证,咱们能够看到它是在函数McGenEventRegister中分配的:
从DllMain调用此函数,这意味着创立了一个句柄(DNS_CLIENT_Context)来发送事情。
为了了解这个句柄在DLL中的实践运用情况,让咱们创立一个小应用程序,它将为咱们履行DNS查询:
#include
#include
int main()
{
DnsQuery_A("blog.xpnsec.com", DNS_TYPE_A, DNS_QUERY_STANDARD, NULL, NULL, NULL);
}
假如咱们编译它并在WinDBG中将其旋转,咱们能够运用以下指令增加一个断点,在读取DNS_CLIENT_Context的内存时触发它。
ba r4 DNSAPI!DNS_CLIENT_Context
康复履行咱们的应用程序后,不久咱们就会遇到一个断点,调用仓库如下所示。
详细来说,咱们会发现以下相关的DNS事情被记载的指示。
[1][2]黑客接单网