Те из нас, кто регулярно пользуется оболочкой BASH, ценят возможность восстановить историю команд, просто нажимая стрелки вверх и вниз. Это значительно экономит время на переписывание команд. Оболочка BASH ( Bournemouth Shell ) сохраняет историю команд в файле bash_history. В то же время, эта удобная история BASH может оказаться крайне опасной в случае расследования наших действий в системе. Поскольку практически весь взлом осуществляется из командной строки Linux, наши действия можно легко расшифровать и восстановить, извлекая эти команды.
Сохраненная история команд
Прежде чем мы начнём изучать способы заметания следов BASH, нам нужно немного узнать об истории команд. Linux хранит историю команд в скрытом файле ~/.bash_history. Его содержимое можно просмотреть, введя:
кали > больше ~/.bash_history
Точно так же опытный криминалист-эксперт мог бы исследовать нашу историю . Это может быть нехорошо .
Отключение истории
Если мы хотим, чтобы оболочка BASH не сохраняла историю команд, можно установить переменную окружения HISTSIZE в ноль. HISTSIZE определяет количество сохраняемых команд. По умолчанию она равна 500 или 1000.
Мы можем запретить оболочке BASH сохранять наши команды, введя:
кали > экспорт HISTSIZE=0
Теперь оболочка больше не будет сохранять историю команд, но мы потеряем удобство доступа к ним при работе в Linux. Это может увеличить время, необходимое для хакатона, поскольку придётся переписывать каждую команду. Терпеть не могу это делать.
Очистка истории
Вместо того чтобы отключать историю команд, мы можем очистить историю в текущей оболочке BASH, просто используя команду history с ключом -c (очистить).
кали > история -c
Затем, чтобы убедиться, что изменения записаны на диск, нам нужно указать команде history сделать это с помощью ключа -w, например:
кали > история -w
Это очищает историю только текущей оболочки . Команды, выполненные в других оболочках, сохранятся, поэтому нам нужно использовать эту команду в каждой оболочке, чтобы полностью удалить историю команд. Возможно, это не самый удобный способ очистки истории, требующий запоминания и возврата к каждой оболочке, которую мы использовали, для её очистки. Должно быть, это лучший способ.
Очистка полной истории пользователя
Вероятно, более эффективный и удобный способ стереть историю команд — записать /dev/null в файл bash_history , а затем очистить текущую оболочку командой history -c. Мы можем создать команду, которая делает именно это, а затем завершает оболочку. Это можно сделать, введя:
kali > cat /dev/null > ~.bash_history && history -c && выход
Теперь, когда мы посмотрим на историю оболочки или bash_history, мы увидим, что они пусты.
Уничтожая историю
Хотя удаление этих файлов, как мы знаем, — это замечательно, опытный эксперт-криминалист всё равно сможет их восстановить. В BASH есть команда shred , которая делает ровно то, что и подразумевает: уничтожает целевой файл. В этом случае, даже если эксперту-криминалисту удастся найти файл истории, он будет нечитаемым.
kali > shred ~/.bash_history
Здесь мы видим, что, если взглянуть на этот файл, то это просто набор бессмысленных двоичных данных.
Сам факт уничтожения файла может считаться свидетельством вредоносной активности. Даже это можно устранить, комбинируя команду shred с записью /dev/null в bash_history. В этом случае файл истории сначала будет уничтожен, затем очищен, а затем, наконец, будут удалены все следы выполнения команды с помощью команды history -c и выхода.
kali > shred ~/.bash_history && cat /dev/null > .bash_history && history -c && exit
Теперь, когда кто-то попытается просмотреть нашу историю команд, она окажется пустой, а когда кто-то попытается восстановить удалённый файл, то обнаружит только его уничтоженный фрагмент. Успех! Мы не оставили никаких улик и успешно замели следы!
Автоматизация очистки истории команд
Наконец, мы можем автоматизировать этот процесс, чтобы история команд удалялась каждый день. Таким образом, если мы забудем удалить её (а я уверен, что буду делать это часто), система сделает это автоматически в конце дня.
Сначала откройте таблицу crontab в режиме редактирования, введя; .
kali > crontab -e
Используя crontab, мы можем перейти в конец файла и добавить следующую строку.
1 * * * shred ~/.bash_history && cat /dev/null > .bash_history
Эта команда будет выполняться каждое утро в 1:00, сначала уничтожая, а затем стирая bash_history. Обратите внимание, что я не включил команду history -c, так как это внутренняя команда оболочки BASH и не может быть использована в crontab.
Продолжайте в том же духе, мои неопытные хакеры, ведь мы с вами изучаем самый ценный навык XXI века — хакерство!
Сохраненная история команд
Прежде чем мы начнём изучать способы заметания следов BASH, нам нужно немного узнать об истории команд. Linux хранит историю команд в скрытом файле ~/.bash_history. Его содержимое можно просмотреть, введя:
кали > больше ~/.bash_history
Точно так же опытный криминалист-эксперт мог бы исследовать нашу историю . Это может быть нехорошо .
Отключение истории
Если мы хотим, чтобы оболочка BASH не сохраняла историю команд, можно установить переменную окружения HISTSIZE в ноль. HISTSIZE определяет количество сохраняемых команд. По умолчанию она равна 500 или 1000.
Мы можем запретить оболочке BASH сохранять наши команды, введя:
кали > экспорт HISTSIZE=0
Теперь оболочка больше не будет сохранять историю команд, но мы потеряем удобство доступа к ним при работе в Linux. Это может увеличить время, необходимое для хакатона, поскольку придётся переписывать каждую команду. Терпеть не могу это делать.
Очистка истории
Вместо того чтобы отключать историю команд, мы можем очистить историю в текущей оболочке BASH, просто используя команду history с ключом -c (очистить).
кали > история -c
Затем, чтобы убедиться, что изменения записаны на диск, нам нужно указать команде history сделать это с помощью ключа -w, например:
кали > история -w
Это очищает историю только текущей оболочки . Команды, выполненные в других оболочках, сохранятся, поэтому нам нужно использовать эту команду в каждой оболочке, чтобы полностью удалить историю команд. Возможно, это не самый удобный способ очистки истории, требующий запоминания и возврата к каждой оболочке, которую мы использовали, для её очистки. Должно быть, это лучший способ.
Очистка полной истории пользователя
Вероятно, более эффективный и удобный способ стереть историю команд — записать /dev/null в файл bash_history , а затем очистить текущую оболочку командой history -c. Мы можем создать команду, которая делает именно это, а затем завершает оболочку. Это можно сделать, введя:
kali > cat /dev/null > ~.bash_history && history -c && выход
Теперь, когда мы посмотрим на историю оболочки или bash_history, мы увидим, что они пусты.
Уничтожая историю
Хотя удаление этих файлов, как мы знаем, — это замечательно, опытный эксперт-криминалист всё равно сможет их восстановить. В BASH есть команда shred , которая делает ровно то, что и подразумевает: уничтожает целевой файл. В этом случае, даже если эксперту-криминалисту удастся найти файл истории, он будет нечитаемым.
kali > shred ~/.bash_history
Здесь мы видим, что, если взглянуть на этот файл, то это просто набор бессмысленных двоичных данных.
Сам факт уничтожения файла может считаться свидетельством вредоносной активности. Даже это можно устранить, комбинируя команду shred с записью /dev/null в bash_history. В этом случае файл истории сначала будет уничтожен, затем очищен, а затем, наконец, будут удалены все следы выполнения команды с помощью команды history -c и выхода.
kali > shred ~/.bash_history && cat /dev/null > .bash_history && history -c && exit
Теперь, когда кто-то попытается просмотреть нашу историю команд, она окажется пустой, а когда кто-то попытается восстановить удалённый файл, то обнаружит только его уничтоженный фрагмент. Успех! Мы не оставили никаких улик и успешно замели следы!
Автоматизация очистки истории команд
Наконец, мы можем автоматизировать этот процесс, чтобы история команд удалялась каждый день. Таким образом, если мы забудем удалить её (а я уверен, что буду делать это часто), система сделает это автоматически в конце дня.
Сначала откройте таблицу crontab в режиме редактирования, введя; .
kali > crontab -e
Используя crontab, мы можем перейти в конец файла и добавить следующую строку.
1 * * * shred ~/.bash_history && cat /dev/null > .bash_history
Эта команда будет выполняться каждое утро в 1:00, сначала уничтожая, а затем стирая bash_history. Обратите внимание, что я не включил команду history -c, так как это внутренняя команда оболочки BASH и не может быть использована в crontab.
Продолжайте в том же духе, мои неопытные хакеры, ведь мы с вами изучаем самый ценный навык XXI века — хакерство!