Prochunter — ещё одна хорошая утилита для поиска скрытых процессов, запущенных в системе. В рамках данной заметки мы скроем нужный нам процесс от стандартного софта, а затем, обнаружим его с помощью prochunter.
Скрываем процесс в системе.
Начнём с создания скрытого процесса. Прятать его мы будем с помощью специально собранной и подгруженной через ld preloader библиотеки. Всё необходимое забираем с Github репозитория libprocesshider:
# git clone https://github.com/gianlucaborello/libprocesshider
Теперь соберём .so, и настроим его прелоад:
# cd libprocesshider/ # make # mv libprocesshider.so /usr/local/lib/ # echo /usr/local/lib/libprocesshider.so >> /etc/ld.so.preload
Перед сборкой, в processhider.c мы можем указать имя процесса, который будет скрыт:
static const char* process_to_filter = "evil_script.py";
Далее нам просто остаётся запустить потенциально проблемный скрипт evil_script.py (так же есть в репозитории):
# ./evil_script.py 1.2.3.4 567 Sending burst to 1.2.3.4:567
И убедиться, что с помощью lsof, например, либо c помощью ps, запущенный процесс не виден.
Поиск процесса с prochunter.
Забираем prochunter с помощью git и собираем модуль. При этом, в системе должны быть установлены -devel пакет для ядра, python 3, его pip, его же -devel пакет, и модуль (ставим с помощью pip3) psutil.
# git clone https://gitlab.com/nowayout/prochunter.git # cd prochunter/ # make
В некоторых случаях (у меня на CentOS 7 так вышло), перед сборкой необходимо из prochunter.c удалить вот этот инклуд:
#include <linux/sched/signal.h>
Итак, у нас уже запущен скрытый процесс, проверим, обнаружит ли его prochunter. Запускаем скрипт:
# ./prochunter.py -r
И видим, что скрытый процесс был обнаружен.
# ./prochunter.py --ps | grep evil 24528 evil_script.py
К слову, утилита unhide, которую мы рассматривали ранее, так же обнаружила созданный скрытый процесс: