Продолжим знакомство с техниками сокрытия процессов - пример можно найти в отчете, а описание метода тут
👨💻 Атакующие могут спрятать вредоносный процесс, выполнив bind монтирование:
mount --bind /proc/<легитимный_PID> /proc/<вредоносный_PID>
После этого
ps, ls /proc и другие утилиты не будут показывать вредоносный процессДавайте запустим вредоносный процесс
ping localhost
root 8765 0.1 0.4 14408 8604 ? Ss 18:20 0:00 \_ sshd: root@pts/2
root 8771 0.5 0.3 13364 7204 pts/2 Ss 18:20 0:00 \_ -zsh
root 8963 0.0 0.1 7340 2532 pts/2 SN 18:21 0:00 \_ ping localhost
Его PID -
8963Создадим директорию
/tmp/hidden и примонтируем ее в /proc/8963
mount --bind /tmp/hidden /proc/8963
В результате выполнения
ps -auxfww мы не увидим PID нашего процесса
root 8765 0.0 0.4 14408 8704 ? Ss 18:20 0:00 \_ sshd: root@pts/2
root 8771 0.5 0.3 13708 7792 pts/2 Ss 18:20 0:01 \_ -zsh
root 9159 0.0 0.1 9908 3240 pts/2 R+ 18:24 0:00 \_ ps -auxfww
🔭 Для обнаружения:
🔤 можем проверить вывод
mount | grep /proc
/dev/vda1 on /proc/8963 type ext4 (rw,relatime,errors=remount-ro)
🔤 еще одним тригером может быть отсутствие структуры директорий
/proc/PID. В моем случае директория пустая Можем ли мы смонтировать структуру другого процесса, например
dockerd? 🧐Проверим что, там действительно
dockerd #
readlink /proc/469/exe
/usr/bin/dockerd
Выполним монтирование
mount --bind /proc/469 /proc/8963
Проверим вывод
ps -auxfww
root 469 0.0 3.8 1897816 76868 ? Ssl Oct22 3:34 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 469 0.0 3.8 1897816 76868 ? Ssl Oct22 3:34 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Теперь у нас два процесса с одинаковым
PID - 469🔤 можем использовать для охоты наличие одинаковых
PID, но в выводе mount следы также остаются#dfir@detectioneasy
#ttp@detectioneasy