Мы можем использовать руткиты в системах Linux, чтобы скрыть наши процессы из дерева , с целью избежать обнаружения системными администраторами или аналитиками безопасности.
Это может быть очень полезно во время работы “Red Team” на объектах Linux, прежде всего потому, что подозрительные процессы могут быть легко идентифицированы в дереве процессов и, соответственно, “убиты” командой “Blue Team” или аналитиками безопасности.
Мы можем достичь этого с помощью различных руткитов Linux, однако мы также хотим избежать установки продвинутых руткитов, которые могут быть обнаружены средствами проверки Linux или АВ-сканерами.
По этой причине мы будем использовать утилиту Linux с открытым исходным кодом под названием Libprocesshider, которая позволит нам скрыть процесс на объекте Linux, используя предзагрузчик ld.
Предварительные условия и требования
Для того чтобы следовать инструментам и методам, используемым в этом документе, вам необходимо использовать один из следующих дистрибутивов Linux:
- Kali Linux
- Parrot OS
🐉 Kali Linux или Parrot OS – сравнение, в чем разница ?
Ниже приведен список рекомендуемых технических предпосылок, которые вам понадобятся для того, чтобы получить максимальную пользу от этого курса:
- Знакомство с системным администрированием Linux.
- Знакомство с Windows.
- Функциональные знания TCP/IP.
- Знакомство с концепциями и жизненным циклом тестирования на проникновение.
Примечание: Методы и инструменты, используемые в данном документе, были выполнены на виртуальной машине Kali Linux 2021.2.
Скрытие процессов Linux с помощью Libprocesshider
Репозиторий GitHub: https://github.com/gianlucaborello/libprocesshider
Первым шагом в этом процессе будет клонирование репозитория Librpocesshider GitHub на целевую систему.
Это можно сделать, выполнив следующую команду:
После клонирования хранилища вам нужно будет определить имя процесса, который вы хотите скрыть с помощью Librpocesshider, это можно сделать, перечислив запущенные процессы в системе
В моем случае я использовал grep чтобы не искать в выводе:
Для того чтобы скрыть процесс “shell.py” из дерева процессов, нам нужно перейти в каталог Librpocesshider, который мы только что клонировали, и изменить файл “processhider.c”.
Это можно сделать, выполнив следующую команду:
Затем вам нужно будет изменить значение “process_to_filter” на имя процесса, который вы хотите скрыть, как показано на скриншоте ниже.
В данном случае мы будем скрывать все вхождения процесса “shell.py” из дерева процессов.
После внесения изменений вы можете сохранить файл.
Следующим шагом будет компиляция файла “processhider.c” в файл разделяемых объектов, это можно сделать, выполнив следующую команду:
В результате компиляции будет создан файл разделяемых объектов под названием “libprocesshider.so”, как показано на следующем снимке экрана.
Нам нужно перенести этот файл общих объектов в каталог /usr/local/lib, это можно сделать, выполнив следующую команду:
Затем нам нужно загрузить общий объект “libprocesshider.so” и это можно сделать, выполнив следующую команду:
Теперь мы можем подтвердить, что процесс “shell.py” скрыт в дереве процессов, выполнив скрипт и выведя список запущенных процессов.
¯\_(ツ)_/¯
Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.
см. также:
- 🕵️♂️ Как создать обратный шелл
- 🕵️ ConPtyShell – полностью интерактивный обратный шелл для Windows
- 🕵️♂️ Шпаргалка по обратным шеллам
- 🕵️ Обход ограничений на загрузку файлов в веб-приложениях, чтобы открыть шелл
- Как получить root шелл на веб-сервере (Backdoor Image)
- 🖧 Почему сайты сканируют мои порты?
- Как использовать reverse shell в Metasploit
- 🕵️ Как читать данные из сокета на Bash