Обнаружение reverse shell на Linux
После получения начального выполнения кода на цели первая задача атакующего — установить устойчивый интерактивный доступ. Самый распространённый метод — reverse shell: техника, при которой скомпрометированный хост сам инициирует исходящее соединение к атакующему, предоставляя удалённую командную строку.
Как работает reverse shell
Механика проста:
- атакующий запускает listener на своей машине;
- payload на жертве запускает shell-процесс (
bash,sh,zshи т.д.); - стандартный ввод и вывод shell перенаправляются через сетевой сокет к listener атакующего;
- атакующий получает интерактивный доступ к командной строке жертвы.
Типичные однострочники используют bash -i >& /dev/tcp/..., nc, python, perl или socat. Ключевой паттерн всегда одинаков: shell-процесс устанавливает исходящее сетевое соединение на нелокальный адрес.
Почему reverse shell сложно обнаружить
- Используются легитимные системные утилиты — нет вредоносного кода для сканирования.
- Исходящие соединения на стандартные порты (80, 443) сливаются с нормальным трафиком.
- Шифрованные каналы (
socatс TLS, SSH-туннели) обходят инспекцию payload. - Традиционные IDS/IPS, ориентированные на входящие соединения, не видят исходящую инициацию.
Детекция только на уровне сети недостаточна. Нужна видимость на уровне хоста, которая сопоставляет идентичность процесса с сетевой активностью.
Как SecureExec обнаруживает reverse shell
Встроенное правило reverse_shell работает на уровне ядра:
- Linux eBPF-агент перехватывает каждый исходящий вызов
connect()вместе с именем процесса; - на сервере правило проверяет, является ли подключающийся процесс известным shell (
bash,sh,zsh,dash,ksh,csh,fish,ash); - loopback-соединения (127.0.0.0/8, ::1) исключаются для снижения шума;
- любое соединение shell → внешний IP немедленно генерирует алерт с приоритетом
critical.
Без сигнатур, без баз паттернов — детекция основана на поведенческом инварианте: shell-процессы не должны устанавливать исходящие сетевые соединения в нормальном режиме работы.
Что даёт алерт
При срабатывании алерта reverse shell SecureExec фиксирует:
- имя процесса и PID shell;
- IP-адрес и порт назначения;
- родительский процесс, породивший shell;
- полную цепочку процессов через дерево процессов;
- все коррелированные события в Elasticsearch для расследования.
Аналитик сразу видит, какой процесс скомпрометирован, кто его запустил и куда он подключается — достаточно для немедленного начала реагирования.
Реагируйте на reverse shell до того, как ущерб вырастет
Reverse shell — критический индикатор пост-эксплуатации. Каждая секунда необнаруженного доступа увеличивает радиус поражения.
Попробуйте SecureExec, чтобы детектировать reverse shell в реальном времени с видимостью на уровне процессов на ваших Linux-серверах.