Loading ...
Windows 入侵痕迹清理

一、Windows 日志清理

1. 系统核心日志

Windows 系统的日志详细记录了系统运行过程中的各种事件,是追踪入侵行为的重要依据。核心日志主要包括应用程序日志、系统日志和安全日志,它们分别存储在特定路径下:

  • 应用程序日志:位于%SystemRoot%\System32\Winevt\Logs\Application.evtx,记录应用程序运行相关事件,可能包含登录关联的程序活动,如某些恶意程序在登录时自动启动并记录在该日志中。

  • 系统日志:路径为%SystemRoot%\System32\Winevt\Logs\System.evtx,记录系统组件运行事件,例如服务启动、驱动加载等,入侵时对系统服务的操作可能会在此日志中留下痕迹,如异常的服务停止或启动。

  • 安全日志:存于%SystemRoot%\System32\Winevt\Logs\Security.evtx,是记录用户登录 / 注销、权限变更、账户管理等安全事件的核心日志,成功登录、登录失败、特权使用等入侵相关操作都可能被记录其中。

清理这些核心日志可采用多种方法:

  • 图形界面操作:通过运行eventvwr.msc打开事件查看器,在其中找到对应的应用程序日志、系统日志和安全日志,右键选择 “清除日志” 选项。这种方式直观简单,但可能会在系统中留下操作记录。

  • 命令行清理:

    • 使用 PowerShell 命令Clear - EventLog -LogName Application, System, Security -ErrorAction SilentlyContinue,能够一次性清除应用程序、系统和安全日志。其中,-ErrorAction SilentlyContinue参数用于忽略可能出现的错误,确保清理过程顺利进行。

    • 借助wevtutil工具,它功能强大,可实现日志的查看、检索、导出和清除等多种操作。例如,在命令提示符(CMD)中执行wevtutil cl Applicationwevtutil cl Systemwevtutil cl Security命令,分别对应清除应用程序日志、系统日志和安全日志。若要同时清除这三类日志,可输入wevtutil cl security system application

  • 利用脚本停止日志记录:通过编写脚本遍历事件日志服务进程(专用svchost.exe)的线程堆栈,标识并杀死事件日志线程,从而使系统无法收集日志。但需注意,在完成痕迹清理后,应使用net start eventlog命令恢复日志服务,以避免引起管理员怀疑。

2. 远程桌面登录记录

当攻击者通过远程桌面连接目标系统后,会在本地留下相关连接记录,这些记录可能成为被追踪的线索,因此需要及时清理:

  • 注册表中的连接历史记录:

    • 位置 1:HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default,存储默认连接记录。

    • 位置 2:HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers,保存详细连接历史。 可通过命令行进行清理,在 CMD 中输入:

    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"

    其中,reg delete命令用于删除指定注册表项,/va参数表示删除所有值,/f参数强制删除,不提示确认。最后一行reg add命令用于重建空键,避免因注册表项缺失导致系统异常。

  • RDP 文件痕迹:用户文档目录下的Default.rdp文件(%USERPROFILE%\Documents\Default.rdp)记录了远程桌面连接配置。使用以下命令可将其删除:

    del "%USERPROFILE%\Documents\Default.rdp" /f /q

    这里/f参数强制删除只读文件,/q参数表示安静模式,不显示确认信息。

3. 日志伪造与混淆

单纯清理日志可能会引起管理员的警觉,为了更好地掩盖入侵痕迹,可采用日志伪造与混淆的手段:

  • 利用eventcreate命令伪造日志:该命令可用于创建自定义事件并将其写入事件日志。例如,以管理员权限在 CMD 中执行eventcreate /l Security /t INFORMATION /id 4624 /d "伪造的正常登录事件",此命令创建了一条 “成功登录” 的伪造安全日志,其中/l参数指定日志类型为安全日志,/t参数设置事件类型为信息,/id参数指定事件 ID,/d参数添加事件描述。通过伪造正常的日志事件,可降低真实入侵痕迹的辨识度。

  • 批量生成无关日志填充:编写脚本或使用工具批量生成大量无关紧要的日志信息,填充到日志文件中,使真实的入侵痕迹淹没在海量的日志数据中。但在生成这些日志时,需注意模拟正常系统活动的频率和类型,避免因日志内容异常而被察觉。

二、服务相关日志清理

1. Web 服务日志(以 IIS 为例)

