Кейлоггер для терминала Linux с помощью Shelljack
Вся информация предоставлена только в ознакомительных и обучающих безопасности целях, используйте её на свой страх и риск. Мы не несем никакой ответственности за ваши действия.
Shelljack — это утилита, которая работает в пространстве пользователя и с помощью ptrace снифает терминал и позволяет пересылать куда‑нибудь полученные данные. Этакий кейлоггер, который умеет захватывать ввод в терминале.
Кейлоггер для терминала Linux с помощью Shelljack
Применение такому инструменту есть не только в целевых атаках, но и в мирной повседневной жизни. Допустим, вы вынуждены предоставить кому‑то доступ к оболочке на сервере, который вы администрируете. Но как проконтролировать происходящее там?
Можно просто запустить Shelljack и настроить его пересылать себе все, что творится в терминале, в реальном времени, и, если что‑то идет не так, вы сразу узнаете, что именно сделал пользователь, и сможете вовремя дропнуть сессию.
Обычно подобные защитные приколы реализуют с помощью функций аудита, политик SELinux или даже специального модуля в ядре, но эта утилита позволяет вообще не лезть в ядро и сделать все в пользовательском пространстве. Вам не потребуется даже root!
Но не думайте, что сможете вот так вот просто следить за любыми пользователями. Мало того, на Ubuntu, начиная с еще допотопной версии 10.10, применен специальный патч, который ограничивает возможности ptrace, и именно в Ubuntu работа этой утилиты все же потребует прав root. Впрочем, если вы админ, то это вряд ли вызовет какие‑то проблемы.
Готового бинарника у Shelljack нет. Для сборки потребуется установить зависимости ptrace_do и ctty, но они тоже собираются без малейших затруднений:
git clone https://github.com/emptymonkey/ptrace_do.git cd ptrace_do make cd .. git clone https://github.com/emptymonkey/ctty.git cd ctty make cd .. git clone https://github.com/emptymonkey/shelljack.git cd shelljack make
После этого достаточно любым способом подсмотреть PID процесса эмулятора терминала, за которым нужно следить. Команда запуска в общем случае такая:
shelljack [-f FILE]|[-n HOSTNAME:PORT]
-fуказывает на файл для хранения логов.-nпозволяет передавать перехваченные данные в реальном времени по сети на указанный IP-адрес и порт.PID— это, соответственно, идентификатор процесса‑жертвы.
