如何将 cmd.exe 内置命令记录到 Sysmon 或 Windows 事件日志?

Bra*_*esa 5 windows logging monitoring cmd sysinternals

使用 Windows 命令提示符并执行 cmd.exe 内置命令(例如 copy、del、echo、start 等)时,执行的相应命令行字符串不会填充到 Sysmon 事件 ID 1 - 进程创建中。Sysmon 事件仅概述 cmd.exe 映像,命令行值只是 cmd,而不是copy foo bar.

我的理论是,当打开 cmd 提示符时,仅执行 cmd.exe 进程,并进一步触发 Sysmon 事件 ID 1 - 进程创建的事件,但是,因为我执行的以下命令是 cmd.exe 内置命令(就像上面提到的那样),没有创建实际的新进程,这意味着没有创建新的 Sysmon 事件 ID 1,因此不会捕获命令行值。

如果我在同一命令提示符下运行其他 Windows 程序(例如 regedit.exe),我将触发一个新的 Sysmon 事件 ID 1 - 进程创建事件,其中包含执行的命令行字符串,例如regedit foo bar

为了进一步测试这个理论,我启用了 Windows 安全事件日志 - 4688(相当于 Sysmon 事件 ID 1 - 进程创建)来确定我的 Sysmon 配置是否是罪魁祸首。

查看端点上的 Windows 安全事件日志 - 4688 条目,再次测试我的问题后,我发现了相同的行为,Windows 事件日志中的命令行字符串值也是空白。仅显示来自 cmd.exe 生成进程的条目,但不会记录后续执行的内置 cmd 命令。但是,如前所述,如果我执行不同的 Windows 程序(如上面提到的 regedit),该活动将被捕获为新的 4688 事件,并执行相应的命令字符串。

有人有解决这个问题的方法吗?我试图在我的日志(Sysmon 或 Windows 安全事件日志)中捕获 cmd 提示符活动,特别是 cmd.exe 内置命令。

CMD.exe 内置命令:https://renenyffenegger.ch/notes/Windows/dirs/Windows/System32/cmd_exe/commands/index