今天早上,我的一位客户的朋友因为远程桌面配置不安全而遭受了黑客攻击,我被要求查看一下。(他们的所有商业文件都被 2018-Q1 版 Dharma 勒索软件加密了)。
幸运的是,Windows 事件日志没有被篡改,在单独查看每个日志(应用程序、安全、系统等)后,我能够拼凑出攻击的时间线:指出攻击者何时以及如何连接到机器,安装他们的恶意软件,我看到 Windows 服务被停止或崩溃,然后他们断开连接。
在 Windows XP 及更早版本中,只有应用程序、系统和安全日志需要查看,但从 Windows Vista 开始,在“应用程序和服务日志”树视图节点下有特定于应用程序的日志,并且随着每个新 Windows 版本的发布,需要检查的新日志越来越多 - 不幸的是您必须手动查看它们:似乎没有任何方法可以从所有这些日志中选择数据,然后应用日期/时间范围过滤器或进行文本搜索。
...或者有吗?
(我知道您可以在事件查看器中创建自定义日志视图,但要将另一个日志添加到搜索中并不容易,而且速度非常慢,事实上,自从在 Windows Vista 中重新设计以来,整个事件查看器 UI 都非常缓慢、滞后且笨拙)。它甚至建议您不要创建引用超过 10 个日志的视图:
您正在创建的过滤器或自定义视图引用了 10 个以上的事件日志。结果可能会表现不佳并消耗大量内存或处理器时间。要继续吗?
事实上,当我刚才创建一个引用我电脑上每个日志的视图时,它导致事件查看器锁定并冻结,然后最终显示零个项目 - 所以我猜这完全坏了。
是否有一个 PowerShell 命令可以运行来转储两个给定时间戳之间的所有日志中的所有事件?
答案1
答案2
Windows API 中日志名称限制为 256 个。您可以一次选择 256 个日志,也可以在 powershell 中以管理员身份执行如下操作:
get-winevent -listlog * | foreach-object { get-winevent -logname $_.logname }
get-winevent -listlog * | foreach { get-winevent @{logname = $_.logname;
starttime = '2/29' } -ea 0 } | where message -match 'whatever you want'