Представь: ты только что получил доступ к Linux-системе. Шелл ограниченный, sudo нет, утащить свои бинари негде. Казалось бы, тупик. Но на сервере лежит обычный find. Или vim. Или даже безобидный less. И через тридцать секунд у тебя уже root — причём с помощью утилит, которые любой админ установил бы сам, не задумываясь.
Именно эту тёмную сторону повседневных Unix-команд каталогизирует GTFOBins — справочник, без которого сегодня не обходится ни один серьёзный пентест.
Что это вообще такое
Аббревиатура расшифровывается как Get The F*** Out Binaries — буквально «бинарники, помогающие выбраться». На сайте gtfobins.org собраны несколько сотен стандартных Unix-исполняемых файлов с описанием того, как легитимная функциональность каждого из них может быть использована не по назначению. Не уязвимости. Не баги. Именно фичи — ровно те, ради которых эти утилиты и пишут.
Проект был запущен в 2018 году исследователями Эмилио Пинной и Андреа Кардачи и с тех пор вырос в community-driven базу с десятками контрибьюторов. Технически сайт сделан как статический Jekyll-блог на GitHub Pages: каждая запись — это YAML-файл с примерами, рендерящийся в аккуратные карточки с тегами. Всё открыто, всё на гитхабе, любой желающий может прислать PR с новым трюком.
Почему обычная команда становится оружием
Главная идея, которую нужно ухватить: GTFOBins — это не про эксплойты, это про дизайн. Программы вроде awk, vi или find изначально проектировались как мощные универсальные инструменты. Они умеют запускать подпроцессы, читать произвольные файлы, писать куда угодно — потому что это часть их полезной функциональности.
Проблема возникает там, где такая утилита оказывается в неподходящем контексте:
🐚 Внутри restricted shell (rbash, lshell), где запретили выполнять что попало — но забыли про vi, в котором достаточно набрать :!sh
🔐 С установленным битом SUID, дающим запуск от имени владельца файла (часто root) — и тут любой бинарь, способный породить шелл, превращается в локальную привилегию-эскалацию
📁 С sudo NOPASSWD-правилом на конкретную утилиту — например, разрешили человеку sudo /usr/bin/less /var/log/syslog, и не учли, что внутри less можно нажать !sh и получить root-shell
🎩 С определёнными Linux возможностями (capabilities) — скажем, cap_setuid+ep на /usr/bin/python3 превращает интерпретатор в идеальную отмычку через os.setuid(0); os.system('/bin/sh')
Чуть-чуть конкретики
Чтобы стало совсем наглядно, вот несколько любимых классиков из каталога:
⚙️ find . -exec /bin/sh \; -quit — find умеет выполнять команды над найденными файлами, и его никто не обязывает ограничиваться чем-то полезным
⚙️ tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh — да, обычный архиватор поддерживает скрипты на чекпоинтах. Сюрприз!
⚙️ awk 'BEGIN {system("/bin/sh")}' — awk это полноценный язык программирования с функцией system()
⚙️ В vim достаточно :set shell=/bin/sh и потом :shell — и ты уже в обычной интерактивной сессии
Каждая запись на сайте сопровождается тегами: Shell, File read/write, SUID, Sudo, Capabilities, Library load — чтобы сразу было понятно, в каком сценарии что применимо.
Living off the Land — головная боль блютимы
Концепция LOLBin (Living Off the Land Binaries) — это вообще целая философия современных атак. Идея простая: чем меньше посторонних бинарей ты тащишь на машину, тем меньше следов оставляешь. Никаких подозрительных payload'ов, никаких странных загрузок — только то, что и так есть в системе. Антивирус молчит, EDR в недоумении, файловый аудит чист.
Для защитников это серьёзный челлендж. Нельзя просто заблокировать tar или find — без них Linux перестаёт быть Linux. Поэтому детект строится не на сигнатурах, а на поведенческих признаках:
📡 Подозрительные родительские процессы — awk, внезапно породивший bash, это явная аномалия
📡 Цепочки execve, не вписывающиеся в нормальные паттерны воркфлоу приложения
📡 Запуск интерпретаторов из-под веб-сервера или из контекста, где интерактивность вообще не предполагается
📡 Регулярный аудит SUID-битов — find / -perm -4000 в кроне ловит большинство опасных мисконфигов одной командой; для большинства утилит из GTFOBins нет ни одного валидного сценария быть SUID-root
Лично я считаю, что GTFOBins нужно знать обеим сторонам — и нападающим, и защитникам — примерно одинаково хорошо. Это база. Без понимания этих техник любой red team отчёт превращается в чек-лист, а blue team харденинг — в ритуал по копипасту CIS Benchmark без понимания, зачем там та или иная рекомендация.
Соседи по экосистеме
Помимо самого GTFOBins в мире living-off-the-land есть ещё несколько проектов, которые стоит держать в закладках:
🌍 LOLBAS — то же самое, но для Windows. Там герои — certutil, mshta, regsvr32, bitsadmin и прочая радость, через которую заходят настоящие APT-группировки
🌍 GTFOArgs — сиблинг GTFOBins, фокусирующийся на абьюзах через специально подобранные аргументы командной строки (актуально, когда выполнение бинаря фиксированное, а аргументы контролирует атакующий)
🌍 WADComs — интерактивный чит-лист для типичных AD/Windows-сценариев
🌍 HackTricks — гигантская книга-вики Карлоса Поланко с этапами эскалации, где GTFOBins активно цитируется и встроен в общий пайплайн pwn'а
Куда это всё движется
Что лично меня цепляет — так это то, что GTFOBins не устаревает. Он не про конкретный CVE, который пофиксят в следующем апдейте и забудут. Он про фундаментальную природу Unix: мощные универсальные утилиты, доверие админа к стандартным компонентам системы, многослойность прав доступа. Пока существует POSIX, существует и эта проблема.
С другой стороны, индустрия не стоит на месте. eBPF-сенсоры вроде Falco и Tetragon ловят аномальные execve в реальном времени, mandatory access control (AppArmor, SELinux) при правильной настройке отрезает ножки большинству GTFO-трюков, а контейнерные рантаймы по умолчанию режут ненужные капабилити. Гонка щита и меча, как всегда — но именно благодаря каталогам вроде GTFOBins у защитников есть карта поля боя.
И небольшой совет тем, кто учится: подними виртуалку, накрути restricted shell или раскидай SUID-биты по паре утилит из списка — и попробуй сам выбраться. Пятнадцать минут такого упражнения дают больше понимания, чем час чтения теории.
Источники
🔗 Оригинальный проект: https://gtfobins.org/
🔗 Полная версия статьи: https://telegra.ph/GTFOBins-Kogda-obychnye-komandy-v-Linux-stanovyatsya-oruzhiem-Ili-instrumentom-zashchity-04-28
🔗 LOLBAS — Windows-аналог: https://lolbas-project.github.io/
🔗 GTFOArgs: https://gtfoargs.github.io/
🔗 HackTricks: https://book.hacktricks.xyz/