跳转至

削弱命令历史记录日志

对手可能会削弱命令历史记录日志,以隐藏他们在受损系统上运行的命令。各种命令解释器会跟踪用户在终端中输入的命令,以便用户可以回溯他们的操作。 在 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)。