Shelljack — это утилита, которая работает в пространстве пользователя и с помощью ptrace снифает терминал и позволяет пересылать куда‑нибудь полученные данные. Этакий кейлоггер, который умеет захватывать ввод в терминале.
Еще по теме: Простой кейлоггер на Python
Кейлоггер для терминала Linux с помощью Shelljack
Применение такому инструменту есть не только в целевых атаках, но и в мирной повседневной жизни. Допустим, вы вынуждены предоставить кому‑то доступ к оболочке на сервере, который вы администрируете. Но как проконтролировать происходящее там?
Можно просто запустить Shelljack и настроить его пересылать себе все, что творится в терминале, в реальном времени, и, если что‑то идет не так, вы сразу узнаете, что именно сделал пользователь, и сможете вовремя дропнуть сессию.
Статья в образовательных целях, для обучения пентестеров (этичных хакеров). Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.
Обычно подобные защитные приколы реализуют с помощью функций аудита, политик SELinux или даже специального модуля в ядре, но эта утилита позволяет вообще не лезть в ядро и сделать все в пользовательском пространстве. Вам не потребуется даже root!
Но не думайте, что сможете вот так вот просто следить за любыми пользователями. Мало того, на Ubuntu, начиная с еще допотопной версии 10.10, применен специальный патч, который ограничивает возможности ptrace, и именно в Ubuntu работа этой утилиты все же потребует прав root. Впрочем, если вы админ, то это вряд ли вызовет какие‑то проблемы.
Готового бинарника у Shelljack нет. Для сборки потребуется установить зависимости ptrace_do и ctty, но они тоже собираются без малейших затруднений:
1 2 3 4 5 6 7 8 9 10 11 |
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 процесса эмулятора терминала, за которым нужно следить. Команда запуска в общем случае такая:
1 |
shelljack [-f FILE]|[-n HOSTNAME:PORT] |
- -f указывает на файл для хранения логов.
- -n позволяет передавать перехваченные данные в реальном времени по сети на указанный IP-адрес и порт.
- PID — это, соответственно, идентификатор процесса‑жертвы.
Подробнее см. официальный репозиторий на GitHub.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Как написать кейлоггер на C#
- Обзор лучших мобильных шпионов
- Использование pynput для создания кейлоггера на Python