Предотвращение логирования истории команд
Злоумышленники могут препятствовать логированию истории команд, чтобы скрыть команды, которые они выполняют в скомпрометированной системе. Различные командные интерпретаторы отслеживают команды, которые пользователи вводят в свой терминал, чтобы пользователи могли отследить, что они сделали. В Linux и macOS история команд отслеживается в файле, на который указывает переменная среды `HISTFILE`. Когда пользователь выходит из системы, эта информация сбрасывается в файл в домашнем каталоге пользователя с именем `~/.bash_history`. Переменная среды `HISTCONTROL` отслеживает, что должно быть сохранено командой history и, в конечном итоге, в файл `~/.bash_history`, когда пользователь выходит из системы. `HISTCONTROL` по умолчанию не существует в macOS, но может быть установлен пользователем и будет соблюдаться. Переменная среды `HISTFILE` также используется в некоторых системах ESXi. Злоумышленники могут очистить переменную среды истории (`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`. Злоумышленники также могут использовать интерфейс командной строки сетевого устройства (Network Device CLI) на сетевых устройствах для отключения логирования исторических команд (например, `no logging`).