T1070.003: 清除命令历史记录
摘要
除了清除系统日志外,攻击者还可以清除受感染账户的命令历史记录,以隐藏入侵期间所采取的操作。各种命令解释器会跟踪用户在终端中输入的命令,以便用户可以追溯他们所做过的操作。 在 Linux 和 macOS 上,可以通过几种不同方式访问这些命令历史记录。登录时,此命令历史记录被跟踪在由环境变量 <code>HISTFILE</code> 指向的文件中。当用户注销系统时,此信息被刷写到用户主目录中名为 <code>~/.bash_history</code> 的文件中。这样做的好处是允许用户在不同会话中返回他们以前使用过的命令。攻击者可能通过手动清除历史记录(<code>history -c</code>)或删除 bash 历史文件 <code>rm ~/.bash_history</code> 来从这些日志中删除他们的命令。 攻击者还可能利用网络设备上的 [Network Device CLI](https://attack.mitre.org/techniques/T1059/008) 来清除命令历史数据(<code>clear logging</code> 和/或 <code>clear history</code>)。(Citation: US-CERT-TA18-106A)在 ESXi 服务器上,命令历史记录可能会从 `/var/log/shell.log` 文件中手动移除。(Citation: Broadcom ESXi Shell Audit) 在 Windows 主机上,PowerShell 有两种不同的命令历史提供程序:内置历史记录和由 <code>PSReadLine</code> 模块管理的命令历史记录。内置历史记录只跟踪当前会话中使用的命令。此命令历史记录对其他会话不可用,并在会话结束时删除。 <code>PSReadLine</code> 命令历史记录跟踪所有 PowerShell 会话中使用的命令,并将其写入一个文件(默认情况下为 <code>$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt</code>)。此历史文件对所有会话可用,并且包含所有过去的历史记录,因为该文件在会话结束时不会被删除。(Citation: Microsoft PowerShell Command History) 攻击者可能运行 PowerShell 命令 <code>Clear-History</code> 以从当前 PowerShell 会话中清除整个命令历史记录。但是,这不会删除/刷写 <code>ConsoleHost_history.txt</code> 文件。攻击者还可能删除 <code>ConsoleHost_history.txt</code> 文件或编辑其内容以隐藏他们运行过的 PowerShell 命令。(Citation: Sophos PowerShell command audit)(Citation: Sophos PowerShell Command History Forensics)
来源归属
来源:MITRE ATT&CK · 置信度:high
平台
- ESXi
- Linux
- macOS
- Network Devices
- Windows
战术
Stealth
参考来源
- https://attack.mitre.org/techniques/T1070/003
- https://knowledge.broadcom.com/external/article/321910/auditing-esxi-shell-logins-and-commands.html
- https://community.sophos.com/products/intercept/early-access-program/f/live-discover-response-queries/121529/live-discover---powershell-command-audit
- https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_history?view=powershell-7
- https://www.us-cert.gov/ncas/alerts/TA18-106A
- https://community.sophos.com/sophos-labs/b/blog/posts/powershell-command-history-forensics