削弱命令历史记录日志
对手可能会削弱命令历史记录日志,以隐藏他们在受损系统上运行的命令。各种命令解释器会跟踪用户在终端中输入的命令,以便用户可以回溯他们的操作。 在 Linux 和 macOS 上,命令历史记录保存在由环境变量 HISTFILE
指向的文件中。当用户注销系统时,此信息会刷新到用户主目录中的 ~/.bash_history
文件中。环境变量 HISTCONTROL
跟踪应该由 history
命令保存的内容,并最终在用户注销时保存到 ~/.bash_history
文件中。HISTCONTROL
在 macOS 上默认不存在,但可以由用户设置并会被尊重。 对手可能会清除历史记录环境变量(unset HISTFILE
)或将命令历史记录大小设置为零(export HISTFILESIZE=0
)以防止命令记录。此外,HISTCONTROL
可以配置为忽略以空格开头的命令,只需将其设置为“ignorespace”。HISTCONTROL
还可以设置为忽略重复的命令,将其设置为“ignoredups”。在某些 Linux 系统中,默认设置为“ignoreboth”,涵盖了前面的两个示例。这意味着“ ls”不会被保存,但“ls”会被历史记录保存。对手可以滥用这一点,通过在所有终端命令前加上空格来操作而不留下痕迹。 在 Windows 系统上,PSReadLine
模块跟踪所有 PowerShell 会话中使用的命令,并将它们写入文件(默认情况下为 $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
)。对手可以使用 Set-PSReadLineOption -HistorySavePath {File Path}
更改这些日志的保存位置。这将导致 ConsoleHost_history.txt
停止接收日志。此外,可以使用 PowerShell 命令 Set-PSReadlineOption -HistorySaveStyle SaveNothing
关闭对该文件的日志记录。(引用: Microsoft PowerShell Command History)(引用: Sophos PowerShell command audit)(引用: Sophos PowerShell Command History Forensics) 对手还可能利用网络设备上的 网络设备 CLI 禁用历史命令日志记录(例如 no logging
)。