IIS(互联网信息服务)是 Windows 系统中常用的 Web 服务器,其日志记录了大量与网站访问相关的信息,对于入侵痕迹的清理至关重要:

  • 日志存储位置:默认路径为%SystemDrive%\inetpub\logs\LogFiles,按照站点和日期分目录存储,例如W3SVC1目录对应某个具体网站的日志。日志文件中包含访问 IP、请求路径、状态码等信息,这些信息可能暴露攻击者的访问行为。

  • 清理方法:

    • 直接删除日志文件:由于日志文件在 IIS 服务运行时可能被锁定,因此需要先停止 IIS 服务。在 CMD 中执行net stop w3svc停止服务,然后使用del "%SystemDrive%\inetpub\logs\LogFiles\W3SVC1\*.*" /f /q命令删除指定目录下的所有日志文件,最后执行net start w3svc重新启动 IIS 服务。

    • 使用工具定向删除:利用CleanIISLog工具可定向删除含特定 IP 的记录。在 CMD 中执行CleanIISLog.exe "C:\inetpub\logs\LogFiles\W3SVC1" 192.168.1.100,该命令可清理指定路径中包含192.168.1.100这个 IP 地址的日志记录,有效消除攻击者 IP 在日志中的痕迹。

2. 数据库日志(以 SQL Server 为例)

数据库系统同样会记录大量操作日志,对于保护数据库安全和追踪异常操作具有重要意义。以 SQL Server 为例,其日志主要包括错误日志和事务日志:

  • 错误日志:默认路径为%ProgramFiles%\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log\ERRORLOG,记录数据库启动、连接错误等信息。若攻击者在入侵过程中对数据库进行了非法连接或操作,可能会在此日志中留下错误记录。

  • 事务日志:默认与数据库文件存于同一目录(如.ldf文件),记录数据库操作事务,例如数据的插入、更新、删除等操作。入侵时对数据库数据的篡改等操作可能会被记录在事务日志中。

清理方法如下:

  • 收缩并截断事务日志(需数据库权限):在 SQL Server 查询分析器中执行以下 SQL 语句:

    USE master;
    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE;
    DBCC SHRINKFILE (事务日志文件名, 1);
    ALTER DATABASE 数据库名 SET RECOVERY FULL;

    上述语句先将数据库恢复模式设置为简单模式,然后使用DBCC SHRINKFILE命令收缩事务日志文件,最后再将恢复模式设置回完整模式。通过这种方式,可在一定程度上清理事务日志中的部分历史记录,但不会完全删除所有日志信息。

  • 直接删除错误日志(需停止 SQL Server 服务):在 CMD 中执行net stop MSSQLSERVER停止 SQL Server 服务,然后使用del "C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log\ERRORLOG" /f /q命令删除错误日志文件,最后执行net start MSSQLSERVER重新启动服务。但直接删除错误日志可能会影响数据库的故障排查和审计功能,需谨慎操作。

3. 计划任务日志

计划任务日志记录了计划任务的创建、执行、失败等事件,若攻击者利用计划任务维持权限或执行恶意操作,相关痕迹可能会记录在该日志中:

  • 日志存储位置%SystemRoot%\System32\Winevt\Logs\Microsoft - Windows - TaskScheduler%4Operational.evtx

  • 清理方法:在 CMD 中执行wevtutil cl "Microsoft - Windows - TaskScheduler/Operational"命令,即可清理计划任务操作日志,有效消除利用计划任务进行入侵的痕迹。

三、命令行历史记录清理

1. PowerShell 历史记录

PowerShell 是 Windows 系统中强大的命令行工具,其历史记录可能包含攻击者执行的敏感命令,需要及时清理:

  • 历史文件位置%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt,该文件存储了用户在 PowerShell 中执行过的命令历史。

  • 清理方法:

    • 使用 PowerShell 命令Remove - Item "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt" -Force,可直接删除历史文件。-Force参数用于强制删除,即使文件处于只读状态也能删除。

    • 在当前 PowerShell 会话中,执行Clear - History -Force命令可清除内存中的命令历史,防止这些命令在会话结束时被写入历史文件。

    • 若要临时禁用 PowerShell 历史记录,可执行$env:PSModulePath = $null命令,该命令通过间接禁用PSReadLine模块,阻止命令历史记录功能。但需注意,此操作仅在当前会话有效,重新启动 PowerShell 后历史记录功能将恢复。

2. CMD 历史记录

CMD 作为 Windows 传统的命令行工具,虽然默认不将命令历史写入文件,但在某些情况下(如使用doskey命令)可能会记录命令历史,并且一些第三方工具也可能记录 CMD 命令:

  • 内存缓存中的历史记录:CMD 的命令历史临时存储在内存缓存中,可通过关闭 CMD 窗口来清除当前会话的命令历史。但如果使用了doskey命令,其记录的命令历史可能不会因关闭窗口而清除。

  • 使用doskey命令时的历史记录清理:若使用了doskey命令记录历史,可通过执行doskey /reinstall命令重新安装doskey,从而清除已记录的命令历史。此外,也可通过修改环境变量来限制doskey记录的命令数量,在系统环境变量中找到ComSpec变量,将其值修改为%SystemRoot%\system32\cmd.exe /K doskey /history:50(这里/history:50表示最多记录 50 条命令历史),这样可减少历史记录的数量,降低敏感命令被留存的风险。

四、避免使用易留痕迹的工具

1. 记事本(notepad.exe)替代方案

记事本是 Windows 系统中常用的文本编辑工具,但使用它可能会在%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent目录下留下最近打开文件的记录,为攻击者带来风险。可采用以下替代工具:

  • type命令:用于查看文本文件内容。例如,在 CMD 中执行type C:\test.txt,即可在命令行中显示C:\test.txt文件的内容,与使用记事本打开文件查看内容的效果类似,但不会留下文件打开记录。

  • echo命令:不仅可用于在命令行中输出文本信息,还可用于简单写入文件。例如,执行echo "这是要写入文件的内容" > C:\new.txt,该命令将双引号内的内容写入到C:\new.txt文件中,实现了简单的文件写入功能,避免了使用记事本带来的痕迹问题。

2. 资源管理器替代方案

资源管理器在使用过程中会在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs中留下文件访问记录,为防止这些记录暴露攻击者的操作,可使用 CMD 命令行进行文件和目录操作:

  • 目录操作:使用cd命令切换目录,例如cd C:\Program Files可进入C:\Program Files目录;使用dir命令查看目录内容,dir C:\可列出 C 盘根目录下的所有文件和子目录。

  • 文件操作:使用del命令删除文件,如del C:\test.txt可删除C:\test.txt文件;使用copy命令复制文件,copy C:\source.txt C:\destination.txt可将C:\source.txt文件复制为C:\destination.txt。通过这些 CMD 命令行操作,可避免在注册表中留下文件访问记录,降低被追踪的风险。

五、文件时间属性修改

文件的创建时间(CreationTime)、修改时间(LastWriteTime)和访问时间(LastAccessTime)可能会暴露文件被篡改的痕迹,因此需要对这些时间属性进行同步调整:

1. 时间属性查看

在 Windows 系统中,可通过多种方式查看文件的时间属性:

  • 文件属性窗口:右键单击文件,选择 “属性”,在弹出的属性窗口中,“详细信息” 选项卡下可查看文件的创建时间、修改时间和访问时间。

  • 命令行查看:在 CMD 中使用dir命令,例如dir C:\test.txt,命令输出结果中会显示文件的创建时间、修改时间和访问时间。在 PowerShell 中,使用Get - Item命令,如Get - Item C:\test.txt,也可获取文件的详细信息,包括时间属性。

2. 时间属性修改技巧(PowerShell)

  • 同步目标文件与参照文件的时间:假设要将C:\temp\malware.exe文件的时间属性修改为与C:\Windows\System32\notepad.exe文件一致,可在 PowerShell 中执行以下命令:

    $refFile = Get - Item "C:\Windows\System32\notepad.exe"
    $targetFile = Get - Item "C:\temp\malware.exe"
    $targetFile.CreationTime = $refFile.CreationTime
    $targetFile.LastWriteTime = $refFile.LastWriteTime
    $targetFile.LastAccessTime = $refFile.LastAccessTime

    上述命令先获取参照文件和目标文件的对象,然后分别将目标文件的创建时间、修改时间和访问时间设置为与参照文件相同。

  • 批量修改目录下文件时间:若要批量修改C:\temp目录下所有文件的时间属性,使其与参照文件一致,可执行以下命令:

    $refFile = Get - Item "C:\Windows\System32\notepad.exe"
    Get - ChildItem "C:\temp\*" -File | ForEach - Object {
        $_.CreationTime = $refFile.CreationTime
        $_.LastWriteTime = $refFile.LastWriteTime
        $_.LastAccessTime = $refFile.LastAccessTime
    }

    该命令首先获取参照文件对象,然后使用Get - ChildItem命令获取C:\temp目录下的所有文件,通过ForEach - Object

    循环遍历每个文件,并将其时间属性设置为与参照文件相同,从而实现批量修改文件时间属性的目的。

六、安全删除文件

普通的del命令删除文件只是将文件标记为删除,文件数据实际上仍存储在磁盘上,可通过数据恢复工具还原。为了彻底删除文件,防止数据被恢复,需采用专业的安全删除方法:

1. cipher命令(系统自带)

cipher命令是 Windows 系统自带的加密工具,可用于安全删除文件:

  • 功能原理:使用cipher命令的/W参数,它会用随机数据多次覆盖已删除文件的磁盘空间,从而防止数据被恢复。覆盖过程通常包括用0x000xFF以及随机数依次覆盖,增加数据恢复的难度。

  • 示例:在 CMD 中以管理员权限执行cipher /w:D:\,该命令会对 D 盘上的未使用空间进行覆盖操作,包括已删除文件所占用的空间。执行后,D 盘上已删除文件的磁盘空间将被覆盖三次,有效防止这些文件被恢复软件还原。

2. sdelete工具(SysinternalsSuite)

sdelete是 SysinternalsSuite 工具包中的一款文件安全删除工具,功能强大:

  • 功能特点:它能够多次覆盖文件内容后再进行删除操作,支持对单个文件、目录以及磁盘空闲空间的清理。可通过设置不同的参数来调整覆盖次数和操作

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