51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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

前言


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


Windows日志介绍

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

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

1.1 系统日志

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

默认位置: *

 %SystemRoot%\System32\Winevt\Logs\System.evtx

1.2 应用程序日志

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

默认位置:


%SystemRoot%\System32\Winevt\Logs\Application.evtx

1.3 安全日志

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

默认位置: *

%SystemRoot%\System32\Winevt\Logs\Security.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也考虑到这一点了。比如不能单条删除、删除会有日志ID:6006。删掉对于一个合格的红队人员来说,为下下策。如下我将介绍删除的方法:








Windows日志的常用清除方法


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

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

常用命令如下:

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

wevtutil.exe gli Application

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

wevtutil qe /f:text Security

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

wevtutil cl Application

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


Windows日志的绕过方法


绕过原理:

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

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

我的思路如下:

  1. 定位eventlog服务对应进程svchost.exe的PID

  2. 遍历该进程中的所有线程

  3. 判断线程是否满足条件

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

%WinDir%\System32\wevtsvc.dll

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

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

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

运行如下:

运行前:



运行后:

看到日志已经关闭

启动还原

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

net start eventlog

或主机重启后自己加载。

赞(4)
未经允许不得转载:工具盒子 » 后渗透系列-Windows日志致盲与绕过