后渗透系列-Windows日志致盲与绕过

admin 2024年7月3日13:13:12评论2 views字数 2098阅读6分59秒阅读模式
 

前言

在渗透测试过程中,Windows日志往往会记录系统上的敏感操作,如添加用户、写计划任务、远程登录执行等操作,对于会审计的安全运维人员或者网络管理员来说,简直就是脱掉衣服走路,被看的一清二楚。对于比较高阶的渗透操作中,要讲究的是动作无感化,来无影去无踪。而对于防御者来说,了解常用的绕过方法也有助于更好的保护自己的系统。

              Windows日志介绍

Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。

Windows主要有以下三类日志记录系统事件:应用程序日志系统日志安全日志

1.1 系统日志

记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。

默认位置:

 %SystemRoot%System32WinevtLogsSystem.evtx

1.2 应用程序日志

包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。

默认位置:

%SystemRoot%System32WinevtLogsApplication.evtx

1.3 安全日志

记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。

默认位置:

%SystemRoot%System32WinevtLogsSecurity.evtx
Windows日志信息分析

对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,摘录一些常见的安全事件的说明:

事件ID 说明
4624 登录成功
4625 登录失败
4634 注销成功
4647 用户启动的注销
4648 试图使用显式凭据登录。
4672 使用超级用户(如管理员)进行登录
4720 创建用户
4774 帐户已登录映射。
4775 无法映射的登录帐户。
4776 计算机试图验证的帐户凭据。
4777 域控制器无法验证帐户的凭据
4778 到窗口站重新连接会话。
4779 从窗口站,会话已断开连接。
6005 表示计算机日志服务已启动,如果在事件查看器中发现某日的事件D号为6005,就说明这天正常启动了windows系统。
6006 表示事件日志服务已停止,如果没有在事件查看器中发现某日的事牛ID为6006的事件,就表示计算机在这天没关机或没有正常关机

每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:

后渗透系列-Windows日志致盲与绕过

对于比较熟练操作日志的管理员来说,很快就可以将日志筛选出来。如果看出来有高危的。那小则排查发现主机,大则溯源。这样你的权限就会摇摇欲坠。

有的人说了,那我删掉不就好了。确实可以,没问题。但是windows也考虑到这一点了。比如不能单条删除、删除会有日志ID:6006。删掉对于一个合格的红队人员来说,为下下策。如下我将介绍删除的方法:

      Windows日志的常用清除方法

  1. Wevtutil.exe(不支持删除多条)

操作系统默认包含,支持系统:Win7及以上

常用命令如下:

(1) 统计日志列表,查询所有日志信息,包含时间,数目

wevtutil.exe gli Application

后渗透系列-Windows日志致盲与绕过

(2) 查看指定类别的日志内容

wevtutil qe /f:text Security

后渗透系列-Windows日志致盲与绕过

(3) 删除该类日志所有内容

wevtutil cl Application

Application日志全部清除,数目为0

         Windows日志的绕过方法

  1. 绕过原理:

Windows日志对应于eventlog服务,找到该服务对应的进程svchost.exe,进而筛选出svchost.exe进程中具体实现日志功能的线程,调用TerminateThread结束线程,破坏日志记录功能

由于只结束了实现日志功能的线程,所以Windows Event Log服务没有被破坏,状态仍为正在运行

我的思路如下:

  1. 定位eventlog服务对应进程svchost.exe的PID
  2. 遍历该进程中的所有线程
  3. 判断线程是否满足条件

Windows Event Log 服务需要调用wevtsvc.dll,完整路径

%WinDir%System32wevtsvc.dll

后渗透系列-Windows日志致盲与绕过

并且,如果线程调用了wevtsvc.dll,就可以判读该线程实现了日志记录功能

  1. Kill掉记录日志线程,注意是线程

这里我使用C++完成了这个功能:

运行如下:

运行前:

后渗透系列-Windows日志致盲与绕过

 

运行后:

后渗透系列-Windows日志致盲与绕过

看到日志已经关闭

  1. 启动还原

可以使用启动服务方式重新加载线程

net start eventlog

或主机重启后自己加载。

               

原文始发于微信公众号(TeamSecret安全团队):后渗透系列-Windows日志致盲与绕过

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月3日13:13:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   后渗透系列-Windows日志致盲与绕过https://cn-sec.com/archives/2913313.html

发表评论

匿名网友 填写信息