#persistence #linux #watchdog #part_1
🔵 В
статье NCC Group, посвященной RCE-уязвимости CVE-2020-8260 в шлюзах Pulse Connect Secure, я наткнулся на описанный автором способ закрепления в системе — сторожевой таймер (watchdog). Мне сразу стало интересно рассмотреть его подробнее, о чём дальше и пойдёт речь.
🔵 watchdog — механизм, предназначенный для автоматического восстановления системы в случае сбоев. Он отслеживает активность системы и инициирует её перезагрузку, если не получает подтверждения о работоспособности в течение заданного времени.
Представим, что атакующие смогли получить доступ к Linux-серверу, повысили свои привилегии до уровня root, а затем закрепились на системе с помощью watchdog.
Однако есть нюанс: устройство может быть перезагружено, что нежелательно для продолжения атаки. Тем не менее, существует способ предотвратить перезагрузку, который дальше будет учтён в реализации закрепления.
🔴 Перейдём к самой реализации, которую рассмотрим на примере дистрибутива на основе Debian.
Нам необходимо:
1️⃣🔤установить watchdog, если он отсутствует на системе:
apt install watchdog -y
2️
⃣🔤в конфигурационном файле /etc/watchdog.conf добавить, например, следующие строки:
test-binary = /home/configure
interval = 120
watchdog-timeout = 150
*️⃣test-binary — проверочный исполняемый файл/скрипт /home/configure, запускаемый watchdog. Если он вернёт ненулевое значение, то при следующей проверки системы (с частотой, указанной в параметре interval) будет инициирована её перезагрузка. В данном случае также должен быть установлен параметр retry-timeout в значение 0.
*️⃣interval — каждые 120 секунд watchdog выполняет проверку, запуская /home/configure.
*️⃣watchdog-timeout — если система не отвечает дольше 150 секунд (например, из-за зависания системы), то watchdog будет считать, что система находится в неисправном состоянии и перезагрузит её.
3️⃣🔤прописать в файле /etc/default/watchdog строку:
watchdog_options="--no-action"
*️⃣Д
анный аргумент предотвращает перезагрузку системы.
4️⃣🔤настроить службу watchdog для автозапуска при старте системы и запустить её:
systemctl enable watchdog
systemctl start watchdog
🔵 В следующих постах рассмотрим, какие правила детектирования можно реализовать и на что обращать внимание в триаже, собранном с Linux-системы, для идентификации использования watchdog.